{"components":{"schemas":{"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"},"notServingSources":{"description":"Sources that belong to this API but are not being called right now: each served until it was withdrawn after failures, and each returns on its own once it passes again. Absent when every source is serving. Never merge these into the list above: the prices here cannot be charged and a failed call is not retried on them.","items":{"$ref":"#/components/schemas/APISourceOffer"},"type":"array"},"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"},"APISourceOffer":{"properties":{"fields":{"description":"The output fields this source returns, so you can see before calling which requireFields combinations one source can serve together. Absent when the set is not known for the source.","items":{"type":"string"},"type":"array"},"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"},"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"},"notServingSources":{"description":"Sources that belong to this API but are not being called right now: each served until it was withdrawn after failures, and each returns on its own once it passes again. Absent when every source is serving. Never merge these into the list above: the prices here cannot be charged and a failed call is not retried on them.","items":{"$ref":"#/components/schemas/APISourceOffer"},"type":"array"},"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"},"AgentUpgrade":{"properties":{"authorizationServer":{"format":"uri","type":"string"},"clientId":{"type":"string"},"device":{"$ref":"#/components/schemas/DeviceUpgrade"},"scope":{"type":"string"}},"required":["authorizationServer","scope"],"type":"object"},"CatalogAPI":{"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/CatalogSourceOffer"},"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"},"notServingSources":{"description":"Sources that belong to this API but are not being called right now: each served until it was withdrawn after failures, and each returns on its own once it passes again. Absent when every source is serving. Never merge these into the list above: the prices here cannot be charged and a failed call is not retried on them.","items":{"$ref":"#/components/schemas/CatalogSourceOffer"},"type":"array"},"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"},"CatalogSearchResult":{"properties":{"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 that the published latency excludes.","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.","type":"boolean"},"highlightFields":{"description":"Output fields of this API that matched the query, with each field's own schema description as `why`. Computed for the top few results only, so an absent array means no highlights were produced rather than no matching field.","items":{"$ref":"#/components/schemas/DiscoveryHighlightField"},"type":"array"},"method":{"description":"HTTP method for this API's concrete operation.","type":"string"},"name":{"description":"Display name.","type":"string"},"path":{"description":"Concrete gateway path for this API.","type":"string"},"platformId":{"description":"The API's platform, accepted back as the `platform` scope.","type":"string"},"pricing":{"allOf":[{"$ref":"#/components/schemas/DiscoveryPricing"}],"description":"Static USD pricing for this API."},"provider":{"const":"AnyAPI","description":"Always \"AnyAPI\".","type":"string"},"relevance":{"description":"How well this API matched, relative to the others in this response.","type":"number"},"slug":{"description":"The API's slug. Feed it to GET /v1/apis/{sku} for the input schema.","type":"string"},"tryMaxItems":{"description":"The most items the free try returns, when this API is try-eligible.","type":"integer"}},"required":["slug","category","name","description","method","path","provider","execution","pricing","failover","platformId","relevance"],"type":"object"},"CatalogSourceOffer":{"properties":{"fields":{"description":"The output fields this source returns, so you can see before calling which requireFields combinations one source can serve together. Absent when the set is not known for the source.","items":{"type":"string"},"type":"array"},"health":{"allOf":[{"$ref":"#/components/schemas/DiscoverySourceHealth"}],"description":"Measured health for this source. Absent when it has too little traffic to publish."},"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"},"DeviceUpgrade":{"properties":{"deviceCode":{"type":"string"},"expiresIn":{"minimum":0,"type":"integer"},"grantType":{"type":"string"},"interval":{"minimum":1,"type":"integer"},"tokenEndpoint":{"format":"uri","type":"string"},"userCode":{"type":"string"},"verificationUri":{"format":"uri","type":"string"},"verificationUriComplete":{"format":"uri","type":"string"}},"required":["verificationUriComplete","verificationUri","userCode","deviceCode","tokenEndpoint","grantType","interval","expiresIn"],"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"},"DiscoveryHighlightField":{"properties":{"path":{"description":"JSON path of the output field inside this API's outputSchema.","type":"string"},"type":{"description":"JSON type of that field.","type":"string"},"why":{"description":"The field's own schema description. Absent when the schema gives none.","type":"string"}},"required":["path","type"],"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"},"DiscoveryOffer":{"properties":{"addons":{"description":"Optional extras this offer sells, absent when it sells none. Each is switched on by a field in the request, so its price is known before the call and never moves. maxUsd bounds the metered charge alone: an extra the caller asked for is billed ON TOP of it, so the most one request can cost is maxUsd plus the extras it switched on.","items":{"properties":{"field":{"description":"The input field that switches it on.","type":"string"},"id":{"description":"Stable identifier for the extra.","type":"string"},"label":{"description":"What the money buys, in the customer's words.","type":"string"},"usd":{"description":"USD added to the request when that field is set.","type":"number"}},"required":["id","label","field","usd"],"type":"object"},"type":"array"},"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"},"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, including every optional extra a source sells.","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"},"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"},"DiscoverySourceHealth":{"properties":{"latencyP50Ms":{"description":"Median successful service time for this source, in milliseconds.","type":"integer"},"latencySample":{"description":"Requests behind latencyP50Ms.","type":"integer"},"requests":{"description":"Requests routed to this source in the window.","type":"integer"},"servedRequests":{"description":"Requests this source served in the window.","type":"integer"},"uptimePct":{"description":"Share of requests this source served successfully, as a percentage.","type":"number"},"uptimeSample":{"description":"Requests behind uptimePct.","type":"integer"},"window":{"const":"30d","description":"The trailing window these measurements cover.","type":"string"}},"required":["window","uptimePct","latencyP50Ms","uptimeSample","latencySample","requests","servedRequests"],"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"},"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"},"PaymentRequiredError":{"allOf":[{"$ref":"#/components/schemas/Error"},{"properties":{"error":{"not":{"const":"trial_cap_reached"}}},"type":"object"}]},"RequestSnapshot":{"properties":{"completedAt":{"format":"date-time","type":"string"},"createdAt":{"format":"date-time","type":"string"},"error":{"properties":{"code":{"type":"string"}},"required":["code"],"type":"object"},"expiresAt":{"format":"date-time","type":"string"},"requestId":{"format":"uuid","type":"string"},"result":{"properties":{"costUsd":{"description":"USD charged on the ORIGINAL run, echoed for envelope parity; this re-read is free.","type":"number"},"items":{"description":"Number of result rows returned by the original run.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"description":"The normalized result (`{found, data}` by default, plus `reason` when `found` is false), re-shaped by any fields/max_items/summary/jq params. Open shape - a jq expression may replace it with an array or scalar."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"False on this cached-result endpoint; true is reserved for durable idempotency replays from POST /v1/run/{sku}.","type":"boolean"},"resultId":{"description":"The id you requested, echoed so you can keep re-reading the same cached result.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"},"resultExpired":{"type":"boolean"},"retryAfterSeconds":{"minimum":1,"type":"integer"},"serviceOutcome":{"description":"End-to-end AnyAPI service result when known; independent of payment settlement.","enum":["served","valid_negative","caller_error","service_failure","rejected"],"type":"string"},"settlementState":{"description":"Payment settlement state when known; independent of request lifecycle status.","enum":["not_required","pending","settled","reconcile","charged_undelivered","writeoff"],"type":"string"},"sku":{"type":"string"},"status":{"enum":["queued","running","succeeded","failed","expired"],"type":"string"}},"required":["requestId","sku","status","createdAt"],"type":"object"},"TrialCapReached":{"properties":{"error":{"const":"trial_cap_reached","type":"string"},"message":{"description":"Human-relayable continuation instructions, including an executable token poll.","type":"string"},"upgrade":{"$ref":"#/components/schemas/AgentUpgrade"}},"required":["error","message","upgrade"],"type":"object"},"company_research_claim":{"description":"The value, provenance, and evidence envelope every research field is wrapped in.","properties":{"evidence":{"description":"Sources that ground the value. Empty when nothing the run read grounds it.","items":{"$ref":"#/components/schemas/company_research_claimEvidence"},"type":"array"},"provenance":{"$ref":"#/components/schemas/company_research_provenance"},"value":true},"required":["value","provenance","evidence"],"type":"object"},"company_research_claimEvidence":{"description":"One public source that grounds a claim.","properties":{"capturedAt":{"description":"RFC 3339 UTC time at which the part that produced this claim ran.","format":"date-time","type":"string"},"excerpt":{"description":"Bounded excerpt of the source text.","type":"string"},"kind":{"$ref":"#/components/schemas/company_research_evidenceKind"},"url":{"description":"Canonical URL of the source.","format":"uri","type":"string"}},"required":["url","excerpt","capturedAt"],"type":"object"},"company_research_community":{"description":"One public place where matching company discussion appeared.","properties":{"name":{"description":"Community name.","type":"string"},"platform":{"description":"Platform hosting the community.","type":"string"},"whyRelevant":{"description":"The discussion that put this community in the result.","type":"string"}},"required":["platform","name","whyRelevant"],"type":"object"},"company_research_communityListClaim":{"allOf":[{"$ref":"#/components/schemas/company_research_claim"}],"properties":{"value":{"items":{"$ref":"#/components/schemas/company_research_community"},"type":"array"}}},"company_research_companyBasics":{"description":"Plain crawl-derived identity values, taken from the pages themselves rather than synthesized.","properties":{"canonicalName":{"description":"Company name derived from the homepage title, or from the domain when no title was read.","type":"string"},"domain":{"description":"Domain the run researched.","type":"string"},"links":{"$ref":"#/components/schemas/company_research_companyLinks"},"socials":{"description":"Social account URLs linked from the crawled pages.","items":{"format":"uri","type":"string"},"type":"array"},"websiteTitle":{"description":"Homepage title exactly as served.","type":"string"}},"required":["domain","canonicalName","websiteTitle","socials","links"],"type":"object"},"company_research_companyLinks":{"description":"Customer-useful first-party pages found in the crawl. A field is an empty string when the crawl linked no such page.","properties":{"blog":{"description":"Blog URL.","type":"string"},"careers":{"description":"Careers or jobs page URL.","type":"string"},"contact":{"description":"Contact page URL.","type":"string"},"docs":{"description":"Documentation URL.","type":"string"},"pricing":{"description":"Pricing or plans page URL.","type":"string"}},"required":["careers","pricing","blog","docs","contact"],"type":"object"},"company_research_competitorListClaim":{"allOf":[{"$ref":"#/components/schemas/company_research_claim"}],"properties":{"value":{"items":{"$ref":"#/components/schemas/company_research_competitorProfile"},"type":"array"}}},"company_research_competitorProfile":{"description":"One admitted competitor.","properties":{"domain":{"description":"Competitor domain.","type":"string"},"evidence":{"description":"Pages that ground this competitor. Empty when the run admitted it without reading its own page.","items":{"$ref":"#/components/schemas/company_research_claimEvidence"},"type":"array"},"name":{"description":"Competitor name, or its domain when no page title was read.","type":"string"},"positioning":{"description":"Why the run classified it that way.","type":"string"},"relationship":{"description":"How the run classified this company against the researched one.","enum":["competitor","adjacent","not_competitor","unknown"],"type":"string"}},"required":["name","domain","relationship","positioning","evidence"],"type":"object"},"company_research_crawlCorpus":{"description":"The reusable homepage and interior-page reads the crawl-derived parts share.","properties":{"homepage":{"description":"The company homepage, or null when the run could not read it.","oneOf":[{"type":"null"},{"$ref":"#/components/schemas/company_research_crawlPage"}]},"interiorPages":{"description":"Interior pages the run paid to read.","items":{"$ref":"#/components/schemas/company_research_crawlPage"},"type":"array"}},"required":["homepage","interiorPages"],"type":"object"},"company_research_crawlPage":{"description":"One clipped first-party page read, retained so dependent parts do not re-buy it.","properties":{"description":{"description":"Page meta description.","type":"string"},"links":{"$ref":"#/components/schemas/company_research_pageLinks"},"markdown":{"description":"Clipped page text in markdown.","type":"string"},"title":{"description":"Page title.","type":"string"},"url":{"description":"Page URL as read.","format":"uri","type":"string"}},"required":["url","title","description","markdown","links"],"type":"object"},"company_research_evidenceKind":{"description":"Source class of the evidence row: the company homepage, an interior page of its site, a search result, a competitor's own page, or a catalog provider record.","enum":["homepage","site","search","competitor","provider"],"type":"string"},"company_research_fundingClaim":{"allOf":[{"$ref":"#/components/schemas/company_research_claim"}],"properties":{"value":{"$ref":"#/components/schemas/company_research_fundingSummary"}}},"company_research_fundingSummary":{"description":"Normalized public funding record. An all-zero record means no provider disclosed funding.","properties":{"latestFundingUtc":{"description":"UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds.","type":"number"},"latestStage":{"description":"Latest disclosed funding stage.","type":"string"},"rounds":{"description":"Number of disclosed funding rounds.","type":"integer"},"totalUsd":{"description":"Total disclosed funding in USD.","type":"number"}},"required":["totalUsd","latestStage","latestFundingUtc","rounds"],"type":"object"},"company_research_icpListClaim":{"allOf":[{"$ref":"#/components/schemas/company_research_claim"}],"properties":{"value":{"items":{"$ref":"#/components/schemas/company_research_icpProfile"},"type":"array"}}},"company_research_icpProfile":{"description":"One buyer segment synthesized from the crawl.","properties":{"buyingTrigger":{"description":"What makes that segment start looking.","type":"string"},"companyType":{"description":"The kind of company that role works at.","type":"string"},"pains":{"description":"Pains that segment feels.","items":{"type":"string"},"type":"array"},"persona":{"description":"The buying role.","type":"string"}},"required":["persona","companyType","pains","buyingTrigger"],"type":"object"},"company_research_integerClaim":{"allOf":[{"$ref":"#/components/schemas/company_research_claim"}],"description":"A claim whose value is a whole number. 0 means no provider supplied one.","properties":{"value":{"type":"integer"}}},"company_research_keyPerson":{"description":"One leadership record, masked for customer output.","properties":{"firstName":{"description":"First name.","type":"string"},"lastNameInitial":{"description":"Upper-case initial of the last name.","type":"string"},"title":{"description":"Job title.","type":"string"}},"required":["title","firstName","lastNameInitial"],"type":"object"},"company_research_keyPersonListClaim":{"allOf":[{"$ref":"#/components/schemas/company_research_claim"}],"properties":{"value":{"items":{"$ref":"#/components/schemas/company_research_keyPerson"},"type":"array"}}},"company_research_newsArticle":{"description":"One recent company story.","properties":{"matchConfidence":{"description":"1 when the article's domain or organization ids join to the researched company, 0 when nothing joined.","maximum":1,"minimum":0,"type":"number"},"publishedUtc":{"description":"UTC epoch timestamp in seconds (Unix time) at which the article was published. Multiply by 1000 for a JS Date in milliseconds.","type":"number"},"storyId":{"description":"Stable identity used to deduplicate the story.","type":"string"},"title":{"description":"Article title.","type":"string"},"type":{"description":"Story class derived from the provider's event categories.","enum":["editorial","press_release","regulatory_filing"],"type":"string"},"url":{"description":"Article URL.","format":"uri","type":"string"}},"required":["url","title","publishedUtc","type","matchConfidence","storyId"],"type":"object"},"company_research_newsArticleListClaim":{"allOf":[{"$ref":"#/components/schemas/company_research_claim"}],"properties":{"value":{"items":{"$ref":"#/components/schemas/company_research_newsArticle"},"type":"array"}}},"company_research_openRole":{"description":"One current company job posting.","properties":{"location":{"description":"City, state, and country joined with commas.","type":"string"},"postedUtc":{"description":"UTC epoch timestamp in seconds (Unix time) at which the role was posted. Multiply by 1000 for a JS Date in milliseconds.","type":"number"},"title":{"description":"Role title.","type":"string"},"url":{"description":"Posting URL.","format":"uri","type":"string"}},"required":["title","location","url","postedUtc"],"type":"object"},"company_research_openRoleListClaim":{"allOf":[{"$ref":"#/components/schemas/company_research_claim"}],"properties":{"value":{"items":{"$ref":"#/components/schemas/company_research_openRole"},"type":"array"}}},"company_research_pageLinks":{"description":"One page's outbound links, classified before the markdown was clipped.","properties":{"site":{"$ref":"#/components/schemas/company_research_companyLinks"},"socials":{"description":"Social accounts linked from this page.","items":{"$ref":"#/components/schemas/company_research_socialHandle"},"type":"array"}},"required":["socials","site"],"type":"object"},"company_research_platformPresence":{"description":"Everything the company runs on one platform. There is exactly one primary because the field is not a list, and secondary holds any number.","properties":{"platform":{"description":"Platform name.","type":"string"},"primary":{"$ref":"#/components/schemas/company_research_socialAccount"},"secondary":{"description":"Further accounts the company runs on the same platform, such as regional ones.","items":{"$ref":"#/components/schemas/company_research_socialAccount"},"type":"array"}},"required":["platform","primary","secondary"],"type":"object"},"company_research_platformPresenceListClaim":{"allOf":[{"$ref":"#/components/schemas/company_research_claim"}],"properties":{"value":{"items":{"$ref":"#/components/schemas/company_research_platformPresence"},"type":"array"}}},"company_research_provenance":{"description":"verified means the run read a page cited by this claim. inferred means no page the run read grounds it.","enum":["verified","inferred"],"type":"string"},"company_research_socialAccount":{"description":"One published company account. The audience fields come from a paid read of the account itself and are absent when the run did not buy one, so a missing follower count is not zero.","properties":{"displayName":{"description":"Account display name.","type":"string"},"followers":{"description":"Follower count at the time of the read.","type":"integer"},"handle":{"description":"Account handle.","type":"string"},"url":{"description":"Account URL.","format":"uri","type":"string"},"verified":{"description":"Whether the platform marks the account verified.","type":"boolean"}},"required":["handle","url"],"type":"object"},"company_research_socialHandle":{"description":"One account as a link scan sees it. It carries no audience, because a link on a page proves an account exists and says nothing about how big it is.","properties":{"handle":{"description":"Account handle on that platform.","type":"string"},"platform":{"description":"Platform the account belongs to.","type":"string"},"url":{"description":"Account URL.","format":"uri","type":"string"}},"required":["platform","handle","url"],"type":"object"},"company_research_stringClaim":{"allOf":[{"$ref":"#/components/schemas/company_research_claim"}],"description":"A claim whose value is text. An empty string means the run found no supported answer.","properties":{"value":{"type":"string"}}},"company_research_stringListClaim":{"allOf":[{"$ref":"#/components/schemas/company_research_claim"}],"description":"A claim whose value is a list of strings.","properties":{"value":{"items":{"type":"string"},"type":"array"}}}},"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"}}},"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":"AnyAPI","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."},"openapi":"3.1.0","paths":{"/catalog":{"get":{"description":"Every API AnyAPI can serve right now, with its normalized input and output contract's location, its USD pricing, and the sources behind it. Reading the catalog is free and needs no key. Each entry's `method` and `path` are the gateway's own authority on how to call it: use them rather than rebuilding a route from the slug. Schemas are omitted here to keep the response small; GET /v1/apis/{sku} returns them for one API.","operationId":"browseCatalog","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/CatalogAPI"},"type":"array"}},"required":["apis"],"type":"object"}}},"description":"The customer-safe catalog."}},"security":[],"summary":"Browse the API catalog"}},"/catalog/search":{"get":{"description":"Find an API by what you need rather than by its slug. Results are ranked, and `ranking` names the ranker that served them. A request must name `q`, `category`, or `platform`: a scope on its own is a complete question (\"everything this platform can do\"), while a request naming none of the three has nothing to answer and is rejected. Searching is free and needs no key. Feed a result's `slug` to GET /v1/apis/{sku} for its input schema before your first run.","operationId":"searchCatalog","parameters":[{"description":"What you need, in your own words. Long queries are truncated before ranking.","in":"query","name":"q","required":false,"schema":{"type":"string"}},{"description":"Restrict the response to one category, using an entry's `category`.","in":"query","name":"category","required":false,"schema":{"type":"string"}},{"description":"Restrict results to one platform, using a result's `platformId`.","in":"query","name":"platform","required":false,"schema":{"type":"string"}},{"description":"Maximum results in this response. Omit it for the ranked default. A value above the server's maximum is reduced to it rather than rejected, and `total` still reports how many matched.","in":"query","name":"limit","required":false,"schema":{"minimum":1,"type":"integer"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"ranking":{"description":"Which ranker served this response.","enum":["keyword","semantic"],"type":"string"},"results":{"items":{"$ref":"#/components/schemas/CatalogSearchResult"},"type":"array"},"total":{"description":"Matches found before `limit` was applied.","type":"integer"}},"required":["results","total","ranking"],"type":"object"}}},"description":"Ranked matches."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request named neither a query nor a scope."}},"security":[],"summary":"Search the API catalog"}},"/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"}},"/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"}},"/v1/balance":{"get":{"description":"Remaining USD in the wallet behind your API key. Reading the balance is free. The amount is what is left to spend across all APIs, not a per-request price: compare it against an operation's own USD cost before you run one.","operationId":"getBalance","responses":{"200":{"content":{"application/json":{"schema":{"properties":{"usd":{"description":"Remaining wallet balance in USD.","type":"number"}},"required":["usd"],"type":"object"}}},"description":"Current wallet balance."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."}},"summary":"Get your wallet balance"}},"/v1/requests/{id}":{"get":{"description":"Inspect a customer-owned Request. Poll queued or running requests after retryAfterSeconds. Successful output is retained for 24 hours; metadata remains after the result expires.","operationId":"getRequest","parameters":[{"in":"path","name":"id","required":true,"schema":{"format":"uuid","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RequestSnapshot"}}},"description":"Current request snapshot."},"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 request id, or a request owned by another customer."}},"summary":"Get a request"}},"/v1/results/{id}":{"get":{"description":"Re-read the full unshaped result of a prior run from its short-lived cache and re-shape it with the same `fields`, `max_items`, `summary`, and `jq` query params as /v1/run, all for FREE (no re-billing). Results are scoped to the customer that paid for them and cached for about 15 minutes. Use this to read the rest of, or reshape, a paid result instead of re-running and paying again.","operationId":"getResult","parameters":[{"description":"The `resultId` returned on a prior run response envelope.","in":"path","name":"id","required":true,"schema":{"type":"string"}},{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the ORIGINAL run, echoed for envelope parity; this re-read is free.","type":"number"},"items":{"description":"Number of result rows returned by the original run.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"description":"The normalized result (`{found, data}` by default, plus `reason` when `found` is false), re-shaped by any fields/max_items/summary/jq params. Open shape - a jq expression may replace it with an array or scalar."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"False on this cached-result endpoint; true is reserved for durable idempotency replays from POST /v1/run/{sku}.","type":"boolean"},"resultId":{"description":"The id you requested, echoed so you can keep re-reading the same cached result.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"The re-shaped result envelope (same shape as a run response)."},"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 or expired result id (results are cached about 15 minutes); re-run the API for fresh data."}},"summary":"Re-read a cached result for free"}},"/v1/run/ahrefs.backlinks":{"post":{"description":"Get the referring pages linking to a domain or URL, each with the source page, anchor text, linking domain rating, and page title.\n\n**Price:** billed per result - \\$5.01 per 1,000 requests base + \\$0.00 per 1,000 results, capped at \\$5.01 per 1,000 requests.\n\n**Routing:** one lane serves this API today, so a failed attempt has nowhere to fail over to. Payment outcome follows the selected rail's settlement policy.\n\n**Catalog:** [Ahrefs Backlinks pricing and uptime](https://getanyapi.com/api/ahrefs/backlinks) - live USD price, lane routing, and measured 30-day uptime. [Every Ahrefs endpoint](https://getanyapi.com/api/ahrefs).","operationId":"ahrefs_backlinks","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"mode":"exact","url":"ahrefs.com"},"schema":{"additionalProperties":false,"example":{"mode":"exact","url":"ahrefs.com"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"mode":{"default":"subdomains","description":"Match scope: \"exact\" for the given URL only, or \"subdomains\" to include the domain and its subdomains.","enum":["exact","subdomains"],"type":"string"},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"url":{"description":"The domain or page URL to find backlinks for (e.g. \"ahrefs.com\").","type":"string"}},"required":["url"],"title":"Ahrefs backlinks input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"oneOf":[{"type":"null"},{"additionalProperties":false,"properties":{"items":{"description":"Referring pages that link to the domain or URL. Populated whenever the provider has data for the entity.","items":{"properties":{"anchor":{"description":"Anchor text of the link.","type":"string"},"contextAfter":{"description":"Text immediately after the anchor on the referring page.","type":"string"},"contextBefore":{"description":"Text immediately before the anchor on the referring page.","type":"string"},"domainRating":{"description":"Ahrefs Domain Rating (0-100) of the linking domain.","type":"number"},"title":{"description":"Title of the referring page.","type":"string"},"urlFrom":{"description":"URL of the referring page that contains the link. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"urlTo":{"description":"Target URL the link points to.","type":"string"}},"required":["urlFrom"],"type":"object"},"type":"array","x-anyapi-must-populate":true}},"required":["items"],"type":"object"}]},"found":{"type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"Ahrefs backlinks output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"Ahrefs Backlinks","tags":["ahrefs"],"x-mint":{"href":"/api-reference/ahrefs/backlinks"},"x-payment-info":{"price":{"currency":"USD","max":"0.005010","min":"0.005010","mode":"dynamic"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"currency":"USD","max":"0.005010","min":"0.005010","minimumUsd":"0.001000","mode":"dynamic","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"currency":"USD","max":"0.005010","min":"0.005010","minimumUsd":null,"mode":"dynamic","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/ahrefs.keyword_ideas":{"post":{"description":"Get related keyword suggestions for any seed term, each with an Ahrefs difficulty and search-volume bucket.\n\n**Price:** billed per result - \\$0.06 per 1,000 requests base + \\$4.95 per 1,000 results, capped at \\$5.01 per 1,000 requests.\n\n**Routing:** one lane serves this API today, so a failed attempt has nowhere to fail over to. Payment outcome follows the selected rail's settlement policy.\n\n**Catalog:** [Ahrefs Keyword Ideas pricing and uptime](https://getanyapi.com/api/ahrefs/keyword-ideas) - live USD price, lane routing, and measured 30-day uptime. [Every Ahrefs endpoint](https://getanyapi.com/api/ahrefs).","operationId":"ahrefs_keyword_ideas","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"country":"us","keyword":"coffee"},"schema":{"additionalProperties":false,"example":{"country":"us","keyword":"coffee"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"country":{"default":"us","description":"Two-letter country code that scopes the suggestions (e.g. us, gb, de).","type":"string"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"keyword":{"description":"The seed keyword to expand into related suggestions (e.g. \"coffee\").","type":"string"},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true}},"required":["keyword"],"title":"Ahrefs keyword ideas input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"oneOf":[{"type":"null"},{"additionalProperties":false,"properties":{"items":{"description":"Keyword-idea records: the seed keyword and its related keyword suggestions, each with an Ahrefs difficulty and search-volume bucket. Populated whenever the provider has data for the entity.","items":{"properties":{"country":{"description":"Two-letter country code the suggestions are scoped to.","type":"string"},"ideas":{"description":"Related keyword suggestions for the seed term. Populated whenever the provider has data for the entity.","items":{"properties":{"difficulty":{"description":"Relative Ahrefs difficulty bucket (a letter such as E, M, or H), not an exact number.","type":"string"},"keyword":{"description":"The suggested related keyword. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"updatedAt":{"description":"Timestamp the suggestion metrics were last updated.","type":"string"},"volume":{"description":"Relative search-volume bucket (a letter grade), not an exact number.","type":"string"}},"required":["keyword"],"type":"object"},"type":"array","x-anyapi-must-populate":true},"questions":{"description":"Question-shaped keyword suggestions for the seed term.","items":{"properties":{"difficulty":{"description":"Relative Ahrefs difficulty bucket (a letter such as E, M, or H), not an exact number.","type":"string"},"keyword":{"description":"The suggested question keyword.","type":"string"},"updatedUtc":{"description":"UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds.","type":"number"},"volume":{"description":"Relative search-volume bucket (a letter grade), not an exact number.","type":"string"}},"type":"object"},"type":"array"},"searchEngine":{"description":"Search engine the suggestions are drawn from (e.g. Google).","type":"string"},"sourceKeyword":{"description":"The seed keyword the suggestions were expanded from. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true}},"required":["sourceKeyword"],"type":"object"},"type":"array","x-anyapi-must-populate":true}},"required":["items"],"type":"object"}]},"found":{"type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"Ahrefs keyword ideas output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"Ahrefs Keyword Ideas","tags":["ahrefs"],"x-mint":{"href":"/api-reference/ahrefs/keyword-ideas"},"x-payment-info":{"price":{"currency":"USD","max":"0.005010","min":"0.000060","mode":"dynamic"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"currency":"USD","max":"0.005010","min":"0.001000","minimumUsd":"0.001000","mode":"dynamic","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"currency":"USD","max":"0.005010","min":"0.000060","minimumUsd":null,"mode":"dynamic","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/ahrefs.keywords":{"post":{"description":"Get the Ahrefs keyword-difficulty metrics for any search term: the difficulty score (0-100) and the number of referring domains a page needs to rank in the top 10 - as normalized JSON.\n\n**Price:** billed per result - \\$0.06 per 1,000 requests base + \\$4.95 per 1,000 results, capped at \\$5.01 per 1,000 requests.\n\n**Routing:** one lane serves this API today, so a failed attempt has nowhere to fail over to. Payment outcome follows the selected rail's settlement policy.\n\n**Catalog:** [Ahrefs Keyword Difficulty pricing and uptime](https://getanyapi.com/api/ahrefs/keywords) - live USD price, lane routing, and measured 30-day uptime. [Every Ahrefs endpoint](https://getanyapi.com/api/ahrefs).","operationId":"ahrefs_keywords","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"country":"us","keyword":"seo tools"},"schema":{"additionalProperties":false,"example":{"country":"us","keyword":"seo tools"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"country":{"default":"us","description":"Two-letter country code that scopes volume and difficulty (e.g. us, gb, de).","type":"string"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"keyword":{"description":"The search term to analyze (e.g. \"seo tools\").","type":"string"},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true}},"required":["keyword"],"title":"Ahrefs keyword metrics input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"oneOf":[{"type":"null"},{"additionalProperties":false,"properties":{"items":{"description":"Keyword-difficulty records: the difficulty score and the referring-domain gap needed to rank in the top 10. Populated whenever the provider has data for the entity.","items":{"properties":{"country":{"description":"Two-letter country code the metrics are scoped to.","type":"string"},"cpcUsd":{"description":"Ahrefs' estimated paid-search cost per click in USD.","type":"number"},"difficulty":{"description":"Ahrefs Keyword Difficulty, 0-100.","type":"integer"},"keyword":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"referringDomainsToRank":{"description":"Estimated number of referring domains a page needs to rank in the top 10 for this keyword.","type":"integer"},"searchVolume":{"description":"Average monthly search volume for the keyword in the requested country.","type":"integer"},"updatedUtc":{"description":"UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds.","type":"number"}},"required":["keyword"],"type":"object"},"type":"array","x-anyapi-must-populate":true}},"required":["items"],"type":"object"}]},"found":{"type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"Ahrefs keyword difficulty output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"Ahrefs Keyword Difficulty","tags":["ahrefs"],"x-mint":{"href":"/api-reference/ahrefs/keywords"},"x-payment-info":{"price":{"currency":"USD","max":"0.005010","min":"0.000060","mode":"dynamic"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"currency":"USD","max":"0.005010","min":"0.001000","minimumUsd":"0.001000","mode":"dynamic","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"currency":"USD","max":"0.005010","min":"0.000060","minimumUsd":null,"mode":"dynamic","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/ahrefs.overview":{"post":{"description":"Get an SEO authority overview for any domain or URL: Domain Rating, total backlinks, and referring domains - as normalized JSON.\n\n**Price:** billed per result - \\$0.06 per 1,000 requests base + \\$4.95 per 1,000 results, capped at \\$5.01 per 1,000 requests.\n\n**Routing:** one lane serves this API today, so a failed attempt has nowhere to fail over to. Payment outcome follows the selected rail's settlement policy.\n\n**Catalog:** [Ahrefs Domain Overview pricing and uptime](https://getanyapi.com/api/ahrefs/overview) - live USD price, lane routing, and measured 30-day uptime. [Every Ahrefs endpoint](https://getanyapi.com/api/ahrefs).","operationId":"ahrefs_overview","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"mode":"subdomains","url":"ahrefs.com"},"schema":{"additionalProperties":false,"example":{"mode":"subdomains","url":"ahrefs.com"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"mode":{"default":"subdomains","description":"Analysis scope: subdomains covers the whole domain, exact matches only the given URL.","enum":["exact","subdomains"],"type":"string"},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"url":{"description":"The domain or page URL to analyze (e.g. ahrefs.com).","type":"string"}},"required":["url"],"title":"Ahrefs domain overview input","type":"object","x-aliases":{"target":"url"}}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"oneOf":[{"type":"null"},{"additionalProperties":false,"properties":{"items":{"description":"Domain authority records: the requested domain plus its Domain Rating, total backlinks, and referring-domain counts. Populated whenever the provider has data for the entity.","items":{"properties":{"backlinks":{"description":"Total number of backlinks pointing to the domain.","type":"integer"},"dofollowBacklinksPct":{"description":"Percentage (0-100) of backlinks that are dofollow.","type":"integer"},"dofollowReferringDomainsPct":{"description":"Percentage (0-100) of referring domains that provide a dofollow link.","type":"integer"},"domain":{"description":"The domain or URL the metrics are scoped to. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"domainRating":{"description":"Ahrefs Domain Rating, 0-100, measuring backlink-profile strength.","type":"number"},"mode":{"description":"Analysis scope used: subdomains (whole domain) or exact (the given URL only).","type":"string"},"referringDomains":{"description":"Number of unique referring domains linking to the domain.","type":"integer"}},"required":["domain"],"type":"object"},"type":"array","x-anyapi-must-populate":true}},"required":["items"],"type":"object"}]},"found":{"type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"Ahrefs domain overview output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"Ahrefs Domain Overview","tags":["ahrefs"],"x-mint":{"href":"/api-reference/ahrefs/overview"},"x-payment-info":{"price":{"currency":"USD","max":"0.005010","min":"0.000060","mode":"dynamic"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"currency":"USD","max":"0.005010","min":"0.001000","minimumUsd":"0.001000","mode":"dynamic","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"currency":"USD","max":"0.005010","min":"0.000060","minimumUsd":null,"mode":"dynamic","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/ahrefs.traffic":{"post":{"description":"Get the Ahrefs organic traffic overview for any domain or URL: monthly traffic estimate and value, the top keywords it already ranks for with position and traffic, top pages, traffic by country, and a monthly traffic history - as normalized JSON.\n\n**Price:** billed per result - \\$0.06 per 1,000 requests base + \\$4.95 per 1,000 results, capped at \\$5.01 per 1,000 requests.\n\n**Routing:** one lane serves this API today, so a failed attempt has nowhere to fail over to. Payment outcome follows the selected rail's settlement policy.\n\n**Catalog:** [Ahrefs Traffic Overview pricing and uptime](https://getanyapi.com/api/ahrefs/traffic) - live USD price, lane routing, and measured 30-day uptime. [Every Ahrefs endpoint](https://getanyapi.com/api/ahrefs).","operationId":"ahrefs_traffic","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"mode":"subdomains","url":"ahrefs.com"},"schema":{"additionalProperties":false,"example":{"mode":"subdomains","url":"ahrefs.com"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"mode":{"default":"subdomains","description":"Analysis scope: subdomains covers the domain and its subdomains, domain covers the root domain only, prefix covers every page under the given path, exact matches only the given URL.","enum":["exact","subdomains","prefix","domain"],"type":"string"},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"url":{"description":"The domain or page URL to analyze (e.g. ahrefs.com).","type":"string"}},"required":["url"],"title":"Ahrefs traffic overview input","type":"object","x-aliases":{"domain":"url","target":"url"}}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"oneOf":[{"type":"null"},{"additionalProperties":false,"properties":{"items":{"description":"Traffic overview records: the requested domain plus its monthly organic traffic, top ranking keywords, top pages, top countries, and traffic history. Populated whenever the provider has data for the entity.","items":{"properties":{"domain":{"description":"The domain or URL the metrics are scoped to. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"mode":{"description":"Analysis scope used: subdomains, domain, prefix, or exact.","type":"string"},"monthlyTraffic":{"description":"Estimated monthly organic search visits.","type":"integer"},"monthlyTrafficValueUsd":{"description":"Estimated monthly USD value of the organic traffic, what the same clicks would cost in paid search.","type":"number"},"topCountries":{"description":"Countries sending the most organic traffic, up to five.","items":{"properties":{"country":{"description":"Two-letter country code.","type":"string"},"sharePct":{"description":"Share (0-100) of the domain's organic traffic from this country.","type":"number"}},"required":["country"],"type":"object"},"type":"array"},"topKeywords":{"description":"The top organic keywords the domain already ranks for, up to five, ordered by traffic. Populated whenever the provider has data for the entity.","items":{"properties":{"keyword":{"description":"The organic keyword.","type":"string"},"position":{"description":"Current Google organic position for this keyword.","type":"integer"},"traffic":{"description":"Estimated monthly traffic this keyword drives to the domain.","type":"integer"}},"required":["keyword"],"type":"object"},"type":"array","x-anyapi-must-populate":true},"topPages":{"description":"The pages receiving the most organic traffic, up to five.","items":{"properties":{"sharePct":{"description":"Share (0-100) of the domain's organic traffic this page receives.","type":"number"},"traffic":{"description":"Estimated monthly organic visits to the page.","type":"integer"},"url":{"description":"The page URL.","type":"string"}},"required":["url"],"type":"object"},"type":"array"},"trafficHistory":{"description":"Monthly organic traffic estimates for recent months, oldest first.","items":{"properties":{"monthUtc":{"description":"UTC epoch timestamp in seconds (Unix time) of the first day of the month. Multiply by 1000 for a JS Date in milliseconds.","type":"number"},"organicTraffic":{"description":"Estimated organic search visits in that month.","type":"integer"}},"required":["monthUtc"],"type":"object"},"type":"array"}},"required":["domain"],"type":"object"},"type":"array","x-anyapi-must-populate":true}},"required":["items"],"type":"object"}]},"found":{"type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"Ahrefs traffic overview output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"Ahrefs Traffic Overview","tags":["ahrefs"],"x-mint":{"href":"/api-reference/ahrefs/traffic"},"x-payment-info":{"price":{"currency":"USD","max":"0.005010","min":"0.000060","mode":"dynamic"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"currency":"USD","max":"0.005010","min":"0.001000","minimumUsd":"0.001000","mode":"dynamic","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"currency":"USD","max":"0.005010","min":"0.000060","minimumUsd":null,"mode":"dynamic","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/airbnb.search":{"post":{"description":"Search Airbnb listings by location and dates with optional price, beds/bedrooms/bathrooms, and guest-party filters and get results (name, total-stay price label, rating, host) as normalized JSON.\n\n**Price:** billed per result - \\$0.09 per 1,000 requests base + \\$1.65 per 1,000 results, capped at \\$33.10 per 1,000 requests.\n\n**Routing:** one lane serves this API today, so a failed attempt has nowhere to fail over to. Payment outcome follows the selected rail's settlement policy.\n\n**Catalog:** [Airbnb Search pricing and uptime](https://getanyapi.com/api/airbnb/search) - live USD price, lane routing, and measured 30-day uptime. [Every Airbnb endpoint](https://getanyapi.com/api/airbnb).","operationId":"airbnb_search","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"adults":2,"limit":3,"location":"San Diego","minBedrooms":3},"schema":{"additionalProperties":false,"example":{"adults":2,"limit":3,"location":"San Diego","minBedrooms":3},"properties":{"adults":{"description":"Number of adult guests (e.g. 2).","minimum":1,"type":"integer"},"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"checkIn":{"description":"Check-in date in YYYY-MM-DD format (e.g. 2026-07-01).","format":"date","pattern":"^\\d{4}-(0[1-9]|1[0-2])-(0[1-9]|[12]\\d|3[01])$","type":"string"},"checkOut":{"description":"Check-out date in YYYY-MM-DD format (e.g. 2026-07-05).","format":"date","pattern":"^\\d{4}-(0[1-9]|1[0-2])-(0[1-9]|[12]\\d|3[01])$","type":"string"},"children":{"description":"Number of child guests (e.g. 1).","minimum":0,"type":"integer"},"currency":{"default":"USD","description":"Currency code for prices (e.g. EUR).","enum":["USD","CZK","AUD","BRL","BGN","CAD","CLP","CNY","COP","CRC","HRK","DKK","EGP","AED","EUR","GHS","HKD","HUF","INR","IDR","ILS","JPY","KZT","KES","MYR","MXN","MAD","TWD","NZD","NOK","PEN","PHP","PLN","GBP","QAR","RON","SAR","SGD","ZAR","KRW","SEK","CHF","THB","TRY","UGX","UAH","UYU","VND"],"type":"string"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"infants":{"description":"Number of infant guests (e.g. 1).","minimum":0,"type":"integer"},"limit":{"description":"Maximum number of results to return (1-20, default 20). You are billed per result returned, so a lower limit costs less.","maximum":20,"minimum":1,"type":"integer"},"location":{"description":"Location to search listings in (e.g. London).","type":"string"},"minBathrooms":{"description":"Minimum number of bathrooms (e.g. 2).","minimum":0,"type":"integer"},"minBedrooms":{"description":"Minimum number of bedrooms (e.g. 2).","minimum":0,"type":"integer"},"minBeds":{"description":"Minimum number of beds (e.g. 2).","minimum":0,"type":"integer"},"pets":{"description":"Number of pets; only pet-friendly listings are returned when set (e.g. 1).","minimum":0,"type":"integer"},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"priceMax":{"description":"Maximum search price in the selected currency (e.g. 300).","minimum":0,"type":"integer"},"priceMin":{"description":"Minimum search price in the selected currency (e.g. 50).","minimum":0,"type":"integer"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true}},"required":["location"],"title":"Airbnb search input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"oneOf":[{"type":"null"},{"additionalProperties":false,"properties":{"items":{"description":"Listing records: name, total-stay price label, rating, location, host info, and availability details. Populated whenever the provider has data for the entity.","items":{"properties":{"description":{"description":"Listing description written by the host.","type":"string"},"hostAvatarUrl":{"description":"Host profile photo URL.","type":"string"},"hostId":{"description":"Airbnb host identifier.","type":"string"},"hostName":{"type":"string"},"hostRating":{"description":"Average rating across the host other listings (0-5).","type":"number"},"hostReviewsCount":{"description":"Number of reviews across the host other listings.","type":"integer"},"hostVerified":{"description":"Whether Airbnb has verified the host identity.","type":"boolean"},"id":{"description":"Airbnb listing identifier. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"image":{"description":"Primary listing image URL. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"images":{"description":"Listing photos.","items":{"properties":{"caption":{"description":"Photo caption.","type":"string"},"url":{"description":"Photo URL.","type":"string"}},"type":"object"},"type":"array"},"isAvailable":{"type":"boolean"},"isSuperhost":{"type":"boolean"},"latitude":{"type":"number"},"location":{"description":"Location subtitle.","type":"string"},"longitude":{"type":"number"},"personCapacity":{"type":"integer"},"price":{"description":"Total-stay price label returned by Airbnb (e.g. $3,149 total).","type":"string"},"propertyType":{"type":"string"},"rating":{"description":"Guest satisfaction rating (0-5).","type":"number"},"ratingAccuracy":{"description":"Accuracy sub-rating (0-5).","type":"number"},"ratingCheckin":{"description":"Check-in sub-rating (0-5).","type":"number"},"ratingCleanliness":{"description":"Cleanliness sub-rating (0-5).","type":"number"},"ratingCommunication":{"description":"Communication sub-rating (0-5).","type":"number"},"ratingLocation":{"description":"Location sub-rating (0-5).","type":"number"},"ratingValue":{"description":"Value sub-rating (0-5).","type":"number"},"reviewsCount":{"type":"integer"},"roomType":{"type":"string"},"title":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"url":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true}},"required":["id","url","title"],"type":"object"},"type":"array","x-anyapi-must-populate":true}},"required":["items"],"type":"object"}]},"found":{"type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"Airbnb search output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"Airbnb Search","tags":["airbnb"],"x-mint":{"href":"/api-reference/airbnb/search"},"x-payment-info":{"price":{"currency":"USD","max":"0.033100","min":"0.000090","mode":"dynamic"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"currency":"USD","max":"0.033100","min":"0.001000","minimumUsd":"0.001000","mode":"dynamic","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"currency":"USD","max":"0.033100","min":"0.000090","minimumUsd":null,"mode":"dynamic","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/alibaba.search":{"post":{"description":"Search Alibaba by keyword and get up to 25 wholesale listings (title, price range, minimum order, and supplier) in one normalized response.\n\n**Price:** billed per result - \\$0.88 per 1,000 results, capped at \\$22.00 per 1,000 requests.\n\n**Routing:** one lane serves this API today, so a failed attempt has nowhere to fail over to. Payment outcome follows the selected rail's settlement policy.\n\n**Catalog:** [Alibaba Search pricing and uptime](https://getanyapi.com/api/alibaba/search) - live USD price, lane routing, and measured 30-day uptime. [Every Alibaba endpoint](https://getanyapi.com/api/alibaba).","operationId":"alibaba_search","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"limit":3,"query":"bluetooth speaker"},"schema":{"additionalProperties":false,"example":{"limit":3,"query":"bluetooth speaker"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"limit":{"description":"Maximum number of results to return (1-25, default 25). You are billed per result returned, so a lower limit costs less.","maximum":25,"minimum":1,"type":"integer"},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"query":{"description":"Keywords to search for on Alibaba (e.g. \"bluetooth speaker wholesale\").","type":"string"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true}},"required":["query"],"title":"Alibaba search input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"description":"Search result wrapper, or null when nothing matched.","oneOf":[{"type":"null"},{"additionalProperties":false,"properties":{"items":{"description":"Matching Alibaba wholesale listings. Populated whenever the provider has data for the entity.","items":{"properties":{"companyId":{"description":"Alibaba supplier company identifier.","type":"string"},"countryCode":{"description":"Supplier country ISO code, e.g. \"CN\".","type":"string"},"currency":{"description":"Price currency symbol or code, e.g. \"$\".","type":"string"},"image":{"description":"Primary product image URL.","type":"string"},"images":{"description":"Product image URLs.","items":{"type":"string"},"type":"array"},"isSponsored":{"description":"True when the listing is a paid placement.","type":"boolean"},"moq":{"description":"Minimum order quantity text, e.g. \"Min. order: 1 piece\".","type":"string"},"price":{"description":"Lowest price in the displayed range, as a numeric amount; 0 when Alibaba shows no price.","type":"number"},"priceText":{"description":"Price or price range as displayed, e.g. \"$40.80-45.80\" (Alibaba lists ranges, not a single numeric value).","type":"string"},"productId":{"description":"Alibaba product identifier.","type":"string"},"promotionPrice":{"description":"Discounted promotional price when the listing is on sale; empty otherwise.","type":"string"},"rating":{"description":"Average buyer review score, 0-5; 0 when the listing has no reviews.","type":"number"},"reviewCount":{"description":"Number of buyer reviews; 0 when none.","type":"integer"},"supplierName":{"description":"Supplier / company name.","type":"string"},"supplierUrl":{"description":"Supplier storefront URL on Alibaba.","type":"string"},"supplierYears":{"description":"Gold Supplier tenure text, e.g. \"3 yrs\"; empty when not a Gold Supplier.","type":"string"},"title":{"description":"Listing title as shown on Alibaba (may contain the supplier's inline markup). Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"url":{"description":"Canonical product detail page URL (tracking query params stripped). Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true}},"required":["title","url"],"type":"object"},"type":"array","x-anyapi-must-populate":true}},"required":["items"],"type":"object"}]},"found":{"description":"True when the search returned at least one listing.","type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"Alibaba search output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"Alibaba Search","tags":["alibaba"],"x-mint":{"href":"/api-reference/alibaba/search"},"x-payment-info":{"price":{"currency":"USD","max":"0.022000","min":"0.000000","mode":"dynamic"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"currency":"USD","max":"0.022000","min":"0.001000","minimumUsd":"0.001000","mode":"dynamic","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"currency":"USD","max":"0.022000","min":"0.000000","minimumUsd":null,"mode":"dynamic","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/amazon.asins":{"post":{"description":"Look up to 10 Amazon products in one call by ASIN (title, brand, price, ratings, images, and attributes) as normalized JSON.\n\n**Price:** billed per asin - \\$3.85 per 1,000 asins, capped at \\$38.50 per 1,000 requests.\n\n**Routing:** one lane serves this API today, so a failed attempt has nowhere to fail over to. Payment outcome follows the selected rail's settlement policy.\n\n**Catalog:** [Amazon Products by ASIN pricing and uptime](https://getanyapi.com/api/amazon/asins) - live USD price, lane routing, and measured 30-day uptime. [Every Amazon endpoint](https://getanyapi.com/api/amazon).","operationId":"amazon_asins","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"asins":["B09G9FPHY6"],"limit":3},"schema":{"additionalProperties":false,"example":{"asins":["B09G9FPHY6"],"limit":3},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"amazonDomain":{"default":"amazon.com","description":"Amazon marketplace domain to fetch products from (e.g. amazon.com, amazon.de, amazon.co.uk).","type":"string"},"asins":{"description":"Up to 10 Amazon ASINs to look up (e.g. [\"B0CHX1W1XY\", \"B09G9FPHY6\"]).","items":{"type":"string"},"maxItems":10,"minItems":1,"type":"array"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"limit":{"description":"Maximum number of results to return (1-10, default 10). You are billed per result returned, so a lower limit costs less.","maximum":10,"minimum":1,"type":"integer"},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true}},"required":["asins"],"title":"Amazon products by ASIN input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"oneOf":[{"type":"null"},{"additionalProperties":false,"properties":{"items":{"description":"Product records: ASIN, title, brand, price, ratings, images, and attributes. Populated whenever the provider has data for the entity.","items":{"properties":{"asin":{"description":"Amazon Standard Identification Number. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"attributes":{"description":"Product detail attributes as name/value pairs (dimensions, weight, model, and similar).","items":{"properties":{"name":{"description":"Attribute name.","type":"string"},"value":{"description":"Attribute value.","type":"string"}},"type":"object"},"type":"array"},"brand":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"condition":{"type":"string"},"currency":{"type":"string"},"features":{"description":"Bullet-point feature list from the listing.","items":{"type":"string"},"type":"array"},"image":{"description":"Primary product image URL. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"images":{"description":"High-resolution product image URLs.","items":{"type":"string"},"type":"array"},"inStock":{"type":"boolean"},"price":{"description":"Buy-box price; 0 when no offer is available.","type":"number"},"rating":{"description":"Average star rating, 0-5.","type":"number"},"reviewsCount":{"type":"integer"},"sellerName":{"type":"string"},"title":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"url":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"variantAsins":{"description":"ASINs of the other variations of this product.","items":{"type":"string"},"type":"array"}},"required":["asin","title","url"],"type":"object"},"type":"array","x-anyapi-must-populate":true}},"required":["items"],"type":"object"}]},"found":{"type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"Amazon products by ASIN output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"Amazon Products by ASIN","tags":["amazon"],"x-mint":{"href":"/api-reference/amazon/asins"},"x-payment-info":{"price":{"currency":"USD","max":"0.038500","min":"0.000000","mode":"dynamic"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"currency":"USD","max":"0.038500","min":"0.001000","minimumUsd":"0.001000","mode":"dynamic","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"currency":"USD","max":"0.038500","min":"0.000000","minimumUsd":null,"mode":"dynamic","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/amazon.bestsellers":{"post":{"description":"List the top-ranked products of any Amazon Best Sellers category (rank, title, price, and rating) in one normalized request.\n\n**Price:** \\$0.50 per 1,000 requests (flat per request - same cost regardless of results returned).\n\n**Routing:** 2 independent lanes are available in execution order. A failed attempt uses the next lane only when the request's payment authorizes that lane's price; the normalized schema stays the same.\n\n**Catalog:** [Amazon Bestsellers pricing and uptime](https://getanyapi.com/api/amazon/bestsellers) - live USD price, lane routing, and measured 30-day uptime. [Every Amazon endpoint](https://getanyapi.com/api/amazon).","operationId":"amazon_bestsellers","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"limit":3,"url":"https://www.amazon.com/gp/bestsellers/electronics"},"schema":{"additionalProperties":false,"example":{"limit":3,"url":"https://www.amazon.com/gp/bestsellers/electronics"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"limit":{"default":20,"description":"Maximum number of results to return (1-20, default 20).","maximum":20,"minimum":1,"type":"integer"},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"requireFields":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Name the output fields this request must be able to return, for example `offersCount` or `categoryName`, and it is served only by a source that returns every one of them. Fields you do not name are still returned whenever the serving source has them. This can raise your price: when the cheapest source cannot return a named field, a dearer source serves, and you are quoted and charged its price. A named field can still be absent on a product that genuinely lacks it. Naming a combination that no single source returns together is refused as invalid input, with no charge.","items":{"enum":["categoryName","currency","image","offersCount","price","rank","rating","reviewsCount"],"type":"string"},"type":"array","uniqueItems":true},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"url":{"description":"Amazon Best Sellers category URL (e.g. https://www.amazon.com/Best-Sellers-Electronics/zgbs/electronics).","type":"string"}},"required":["url"],"title":"Amazon bestsellers input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"description":"Best-sellers wrapper, or null when the category returned nothing.","oneOf":[{"type":"null"},{"additionalProperties":false,"properties":{"items":{"description":"Best-seller product records ordered by category rank. Populated whenever the provider has data for the entity.","items":{"properties":{"asin":{"description":"Amazon Standard Identification Number. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"categoryName":{"description":"Best Sellers category name the product ranks in, or null when the serving source does not publish it.","type":["string","null"]},"currency":{"description":"Price currency symbol or code, e.g. \"$\".","type":"string"},"image":{"description":"Primary product thumbnail image URL.","type":"string"},"offersCount":{"description":"Number of available offers, or null when the serving source does not publish it.","type":["integer","null"]},"price":{"description":"Listed price; 0 when no offer is available.","type":"number"},"rank":{"description":"Best-seller rank within the category (1 = top).","type":"integer"},"rating":{"description":"Average star rating, 0-5; 0 when unrated.","type":"number"},"reviewsCount":{"description":"Number of customer reviews; 0 when none.","type":"integer"},"title":{"description":"Product title. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"url":{"description":"Canonical product detail page URL (tracking query params stripped). Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true}},"required":["title","url","asin"],"type":"object"},"type":"array","x-anyapi-must-populate":true}},"required":["items"],"type":"object"}]},"found":{"description":"True when the category returned at least one best-seller.","type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"Amazon bestsellers output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"Amazon Bestsellers","tags":["amazon"],"x-mint":{"href":"/api-reference/amazon/bestsellers"},"x-payment-info":{"price":{"amount":"0.000500","currency":"USD","mode":"fixed"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"amount":"0.001000","currency":"USD","minimumUsd":"0.001000","mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"amount":"0.000500","currency":"USD","minimumUsd":null,"mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/amazon.product":{"post":{"description":"Fetch full Amazon product details (title, brand, price when in stock, images, ratings, review count, variants, and attributes) from a product URL.\n\n**Price:** \\$1.00 per 1,000 requests (flat per request - same cost regardless of results returned).\n\n**Routing:** 3 independent lanes are available in execution order. A failed attempt uses the next lane only when the request's payment authorizes that lane's price; the normalized schema stays the same.\n\n**Catalog:** [Amazon Product pricing and uptime](https://getanyapi.com/api/amazon/product) - live USD price, lane routing, and measured 30-day uptime. [Every Amazon endpoint](https://getanyapi.com/api/amazon).","operationId":"amazon_product","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"url":"https://www.amazon.com/dp/B00NTCH52W"},"schema":{"additionalProperties":false,"example":{"url":"https://www.amazon.com/dp/B00NTCH52W"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"requireFields":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Name the output fields this request must be able to return, for example `category` or `condition`, and it is served only by a source that returns every one of them. Fields you do not name are still returned whenever the serving source has them. This can raise your price: when the cheapest source cannot return a named field, a dearer source serves, and you are quoted and charged its price. A named field can still be absent on a product that genuinely lacks it. Naming a combination that no single source returns together is refused as invalid input, with no charge.","items":{"enum":["category","condition","currency","description","features","images","inStock","price","rating","reviewsCount","sellerName","variantAsins"],"type":"string"},"type":"array","uniqueItems":true},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"url":{"description":"Full Amazon product URL (e.g. https://www.amazon.com/dp/B0CX23V2ZK).","type":"string"}},"required":["url"],"title":"Amazon product input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"description":"Product wrapper, or null when the URL resolved to no product.","oneOf":[{"type":"null"},{"additionalProperties":false,"properties":{"items":{"description":"Product detail records (one per requested product URL). Populated whenever the provider has data for the entity.","items":{"properties":{"asin":{"description":"Amazon Standard Identification Number. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"brand":{"description":"Manufacturer or brand name. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"category":{"description":"Category breadcrumb path, e.g. \"Health \u0026 Household \u003e Household Supplies\".","type":"string"},"condition":{"description":"Item condition, e.g. \"New\"; empty when not reported.","type":"string"},"currency":{"description":"Price currency symbol or code, e.g. \"$\".","type":"string"},"description":{"description":"Product description text; empty when the listing has none.","type":"string"},"features":{"description":"Bullet-point feature list from the listing.","items":{"type":"string"},"type":"array"},"image":{"description":"Primary product image URL. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"images":{"description":"High-resolution product image URLs.","items":{"type":"string"},"type":"array"},"inStock":{"description":"True when the product is purchasable.","type":"boolean"},"price":{"description":"Current buy-box price as a numeric amount; 0 when the listing has no buyable price (out of stock).","type":"number"},"rating":{"description":"Average customer star rating, 0-5; 0 when unrated.","type":"number"},"reviewsCount":{"description":"Total number of customer reviews; 0 when none.","type":"integer"},"sellerName":{"description":"Name of the seller fulfilling the buy box.","type":"string"},"title":{"description":"Product title. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"url":{"description":"Canonical product detail page URL (tracking query params stripped). Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"variantAsins":{"description":"ASINs of the other variations of this product, or null when the serving source does not publish them.","items":{"type":"string"},"type":["array","null"]}},"required":["title","url","asin"],"type":"object"},"type":"array","x-anyapi-must-populate":true}},"required":["items"],"type":"object"}]},"found":{"description":"True when the product was found.","type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"Amazon product output","type":"object","x-anyapi-heavy":true},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"Amazon Product","tags":["amazon"],"x-mint":{"href":"/api-reference/amazon/product"},"x-payment-info":{"price":{"amount":"0.001000","currency":"USD","mode":"fixed"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"amount":"0.001000","currency":"USD","minimumUsd":"0.001000","mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"amount":"0.001000","currency":"USD","minimumUsd":null,"mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/amazon.reviews":{"post":{"description":"Pull up to 50 customer reviews for any Amazon product by ASIN or URL: rating, title, text, date, and verified-purchase badge.\n\n**Price:** \\$1.00 per 1,000 requests (flat per request - same cost regardless of results returned).\n\n**Routing:** 3 independent lanes are available in execution order. A failed attempt uses the next lane only when the request's payment authorizes that lane's price; the normalized schema stays the same.\n\n**Catalog:** [Amazon Reviews pricing and uptime](https://getanyapi.com/api/amazon/reviews) - live USD price, lane routing, and measured 30-day uptime. [Every Amazon endpoint](https://getanyapi.com/api/amazon).","operationId":"amazon_reviews","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"limit":3,"product":"B07PXGQC1Q"},"schema":{"additionalProperties":false,"example":{"limit":3,"product":"B07PXGQC1Q"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"endDate":{"description":"Only return reviews on or before this date, inclusive, in YYYY-MM-DD format (e.g. 2026-06-30).","type":"string"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"keyword":{"description":"Only return reviews whose title or text contains this keyword, case-insensitively (e.g. battery).","minLength":1,"type":"string"},"limit":{"default":50,"description":"Maximum number of results to return (1-50, default 50).","maximum":50,"minimum":1,"type":"integer"},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"product":{"description":"Amazon product ASIN or full product URL (e.g. B07CMS5Q6P).","type":"string"},"ratings":{"description":"Only return reviews whose star rating is in this set (e.g. [\"5\", \"4\"] for 4 and 5 star reviews); omit for all ratings.","items":{"enum":["1","2","3","4","5"],"type":"string"},"type":"array"},"region":{"description":"Amazon marketplace domain the product ASIN belongs to (e.g. amazon.co.uk).","enum":["amazon.com","amazon.ca","amazon.de","amazon.fr","amazon.co.uk","amazon.it","amazon.es","amazon.com.au","amazon.co.jp","amazon.com.br","amazon.com.mx","amazon.nl","amazon.ie","amazon.se","amazon.com.tr","amazon.ae","amazon.sg","amazon.sa","amazon.pl","amazon.com.be","amazon.eg","amazon.in"],"type":"string"},"requireFields":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Name the output fields this request must be able to return, for example `url`, and it is served only by a source that returns every one of them. Fields you do not name are still returned whenever the serving source has them. This can raise your price: when the cheapest source cannot return a named field, a dearer source serves, and you are quoted and charged its price. A named field can still be absent on a review that genuinely lacks it. Naming a combination that no single source returns together is refused as invalid input, with no charge.","items":{"enum":["createdUtc","helpfulVotes","rating","reviewer","title","url","verifiedPurchase"],"type":"string"},"type":"array","uniqueItems":true},"sort":{"description":"Review sort order: most helpful first or most recent first (e.g. recent).","enum":["helpful","recent"],"type":"string"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"startDate":{"description":"Only return reviews on or after this date, inclusive, in YYYY-MM-DD format (e.g. 2026-01-01).","type":"string"},"verifiedOnly":{"description":"Set true to return only verified-purchase reviews (e.g. true).","type":"boolean"}},"required":["product"],"title":"Amazon reviews input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"description":"Reviews wrapper, or null when the product returned no reviews.","oneOf":[{"type":"null"},{"additionalProperties":false,"properties":{"items":{"description":"Customer review records. Populated whenever the provider has data for the entity.","items":{"properties":{"createdUtc":{"description":"UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds. 0 when the review date is not reported in a parseable form.","type":"number"},"helpfulVotes":{"description":"Number of \"helpful\" votes the review received; 0 when none.","type":"integer"},"rating":{"description":"Star rating the reviewer gave, 1-5; 0 when not reported.","type":"number"},"reviewer":{"description":"Reviewer display name; empty when withheld.","type":"string"},"text":{"description":"Full review body text. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"title":{"description":"Review headline / title; empty when the review has none.","type":"string"},"url":{"description":"Public Amazon page for this review, when supplied by the serving lane.","format":"uri","type":"string"},"verifiedPurchase":{"description":"True when Amazon marks the review a verified purchase.","type":"boolean"}},"required":["rating","text"],"type":"object"},"type":"array","x-anyapi-must-populate":true}},"required":["items"],"type":"object"}]},"found":{"description":"True when at least one review was returned.","type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"Amazon reviews output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"Amazon Reviews","tags":["amazon"],"x-mint":{"href":"/api-reference/amazon/reviews"},"x-payment-info":{"price":{"amount":"0.001000","currency":"USD","mode":"fixed"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"amount":"0.001000","currency":"USD","minimumUsd":"0.001000","mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"amount":"0.001000","currency":"USD","minimumUsd":null,"mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/amazon.search":{"post":{"description":"Search Amazon from any search or category URL and get up to 20 matching products (title, price, rating, and thumbnail) in one normalized response.\n\n**Price:** \\$0.50 per 1,000 requests (flat per request - same cost regardless of results returned).\n\n**Routing:** 2 independent lanes are available in execution order. A failed attempt uses the next lane only when the request's payment authorizes that lane's price; the normalized schema stays the same.\n\n**Catalog:** [Amazon Search pricing and uptime](https://getanyapi.com/api/amazon/search) - live USD price, lane routing, and measured 30-day uptime. [Every Amazon endpoint](https://getanyapi.com/api/amazon).","operationId":"amazon_search","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"limit":3,"url":"https://www.amazon.com/s?k=laptop"},"schema":{"additionalProperties":false,"example":{"limit":3,"url":"https://www.amazon.com/s?k=laptop"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"limit":{"default":20,"description":"Maximum number of results to return (1-20, default 20).","maximum":20,"minimum":1,"type":"integer"},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"requireFields":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Name the output fields this request must be able to return, for example `offersCount`, and it is served only by a source that returns every one of them. Fields you do not name are still returned whenever the serving source has them. This can raise your price: when the cheapest source cannot return a named field, a dearer source serves, and you are quoted and charged its price. A named field can still be absent on a product that genuinely lacks it. Naming a combination that no single source returns together is refused as invalid input, with no charge.","items":{"enum":["currency","image","isSponsored","listPrice","offersCount","position","price","rating","reviewsCount","url"],"type":"string"},"type":"array","uniqueItems":true},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"url":{"description":"Amazon search or category URL to pull results from (e.g. https://www.amazon.com/s?k=gaming+mouse).","type":"string"}},"required":["url"],"title":"Amazon search input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"description":"Search result wrapper, or null when nothing matched.","oneOf":[{"type":"null"},{"additionalProperties":false,"properties":{"items":{"description":"Matching Amazon product records. Populated whenever the provider has data for the entity.","items":{"properties":{"asin":{"description":"Amazon Standard Identification Number; use it with the Amazon Products by ASIN SKU for full detail. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"currency":{"description":"Price currency symbol or code, e.g. \"$\".","type":"string"},"image":{"description":"Primary product thumbnail image URL.","type":"string"},"isSponsored":{"description":"True when the result is a sponsored placement.","type":"boolean"},"listPrice":{"description":"Pre-discount list price when on sale, 0 when not discounted, or null when the serving source does not publish it.","type":["number","null"]},"offersCount":{"description":"Number of available offers, or null when the serving source does not publish it.","type":["integer","null"]},"position":{"description":"1-based position of the result on the search page.","type":"integer"},"price":{"description":"Current price as a numeric amount; 0 when no offer is available.","type":"number"},"rating":{"description":"Average star rating, 0-5; 0 when unrated.","type":"number"},"reviewsCount":{"description":"Number of customer reviews; 0 when none.","type":"integer"},"title":{"description":"Product title. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"url":{"description":"Canonical product detail page URL.","type":"string"}},"required":["title","asin"],"type":"object"},"type":"array","x-anyapi-must-populate":true}},"required":["items"],"type":"object"}]},"found":{"description":"True when the search returned at least one product.","type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"Amazon search output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"Amazon Search","tags":["amazon"],"x-mint":{"href":"/api-reference/amazon/search"},"x-payment-info":{"price":{"amount":"0.000500","currency":"USD","mode":"fixed"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"amount":"0.001000","currency":"USD","minimumUsd":"0.001000","mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"amount":"0.000500","currency":"USD","minimumUsd":null,"mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/apollo.organization":{"post":{"description":"Get a complete organization profile by ID including company, industry, employee, revenue, funding, location, and technology data.\n\n**Price:** \\$12.00 per 1,000 requests (flat per request - same cost regardless of results returned).\n\n**Routing:** one lane serves this API today, so a failed attempt has nowhere to fail over to. Payment outcome follows the selected rail's settlement policy.\n\n**Catalog:** [Apollo Organization pricing and uptime](https://getanyapi.com/api/apollo/organization) - live USD price, lane routing, and measured 30-day uptime. [Every Apollo endpoint](https://getanyapi.com/api/apollo).","operationId":"apollo_organization","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"organizationId":"5e66b6381e05b4008c8331b8"},"schema":{"additionalProperties":false,"example":{"organizationId":"5e66b6381e05b4008c8331b8"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"organizationId":{"description":"Organization identifier returned by an Apollo organization endpoint.","minLength":1,"type":"string"},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true}},"required":["organizationId"],"title":"Apollo Organization input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"oneOf":[{"type":"null"},{"properties":{"alexaRanking":{"description":"Alexa global traffic rank of the organization website.","type":"integer"},"annualRevenue":{"description":"Estimated annual revenue in USD.","minimum":0,"type":"number"},"annualRevenueDisplay":{"description":"Human-readable estimated annual revenue.","type":"string"},"city":{"description":"Headquarters city.","type":"string"},"country":{"description":"Headquarters country.","type":"string"},"description":{"description":"Organization summary.","type":"string"},"domain":{"description":"Primary organization domain.","type":"string"},"employeeCount":{"description":"Estimated employee count.","minimum":0,"type":"integer"},"facebookUrl":{"description":"Canonical Facebook page URL.","format":"uri","type":"string"},"foundedYear":{"description":"Year the organization was founded.","type":"integer"},"id":{"description":"Stable organization identifier.","type":"string"},"image":{"description":"Organization logo URL.","format":"uri","type":"string"},"industries":{"description":"Industries associated with the organization.","items":{"type":"string"},"type":"array"},"industry":{"description":"Primary industry.","type":"string"},"keywords":{"description":"Keywords associated with the organization.","items":{"type":"string"},"type":"array"},"latestFundingStage":{"description":"Latest disclosed funding stage.","type":"string"},"latestFundingUtc":{"description":"UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds.","type":"number"},"linkedinId":{"description":"Organization LinkedIn numeric id.","type":"string"},"linkedinUrl":{"description":"Canonical LinkedIn company URL.","format":"uri","type":"string"},"naicsCodes":{"description":"NAICS industry codes.","items":{"type":"string"},"type":"array"},"name":{"description":"Organization name.","type":"string"},"phone":{"description":"Organization phone number in international format.","type":"string"},"postalCode":{"description":"Headquarters postal code.","type":"string"},"rawAddress":{"description":"Headquarters address as one display string.","type":"string"},"sicCodes":{"description":"SIC industry codes.","items":{"type":"string"},"type":"array"},"state":{"description":"Headquarters state or region.","type":"string"},"streetAddress":{"description":"Street address.","type":"string"},"technologyNames":{"description":"Technologies detected at the organization.","items":{"type":"string"},"type":"array"},"totalFunding":{"description":"Total disclosed funding in USD.","minimum":0,"type":"number"},"totalFundingDisplay":{"description":"Human-readable total disclosed funding.","type":"string"},"twitterUrl":{"description":"Canonical X or Twitter profile URL.","format":"uri","type":"string"},"websiteUrl":{"description":"Canonical organization website URL.","format":"uri","type":"string"}},"required":["id","name"],"type":"object"}]},"found":{"description":"Whether a matching organization was found.","type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"Apollo Organization output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"Apollo Organization","tags":["apollo"],"x-mint":{"href":"/api-reference/apollo/organization"},"x-payment-info":{"price":{"amount":"0.012000","currency":"USD","mode":"fixed"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"amount":"0.012000","currency":"USD","minimumUsd":"0.001000","mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"amount":"0.012000","currency":"USD","minimumUsd":null,"mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/apollo.organization_enrich":{"post":{"description":"Enrich an organization by domain with company profile, industry, employee, revenue, funding, location, and technology data.\n\n**Price:** \\$12.00 per 1,000 requests (flat per request - same cost regardless of results returned).\n\n**Routing:** one lane serves this API today, so a failed attempt has nowhere to fail over to. Payment outcome follows the selected rail's settlement policy.\n\n**Catalog:** [Apollo Organization Enrichment pricing and uptime](https://getanyapi.com/api/apollo/organization-enrich) - live USD price, lane routing, and measured 30-day uptime. [Every Apollo endpoint](https://getanyapi.com/api/apollo).","operationId":"apollo_organization_enrich","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"domain":"apollo.io"},"schema":{"additionalProperties":false,"example":{"domain":"apollo.io"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"domain":{"description":"Organization domain without a path, such as apollo.io.","minLength":1,"type":"string"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true}},"required":["domain"],"title":"Apollo Organization Enrichment input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"oneOf":[{"type":"null"},{"properties":{"alexaRanking":{"description":"Alexa global traffic rank of the organization website.","type":"integer"},"annualRevenue":{"description":"Estimated annual revenue in USD.","minimum":0,"type":"number"},"annualRevenueDisplay":{"description":"Human-readable estimated annual revenue.","type":"string"},"city":{"description":"Headquarters city.","type":"string"},"country":{"description":"Headquarters country.","type":"string"},"description":{"description":"Organization summary.","type":"string"},"domain":{"description":"Primary organization domain.","type":"string"},"employeeCount":{"description":"Estimated employee count.","minimum":0,"type":"integer"},"facebookUrl":{"description":"Canonical Facebook page URL.","format":"uri","type":"string"},"foundedYear":{"description":"Year the organization was founded.","type":"integer"},"id":{"description":"Stable organization identifier.","type":"string"},"image":{"description":"Organization logo URL.","format":"uri","type":"string"},"industries":{"description":"Industries associated with the organization.","items":{"type":"string"},"type":"array"},"industry":{"description":"Primary industry.","type":"string"},"keywords":{"description":"Keywords associated with the organization.","items":{"type":"string"},"type":"array"},"latestFundingStage":{"description":"Latest disclosed funding stage.","type":"string"},"latestFundingUtc":{"description":"UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds.","type":"number"},"linkedinId":{"description":"Organization LinkedIn numeric id.","type":"string"},"linkedinUrl":{"description":"Canonical LinkedIn company URL.","format":"uri","type":"string"},"naicsCodes":{"description":"NAICS industry codes.","items":{"type":"string"},"type":"array"},"name":{"description":"Organization name.","type":"string"},"phone":{"description":"Organization phone number in international format.","type":"string"},"postalCode":{"description":"Headquarters postal code.","type":"string"},"rawAddress":{"description":"Headquarters address as one display string.","type":"string"},"sicCodes":{"description":"SIC industry codes.","items":{"type":"string"},"type":"array"},"state":{"description":"Headquarters state or region.","type":"string"},"streetAddress":{"description":"Street address.","type":"string"},"technologyNames":{"description":"Technologies detected at the organization.","items":{"type":"string"},"type":"array"},"totalFunding":{"description":"Total disclosed funding in USD.","minimum":0,"type":"number"},"totalFundingDisplay":{"description":"Human-readable total disclosed funding.","type":"string"},"twitterUrl":{"description":"Canonical X or Twitter profile URL.","format":"uri","type":"string"},"websiteUrl":{"description":"Canonical organization website URL.","format":"uri","type":"string"}},"required":["id","name"],"type":"object"}]},"found":{"description":"Whether a matching organization was found.","type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"Apollo Organization Enrichment output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"Apollo Organization Enrichment","tags":["apollo"],"x-mint":{"href":"/api-reference/apollo/organization-enrich"},"x-payment-info":{"price":{"amount":"0.012000","currency":"USD","mode":"fixed"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"amount":"0.012000","currency":"USD","minimumUsd":"0.001000","mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"amount":"0.012000","currency":"USD","minimumUsd":null,"mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/apollo.organization_jobs":{"post":{"description":"Get current job postings for an organization by ID with title, location, source URL, and timestamps.\n\n**Price:** \\$12.00 per 1,000 requests (flat per request - same cost regardless of results returned).\n\n**Routing:** one lane serves this API today, so a failed attempt has nowhere to fail over to. Payment outcome follows the selected rail's settlement policy.\n\n**Catalog:** [Apollo Organization Jobs pricing and uptime](https://getanyapi.com/api/apollo/organization-jobs) - live USD price, lane routing, and measured 30-day uptime. [Every Apollo endpoint](https://getanyapi.com/api/apollo).","operationId":"apollo_organization_jobs","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"organizationId":"5e66b6381e05b4008c8331b8"},"schema":{"additionalProperties":false,"example":{"organizationId":"5e66b6381e05b4008c8331b8"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"organizationId":{"description":"Organization identifier returned by an Apollo organization endpoint.","minLength":1,"type":"string"},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true}},"required":["organizationId"],"title":"Apollo Organization Jobs input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"oneOf":[{"type":"null"},{"additionalProperties":false,"properties":{"jobs":{"description":"Current job postings.","items":{"properties":{"city":{"description":"Job city.","type":"string"},"country":{"description":"Job country.","type":"string"},"id":{"description":"Stable job posting identifier.","type":"string"},"lastSeenUtc":{"description":"UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds.","type":"number"},"postedUtc":{"description":"UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds.","type":"number"},"state":{"description":"Job state or region.","type":"string"},"title":{"description":"Job title.","type":"string"},"url":{"description":"Canonical job posting URL.","format":"uri","type":"string"}},"required":["id","title","url"],"type":"object"},"type":"array"},"limit":{"description":"Page size returned.","minimum":0,"type":"integer"},"page":{"description":"One-based page returned.","minimum":1,"type":"integer"},"total":{"description":"Total current job postings.","minimum":0,"type":"integer"},"totalPages":{"description":"Total available pages.","minimum":0,"type":"integer"}},"required":["jobs","page","limit","total","totalPages"],"type":"object"}]},"found":{"description":"Whether any current job postings were found.","type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"Apollo Organization Jobs output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"Apollo Organization Jobs","tags":["apollo"],"x-mint":{"href":"/api-reference/apollo/organization-jobs"},"x-payment-info":{"price":{"amount":"0.012000","currency":"USD","mode":"fixed"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"amount":"0.012000","currency":"USD","minimumUsd":"0.001000","mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"amount":"0.012000","currency":"USD","minimumUsd":null,"mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/apollo.organization_news":{"post":{"description":"Search news related to one or more organizations with article details, categories, and pagination totals.\n\n**Price:** \\$12.00 per 1,000 requests (flat per request - same cost regardless of results returned).\n\n**Routing:** one lane serves this API today, so a failed attempt has nowhere to fail over to. Payment outcome follows the selected rail's settlement policy.\n\n**Catalog:** [Apollo Organization News pricing and uptime](https://getanyapi.com/api/apollo/organization-news) - live USD price, lane routing, and measured 30-day uptime. [Every Apollo endpoint](https://getanyapi.com/api/apollo).","operationId":"apollo_organization_news","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"limit":3,"organizationIds":["5e66b6381e05b4008c8331b8"],"page":1},"schema":{"additionalProperties":false,"example":{"limit":3,"organizationIds":["5e66b6381e05b4008c8331b8"],"page":1},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"keywords":{"description":"Optional keywords to match in related articles.","minLength":1,"type":"string"},"limit":{"default":25,"description":"Maximum articles returned on this page.","maximum":100,"minimum":1,"type":"integer"},"organizationIds":{"description":"Organization identifiers whose related news should be returned.","items":{"minLength":1,"type":"string"},"minItems":1,"type":"array","uniqueItems":true},"page":{"default":1,"description":"One-based result page.","minimum":1,"type":"integer"},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true}},"required":["organizationIds"],"title":"Apollo Organization News input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"oneOf":[{"type":"null"},{"additionalProperties":false,"properties":{"articles":{"description":"Related news articles on this page.","items":{"properties":{"domain":{"description":"Publishing domain.","type":"string"},"eventCategories":{"description":"Detected business event categories.","items":{"type":"string"},"type":"array"},"id":{"description":"Stable article identifier.","type":"string"},"organizationIds":{"description":"Organization identifiers associated with the article.","items":{"type":"string"},"type":"array"},"publishedUtc":{"description":"UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds.","type":"number"},"snippet":{"description":"Article summary or excerpt.","type":"string"},"title":{"description":"Article title.","type":"string"},"url":{"description":"Canonical article URL.","format":"uri","type":"string"}},"required":["id","title","url"],"type":"object"},"type":"array"},"limit":{"description":"Page size returned.","minimum":0,"type":"integer"},"page":{"description":"One-based page returned.","minimum":1,"type":"integer"},"total":{"description":"Total matching articles.","minimum":0,"type":"integer"},"totalPages":{"description":"Total available pages.","minimum":0,"type":"integer"}},"required":["articles","page","limit","total","totalPages"],"type":"object"}]},"found":{"description":"Whether any related articles were found.","type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"Apollo Organization News output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"Apollo Organization News","tags":["apollo"],"x-mint":{"href":"/api-reference/apollo/organization-news"},"x-payment-info":{"price":{"amount":"0.012000","currency":"USD","mode":"fixed"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"amount":"0.012000","currency":"USD","minimumUsd":"0.001000","mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"amount":"0.012000","currency":"USD","minimumUsd":null,"mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/apollo.organizations_bulk_enrich":{"post":{"description":"Enrich up to 10 organization domains in one request with normalized company profile, industry, employee, revenue, and location data. Priced per request rather than per domain, so a full batch of 10 costs the same as a batch of 1. Results are positionally aligned with the domains you send, and a domain with no match returns null in its slot.\n\n**Price:** \\$60.00 per 1,000 requests (flat per request - same cost regardless of results returned).\n\n**Routing:** one lane serves this API today, so a failed attempt has nowhere to fail over to. Payment outcome follows the selected rail's settlement policy.\n\n**Catalog:** [Apollo Bulk Organization Enrichment pricing and uptime](https://getanyapi.com/api/apollo/organizations-bulk-enrich) - live USD price, lane routing, and measured 30-day uptime. [Every Apollo endpoint](https://getanyapi.com/api/apollo).","operationId":"apollo_organizations_bulk_enrich","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"domains":["apollo.io","openai.com"]},"schema":{"additionalProperties":false,"example":{"domains":["apollo.io","openai.com"]},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"domains":{"description":"Organization domains to enrich, with at most 10 domains per request.","items":{"minLength":1,"type":"string"},"maxItems":10,"minItems":1,"type":"array","uniqueItems":true},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true}},"required":["domains"],"title":"Apollo Bulk Organization Enrichment input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"oneOf":[{"type":"null"},{"additionalProperties":false,"properties":{"enriched":{"description":"Number of uniquely enriched organizations.","minimum":0,"type":"integer"},"missing":{"description":"Number of requested domains without a match.","minimum":0,"type":"integer"},"organizations":{"description":"Enriched organizations, positionally aligned with the requested domains: index i of this array is the result for index i of the domains input, and the array is always the same length as that input. An entry is null when the domain had no match, so a partial batch still returns every domain it did resolve.","items":{"description":"The enriched organization for the domain at this index, or null when that domain had no match.","properties":{"alexaRanking":{"description":"Alexa global traffic rank of the organization website.","type":"integer"},"annualRevenue":{"description":"Estimated annual revenue in USD.","minimum":0,"type":"number"},"annualRevenueDisplay":{"description":"Human-readable estimated annual revenue.","type":"string"},"city":{"description":"Headquarters city.","type":"string"},"country":{"description":"Headquarters country.","type":"string"},"description":{"description":"Organization summary.","type":"string"},"domain":{"description":"Primary organization domain.","type":"string"},"employeeCount":{"description":"Estimated employee count.","minimum":0,"type":"integer"},"facebookUrl":{"description":"Canonical Facebook page URL.","format":"uri","type":"string"},"foundedYear":{"description":"Year the organization was founded.","type":"integer"},"id":{"description":"Stable organization identifier.","type":"string"},"image":{"description":"Organization logo URL.","format":"uri","type":"string"},"industries":{"description":"Industries associated with the organization.","items":{"type":"string"},"type":"array"},"industry":{"description":"Primary industry.","type":"string"},"keywords":{"description":"Keywords associated with the organization.","items":{"type":"string"},"type":"array"},"latestFundingStage":{"description":"Latest disclosed funding stage.","type":"string"},"latestFundingUtc":{"description":"UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds.","type":"number"},"linkedinId":{"description":"Organization LinkedIn numeric id.","type":"string"},"linkedinUrl":{"description":"Canonical LinkedIn company URL.","format":"uri","type":"string"},"naicsCodes":{"description":"NAICS industry codes.","items":{"type":"string"},"type":"array"},"name":{"description":"Organization name.","type":"string"},"phone":{"description":"Organization phone number in international format.","type":"string"},"postalCode":{"description":"Headquarters postal code.","type":"string"},"rawAddress":{"description":"Headquarters address as one display string.","type":"string"},"sicCodes":{"description":"SIC industry codes.","items":{"type":"string"},"type":"array"},"state":{"description":"Headquarters state or region.","type":"string"},"streetAddress":{"description":"Street address.","type":"string"},"totalFunding":{"description":"Total disclosed funding in USD.","minimum":0,"type":"number"},"totalFundingDisplay":{"description":"Human-readable total disclosed funding.","type":"string"},"twitterUrl":{"description":"Canonical X or Twitter profile URL.","format":"uri","type":"string"},"websiteUrl":{"description":"Canonical organization website URL.","format":"uri","type":"string"}},"required":["id","name"],"type":["object","null"]},"type":"array"},"requested":{"description":"Number of requested domains.","minimum":0,"type":"integer"}},"required":["organizations","requested","enriched","missing"],"type":"object"}]},"found":{"description":"Whether any requested organization was enriched. False when no requested domain matched, in which case data is null.","type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"Apollo Bulk Organization Enrichment output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"Apollo Bulk Organization Enrichment","tags":["apollo"],"x-mint":{"href":"/api-reference/apollo/organizations-bulk-enrich"},"x-payment-info":{"price":{"amount":"0.060000","currency":"USD","mode":"fixed"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"amount":"0.060000","currency":"USD","minimumUsd":"0.001000","mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"amount":"0.060000","currency":"USD","minimumUsd":null,"mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/apollo.organizations_search":{"post":{"description":"Search organizations by location, employee range, industry, and keywords with normalized company records and pagination totals.\n\n**Price:** \\$12.00 per 1,000 requests (flat per request - same cost regardless of results returned).\n\n**Routing:** one lane serves this API today, so a failed attempt has nowhere to fail over to. Payment outcome follows the selected rail's settlement policy.\n\n**Catalog:** [Apollo Organization Search pricing and uptime](https://getanyapi.com/api/apollo/organizations-search) - live USD price, lane routing, and measured 30-day uptime. [Every Apollo endpoint](https://getanyapi.com/api/apollo).","operationId":"apollo_organizations_search","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"keywords":"Apollo","limit":3,"page":1},"schema":{"additionalProperties":false,"example":{"keywords":"Apollo","limit":3,"page":1},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"employeeRanges":{"description":"Employee-count ranges in Apollo notation, such as 51,200.","items":{"minLength":1,"type":"string"},"type":"array"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"industryIds":{"description":"Apollo industry tag identifiers to match.","items":{"minLength":1,"type":"string"},"type":"array"},"keywords":{"description":"Keywords to match across organization records.","minLength":1,"type":"string"},"limit":{"default":25,"description":"Maximum organizations returned on this page.","maximum":100,"minimum":1,"type":"integer"},"locations":{"description":"Headquarters locations to match.","items":{"minLength":1,"type":"string"},"type":"array"},"page":{"default":1,"description":"One-based result page.","maximum":500,"minimum":1,"type":"integer"},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true}},"title":"Apollo Organization Search input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"oneOf":[{"type":"null"},{"additionalProperties":false,"properties":{"limit":{"description":"Page size returned by the upstream database.","minimum":0,"type":"integer"},"organizations":{"description":"Organizations on this page.","items":{"properties":{"alexaRanking":{"description":"Alexa global traffic rank of the organization website.","type":"integer"},"annualRevenue":{"description":"Estimated annual revenue in USD.","minimum":0,"type":"number"},"annualRevenueDisplay":{"description":"Human-readable estimated annual revenue.","type":"string"},"domain":{"description":"Primary organization domain.","type":"string"},"facebookUrl":{"description":"Canonical Facebook page URL.","format":"uri","type":"string"},"foundedYear":{"description":"Year the organization was founded.","type":"integer"},"id":{"description":"Stable organization identifier.","type":"string"},"image":{"description":"Organization logo URL.","format":"uri","type":"string"},"linkedinId":{"description":"Organization LinkedIn numeric id.","type":"string"},"linkedinUrl":{"description":"Canonical LinkedIn company URL.","format":"uri","type":"string"},"naicsCodes":{"description":"NAICS industry codes.","items":{"type":"string"},"type":"array"},"name":{"description":"Organization name.","type":"string"},"phone":{"description":"Organization phone number in international format.","type":"string"},"sicCodes":{"description":"SIC industry codes.","items":{"type":"string"},"type":"array"},"twitterUrl":{"description":"Canonical X or Twitter profile URL.","format":"uri","type":"string"},"websiteUrl":{"description":"Canonical organization website URL.","format":"uri","type":"string"}},"required":["id","name"],"type":"object"},"type":"array"},"page":{"description":"One-based page returned.","minimum":1,"type":"integer"},"total":{"description":"Total matching organizations.","minimum":0,"type":"integer"},"totalPages":{"description":"Total available pages.","minimum":0,"type":"integer"}},"required":["organizations","page","limit","total","totalPages"],"type":"object"}]},"found":{"description":"Whether any matching organizations were found.","type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"Apollo Organization Search output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"Apollo Organization Search","tags":["apollo"],"x-mint":{"href":"/api-reference/apollo/organizations-search"},"x-payment-info":{"price":{"amount":"0.012000","currency":"USD","mode":"fixed"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"amount":"0.012000","currency":"USD","minimumUsd":"0.001000","mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"amount":"0.012000","currency":"USD","minimumUsd":null,"mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/apollo.people_search":{"post":{"description":"Search people by title, seniority, person or organization location, employee range, and keywords with normalized profile summaries.\n\n**Price:** \\$10.00 per 1,000 requests (flat per request - same cost regardless of results returned).\n\n**Routing:** one lane serves this API today, so a failed attempt has nowhere to fail over to. Payment outcome follows the selected rail's settlement policy.\n\n**Catalog:** [Apollo People Search pricing and uptime](https://getanyapi.com/api/apollo/people-search) - live USD price, lane routing, and measured 30-day uptime. [Every Apollo endpoint](https://getanyapi.com/api/apollo).","operationId":"apollo_people_search","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"limit":3,"page":1,"titles":["CEO"]},"schema":{"additionalProperties":false,"example":{"limit":3,"page":1,"titles":["CEO"]},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"employeeRanges":{"description":"Organization employee-count ranges in Apollo notation, such as 51,200.","items":{"minLength":1,"type":"string"},"type":"array"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"keywords":{"description":"Keywords to match across people records.","minLength":1,"type":"string"},"limit":{"default":25,"description":"Maximum people returned on this page.","maximum":100,"minimum":1,"type":"integer"},"organizationLocations":{"description":"Organization headquarters locations to match.","items":{"minLength":1,"type":"string"},"type":"array"},"page":{"default":1,"description":"One-based result page.","maximum":500,"minimum":1,"type":"integer"},"personLocations":{"description":"Person locations to match.","items":{"minLength":1,"type":"string"},"type":"array"},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"seniorities":{"description":"Seniority levels to match.","items":{"enum":["owner","founder","c_suite","partner","vp","head","director","manager","senior","entry"],"type":"string"},"type":"array"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"titles":{"description":"Job titles to match.","items":{"minLength":1,"type":"string"},"type":"array"}},"title":"Apollo People Search input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"oneOf":[{"type":"null"},{"additionalProperties":false,"properties":{"people":{"description":"People on this result page.","items":{"properties":{"firstName":{"description":"Person first name.","type":"string"},"hasCity":{"description":"Whether city data is available through enrichment.","type":"boolean"},"hasCountry":{"description":"Whether country data is available through enrichment.","type":"boolean"},"hasDirectPhone":{"description":"Whether direct phone data is available through asynchronous enrichment.","type":"boolean"},"hasEmail":{"description":"Whether an email is available through enrichment.","type":"boolean"},"hasState":{"description":"Whether state or region data is available through enrichment.","type":"boolean"},"id":{"description":"Stable person identifier.","type":"string"},"lastNameInitial":{"description":"Obfuscated last-name initial.","type":"string"},"lastRefreshedUtc":{"description":"UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds.","type":"number"},"organization":{"description":"Availability summary for the current organization.","properties":{"hasCity":{"description":"Whether organization city data is available.","type":"boolean"},"hasCountry":{"description":"Whether organization country data is available.","type":"boolean"},"hasEmployeeCount":{"description":"Whether organization employee-count data is available.","type":"boolean"},"hasIndustry":{"description":"Whether industry data is available.","type":"boolean"},"hasPhone":{"description":"Whether an organization phone is available.","type":"boolean"},"hasPostalCode":{"description":"Whether organization postal-code data is available.","type":"boolean"},"hasRevenue":{"description":"Whether organization revenue data is available.","type":"boolean"},"hasState":{"description":"Whether organization state data is available.","type":"boolean"},"name":{"description":"Current organization name.","type":"string"}},"type":"object"},"title":{"description":"Current job title.","type":"string"}},"required":["id","firstName"],"type":"object"},"type":"array"},"total":{"description":"Total matching people.","minimum":0,"type":"integer"}},"required":["people","total"],"type":"object"}]},"found":{"description":"Whether any matching people were found.","type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"Apollo People Search output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"Apollo People Search","tags":["apollo"],"x-mint":{"href":"/api-reference/apollo/people-search"},"x-payment-info":{"price":{"amount":"0.010000","currency":"USD","mode":"fixed"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"amount":"0.010000","currency":"USD","minimumUsd":"0.001000","mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"amount":"0.010000","currency":"USD","minimumUsd":null,"mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/apollo.person_enrich":{"post":{"description":"Enrich a person by email, LinkedIn URL, or name and organization with contact, role, location, and company data.\n\n**Price:** \\$12.00 per 1,000 requests (flat per request - same cost regardless of results returned).\n\n**Routing:** one lane serves this API today, so a failed attempt has nowhere to fail over to. Payment outcome follows the selected rail's settlement policy.\n\n**Catalog:** [Apollo Person Enrichment pricing and uptime](https://getanyapi.com/api/apollo/person-enrich) - live USD price, lane routing, and measured 30-day uptime. [Every Apollo endpoint](https://getanyapi.com/api/apollo).","operationId":"apollo_person_enrich","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"domain":"apollo.io","firstName":"Tim","lastName":"Zheng"},"schema":{"additionalProperties":false,"anyOf":[{"required":["email"]},{"required":["linkedinUrl"]},{"required":["firstName","lastName","organizationName"]},{"required":["firstName","lastName","domain"]}],"example":{"domain":"apollo.io","firstName":"Tim","lastName":"Zheng"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"domain":{"description":"Organization domain used with the person's name.","minLength":1,"type":"string"},"email":{"description":"Work or personal email used to identify the person.","format":"email","type":"string"},"firstName":{"description":"Person first name, used with lastName and an organization identifier.","minLength":1,"type":"string"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"lastName":{"description":"Person last name, used with firstName and an organization identifier.","minLength":1,"type":"string"},"linkedinUrl":{"description":"LinkedIn profile URL used to identify the person.","format":"uri","type":"string"},"organizationName":{"description":"Organization name used with the person's name.","minLength":1,"type":"string"},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true}},"title":"Apollo Person Enrichment input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"oneOf":[{"type":"null"},{"properties":{"address":{"description":"Full address as one display string.","type":"string"},"catchAll":{"description":"Domain accepts all addresses.","type":"boolean"},"city":{"description":"City.","type":"string"},"confidence":{"description":"Apollo match confidence for this person: high, medium or low.","type":"string"},"country":{"description":"Country.","type":"string"},"departments":{"description":"Current departments.","items":{"type":"string"},"type":"array"},"email":{"description":"Available work email.","format":"email","type":"string"},"emailStatus":{"description":"Verification status of the work email.","type":"string"},"employmentHistory":{"description":"Known employment history.","items":{"properties":{"current":{"description":"Whether this is a current role.","type":"boolean"},"endUtc":{"description":"UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds.","type":"number"},"id":{"description":"Stable employment record identifier.","type":"string"},"organizationId":{"description":"Organization identifier.","type":"string"},"organizationName":{"description":"Organization name.","type":"string"},"startUtc":{"description":"UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds.","type":"number"},"title":{"description":"Role title.","type":"string"}},"required":["id"],"type":"object"},"type":"array"},"facebookUrl":{"description":"Canonical Facebook profile URL.","format":"uri","type":"string"},"firstName":{"description":"Person first name.","type":"string"},"functions":{"description":"Current business functions.","items":{"type":"string"},"type":"array"},"githubUrl":{"description":"Canonical GitHub profile URL.","format":"uri","type":"string"},"headline":{"description":"Professional headline.","type":"string"},"id":{"description":"Stable person identifier.","type":"string"},"image":{"description":"Profile image URL.","format":"uri","type":"string"},"lastName":{"description":"Person last name.","type":"string"},"linkedinUrl":{"description":"Canonical LinkedIn profile URL.","format":"uri","type":"string"},"name":{"description":"Full person name.","type":"string"},"organization":{"description":"Current organization summary.","properties":{"alexaRanking":{"description":"Alexa global traffic rank of the organization website.","type":"integer"},"annualRevenue":{"description":"Estimated annual revenue in USD.","minimum":0,"type":"number"},"annualRevenueDisplay":{"description":"Human-readable estimated annual revenue.","type":"string"},"city":{"description":"Headquarters city.","type":"string"},"country":{"description":"Headquarters country.","type":"string"},"description":{"description":"Organization summary.","type":"string"},"domain":{"description":"Primary organization domain.","type":"string"},"employeeCount":{"description":"Estimated employee count.","minimum":0,"type":"integer"},"facebookUrl":{"description":"Canonical Facebook page URL.","format":"uri","type":"string"},"foundedYear":{"description":"Year the organization was founded.","type":"integer"},"id":{"description":"Stable organization identifier.","type":"string"},"image":{"description":"Organization logo URL.","format":"uri","type":"string"},"industries":{"description":"Industries associated with the organization.","items":{"type":"string"},"type":"array"},"industry":{"description":"Primary industry.","type":"string"},"keywords":{"description":"Keywords associated with the organization.","items":{"type":"string"},"type":"array"},"latestFundingStage":{"description":"Latest disclosed funding stage.","type":"string"},"latestFundingUtc":{"description":"UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds.","type":"number"},"linkedinId":{"description":"Organization LinkedIn numeric id.","type":"string"},"linkedinUrl":{"description":"Canonical LinkedIn company URL.","format":"uri","type":"string"},"naicsCodes":{"description":"NAICS industry codes.","items":{"type":"string"},"type":"array"},"name":{"description":"Organization name.","type":"string"},"phone":{"description":"Organization phone number in international format.","type":"string"},"postalCode":{"description":"Headquarters postal code.","type":"string"},"rawAddress":{"description":"Headquarters address as one display string.","type":"string"},"sicCodes":{"description":"SIC industry codes.","items":{"type":"string"},"type":"array"},"state":{"description":"Headquarters state or region.","type":"string"},"streetAddress":{"description":"Street address.","type":"string"},"technologyNames":{"description":"Technologies detected at the organization.","items":{"type":"string"},"type":"array"},"totalFunding":{"description":"Total disclosed funding in USD.","minimum":0,"type":"number"},"totalFundingDisplay":{"description":"Human-readable total disclosed funding.","type":"string"},"twitterUrl":{"description":"Canonical X or Twitter profile URL.","format":"uri","type":"string"},"websiteUrl":{"description":"Canonical organization website URL.","format":"uri","type":"string"}},"required":["id","name"],"type":"object"},"personalEmails":{"description":"Available personal email addresses, included automatically.","items":{"format":"email","type":"string"},"type":"array"},"postalCode":{"description":"Postal code.","type":"string"},"seniority":{"description":"Current seniority classification.","type":"string"},"state":{"description":"State or region.","type":"string"},"streetAddress":{"description":"Street address.","type":"string"},"subdepartments":{"description":"Current subdepartments.","items":{"type":"string"},"type":"array"},"timeZone":{"description":"IANA time-zone identifier.","type":"string"},"title":{"description":"Current job title.","type":"string"},"twitterUrl":{"description":"Canonical X or Twitter profile URL.","format":"uri","type":"string"}},"required":["id","name","firstName","lastName"],"type":"object"}]},"found":{"description":"Whether a matching person was found.","type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"Apollo Person Enrichment output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"Apollo Person Enrichment","tags":["apollo"],"x-mint":{"href":"/api-reference/apollo/person-enrich"},"x-payment-info":{"price":{"amount":"0.012000","currency":"USD","mode":"fixed"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"amount":"0.012000","currency":"USD","minimumUsd":"0.001000","mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"amount":"0.012000","currency":"USD","minimumUsd":null,"mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/appstore.reviews":{"post":{"description":"Get App Store reviews for any iOS app by app ID, in any storefront country: ratings, titles, and review text.\n\n**Price:** billed per result - \\$0.11 per 1,000 results, capped at \\$11.00 per 1,000 requests.\n\n**Routing:** 2 independent lanes are available in execution order. A failed attempt uses the next lane only when the request's payment authorizes that lane's price; the normalized schema stays the same.\n\n**Catalog:** [App Store Reviews pricing and uptime](https://getanyapi.com/api/appstore/reviews) - live USD price, lane routing, and measured 30-day uptime. [Every Appstore endpoint](https://getanyapi.com/api/appstore).","operationId":"appstore_reviews","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"appId":"389801252","country":"us","limit":3},"schema":{"additionalProperties":false,"example":{"appId":"389801252","country":"us","limit":3},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"appId":{"description":"Numeric App Store app ID, the digits at the end of the app's store URL without the 'id' prefix (e.g. 310633997).","type":"string"},"country":{"default":"us","description":"Two-letter App Store storefront country code to read reviews from.","type":"string"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"limit":{"description":"Maximum number of results to return (1-100, default 100). You are billed per result returned, so a lower limit costs less.","maximum":100,"minimum":1,"type":"integer"},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"requireFields":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Name the output fields this request must be able to return, for example `helpfulVotes` or `version`, and it is served only by a source that returns every one of them. Fields you do not name are still returned whenever the serving source has them. This can raise your price: when the cheapest source cannot return a named field, a dearer source serves, and you are quoted and charged its price. A named field can still be absent on a review that genuinely lacks it. Naming a combination that no single source returns together is refused as invalid input, with no charge.","items":{"enum":["appId","helpfulVotes","title","url","version"],"type":"string"},"type":"array","uniqueItems":true},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true}},"required":["appId"],"title":"App Store reviews input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"description":"The result wrapper, or null when nothing was found.","oneOf":[{"type":"null"},{"additionalProperties":false,"properties":{"items":{"description":"Review records: star rating, review title and text, reviewer nickname, app version, and review date. Populated whenever the provider has data for the entity.","items":{"properties":{"appId":{"description":"App Store numeric app identifier the review belongs to.","type":"string"},"author":{"description":"Reviewer nickname. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"createdUtc":{"description":"UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds. When the review was posted. Populated whenever the provider has data for the entity.","type":"number","x-anyapi-must-populate":true},"helpfulVotes":{"description":"Number of helpful votes on the review.","type":"integer"},"id":{"description":"Review identifier. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"rating":{"description":"Star rating, 1 to 5. Populated whenever the provider has data for the entity.","type":"number","x-anyapi-must-populate":true},"text":{"description":"Review body text. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"title":{"description":"Review title.","type":"string"},"url":{"description":"Public App Store page for this review, when supplied by the serving lane.","format":"uri","type":"string"},"version":{"description":"App version the review was left on.","type":"string"}},"required":["rating","text"],"type":"object"},"type":"array","x-anyapi-must-populate":true}},"required":["items"],"type":"object"}]},"found":{"description":"True when at least one review record was returned.","type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"App Store reviews output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"App Store Reviews","tags":["appstore"],"x-mint":{"href":"/api-reference/appstore/reviews"},"x-payment-info":{"price":{"currency":"USD","max":"0.011000","min":"0.000000","mode":"dynamic"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"currency":"USD","max":"0.011000","min":"0.001000","minimumUsd":"0.001000","mode":"dynamic","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"currency":"USD","max":"0.011000","min":"0.000000","minimumUsd":null,"mode":"dynamic","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/bluesky.post":{"post":{"description":"Get a single Bluesky post by URL - text, author handle, like, reply, and repost counts as clean JSON.\n\n**Price:** \\$1.20 per 1,000 requests (flat per request - same cost regardless of results returned).\n\n**Routing:** 2 independent lanes are available in execution order. A failed attempt uses the next lane only when the request's payment authorizes that lane's price; the normalized schema stays the same.\n\n**Catalog:** [Bluesky Post pricing and uptime](https://getanyapi.com/api/bluesky/post) - live USD price, lane routing, and measured 30-day uptime. [Every Bluesky endpoint](https://getanyapi.com/api/bluesky).","operationId":"bluesky_post","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"url":"https://bsky.app/profile/bsky.app/post/3l6oveex3ii2l"},"schema":{"additionalProperties":false,"example":{"url":"https://bsky.app/profile/bsky.app/post/3l6oveex3ii2l"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"url":{"description":"Bluesky post URL, e.g. \"https://bsky.app/profile/bsky.app/post/3l6oveex3ii2l\".","type":"string"}},"required":["url"],"title":"Bluesky post input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"description":"The post record, or null when nothing was found.","oneOf":[{"type":"null"},{"properties":{"authorHandle":{"description":"Handle of the account that authored the post. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"authorImage":{"description":"Avatar URL of the account that posted.","type":"string"},"authorName":{"description":"Display name of the account that posted.","type":"string"},"createdUtc":{"description":"UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds. Populated whenever the provider has data for the entity.","type":"number","x-anyapi-must-populate":true},"id":{"description":"Bluesky record key of the post.","type":"string"},"likes":{"description":"Number of likes on the post.","type":"integer"},"replies":{"description":"Number of replies to the post.","type":"integer"},"reposts":{"description":"Number of reposts of the post.","type":"integer"},"text":{"description":"The post's text content. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true}},"required":["text","authorHandle","likes","replies","reposts","createdUtc"],"type":"object"}]},"found":{"description":"True when the post was found; false when the lookup returned nothing.","type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"Bluesky post output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"Bluesky Post","tags":["bluesky"],"x-mint":{"href":"/api-reference/bluesky/post"},"x-payment-info":{"price":{"amount":"0.001200","currency":"USD","mode":"fixed"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"amount":"0.001200","currency":"USD","minimumUsd":"0.001000","mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"amount":"0.001200","currency":"USD","minimumUsd":null,"mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/bluesky.profile":{"post":{"description":"Get a Bluesky user's public profile by handle - display name, bio, follower and post counts as clean JSON.\n\n**Price:** \\$1.20 per 1,000 requests (flat per request - same cost regardless of results returned).\n\n**Routing:** 2 independent lanes are available in execution order. A failed attempt uses the next lane only when the request's payment authorizes that lane's price; the normalized schema stays the same.\n\n**Catalog:** [Bluesky Profile pricing and uptime](https://getanyapi.com/api/bluesky/profile) - live USD price, lane routing, and measured 30-day uptime. [Every Bluesky endpoint](https://getanyapi.com/api/bluesky).","operationId":"bluesky_profile","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"handle":"bsky.app"},"schema":{"additionalProperties":false,"example":{"handle":"bsky.app"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"handle":{"description":"Bluesky handle, e.g. \"bsky.app\" or \"jay.bsky.team\".","type":"string"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true}},"required":["handle"],"title":"Bluesky profile input","type":"object","x-aliases":{"username":"handle"}}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"oneOf":[{"type":"null"},{"properties":{"avatarUrl":{"description":"Avatar URL of the account.","type":"string"},"createdUtc":{"description":"UTC epoch timestamp in seconds (Unix time) the account was created. Multiply by 1000 for a JS Date in milliseconds.","type":"number"},"description":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"displayName":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"followers":{"type":"integer"},"following":{"type":"integer"},"handle":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"id":{"description":"Bluesky decentralized identifier (DID) of the account.","type":"string"},"postsCount":{"type":"integer"}},"required":["handle","displayName","description","followers","following","postsCount"],"type":"object"}]},"found":{"type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"Bluesky profile output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"Bluesky Profile","tags":["bluesky"],"x-mint":{"href":"/api-reference/bluesky/profile"},"x-payment-info":{"price":{"amount":"0.001200","currency":"USD","mode":"fixed"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"amount":"0.001200","currency":"USD","minimumUsd":"0.001000","mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"amount":"0.001200","currency":"USD","minimumUsd":null,"mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/bluesky.user_posts":{"post":{"description":"List a Bluesky account's recent posts (text, author handle, like, reply, and repost counts) by handle as clean JSON.\n\n**Price:** \\$1.20 per 1,000 requests (flat per request - same cost regardless of results returned).\n\n**Routing:** 2 independent lanes are available in execution order. A failed attempt uses the next lane only when the request's payment authorizes that lane's price; the normalized schema stays the same.\n\n**Catalog:** [Bluesky User Posts pricing and uptime](https://getanyapi.com/api/bluesky/user-posts) - live USD price, lane routing, and measured 30-day uptime. [Every Bluesky endpoint](https://getanyapi.com/api/bluesky).","operationId":"bluesky_user_posts","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"handle":"bsky.app"},"schema":{"additionalProperties":false,"example":{"handle":"bsky.app"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"handle":{"description":"Bluesky handle, e.g. \"bsky.app\" or \"jay.bsky.team\".","type":"string"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true}},"required":["handle"],"title":"Bluesky user posts input","type":"object","x-aliases":{"username":"handle"}}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"description":"Wrapper holding the posts array, or null when nothing was found.","oneOf":[{"type":"null"},{"additionalProperties":false,"properties":{"posts":{"description":"The account's recent posts. Populated whenever the provider has data for the entity.","items":{"properties":{"authorHandle":{"description":"Handle of the account that authored the post. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"authorImage":{"description":"Avatar URL of the account that posted.","type":"string"},"authorName":{"description":"Display name of the account that posted.","type":"string"},"createdUtc":{"description":"UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds. Populated whenever the provider has data for the entity.","type":"number","x-anyapi-must-populate":true},"id":{"description":"Bluesky record key of the post.","type":"string"},"likes":{"description":"Number of likes on the post.","type":"integer"},"replies":{"description":"Number of replies to the post.","type":"integer"},"reposts":{"description":"Number of reposts of the post.","type":"integer"},"text":{"description":"The post's text content. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true}},"required":["text","authorHandle","likes","replies","reposts","createdUtc"],"type":"object"},"type":"array","x-anyapi-must-populate":true}},"required":["posts"],"type":"object"}]},"found":{"description":"True when the account's posts were found; false when the lookup returned nothing.","type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"Bluesky user posts output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"Bluesky User Posts","tags":["bluesky"],"x-mint":{"href":"/api-reference/bluesky/user-posts"},"x-payment-info":{"price":{"amount":"0.001200","currency":"USD","mode":"fixed"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"amount":"0.001200","currency":"USD","minimumUsd":"0.001000","mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"amount":"0.001200","currency":"USD","minimumUsd":null,"mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/booking.search":{"post":{"description":"Search Booking.com stays by destination and dates with optional guest and room occupancy and get hotel results (name, price, review score, location) as normalized JSON.\n\n**Price:** billed per result - \\$2.20 per 1,000 requests base + \\$4.95 per 1,000 results, capped at \\$102.00 per 1,000 requests.\n\n**Routing:** one lane serves this API today, so a failed attempt has nowhere to fail over to. Payment outcome follows the selected rail's settlement policy.\n\n**Catalog:** [Booking.com Search pricing and uptime](https://getanyapi.com/api/booking/search) - live USD price, lane routing, and measured 30-day uptime. [Every Booking endpoint](https://getanyapi.com/api/booking).","operationId":"booking_search","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"adults":2,"checkIn":"2026-09-01","checkOut":"2026-09-03","limit":3,"query":"New York"},"schema":{"additionalProperties":false,"example":{"adults":2,"checkIn":"2026-09-01","checkOut":"2026-09-03","limit":3,"query":"New York"},"properties":{"adults":{"description":"Number of adult guests (e.g. 2).","minimum":1,"type":"integer"},"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"checkIn":{"description":"Check-in date in YYYY-MM-DD format (e.g. 2026-07-01). Defaults to tomorrow.","type":"string"},"checkOut":{"description":"Check-out date in YYYY-MM-DD format (e.g. 2026-07-05). Defaults to the day after check-in.","type":"string"},"children":{"description":"Number of child guests (e.g. 1).","minimum":0,"type":"integer"},"currency":{"default":"USD","description":"Currency code for prices (e.g. EUR).","type":"string"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"limit":{"description":"Maximum number of hotels to return (1-20, default 20). You are billed per result returned, so a lower limit costs less.","maximum":20,"minimum":1,"type":"integer"},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"query":{"description":"Destination city to search for stays in (e.g. Paris).","type":"string"},"rooms":{"description":"Number of rooms to book (e.g. 1).","minimum":1,"type":"integer"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true}},"required":["query"],"title":"Booking.com search input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"oneOf":[{"type":"null"},{"additionalProperties":false,"properties":{"items":{"description":"Hotel result records: name, price, review score, star rating, address, and location. Populated whenever the provider has data for the entity.","items":{"properties":{"address":{"type":"string"},"city":{"type":"string"},"country":{"description":"ISO country code.","type":"string"},"currency":{"type":"string"},"discountBadge":{"description":"Promotion label Booking.com shows on the offer (e.g. Getaway Deal).","type":"string"},"distanceFromCenter":{"description":"Distance from the city center as Booking.com phrases it.","type":"string"},"freeCancellation":{"description":"Whether the offer can be cancelled free of charge.","type":"boolean"},"id":{"description":"Booking.com hotel identifier. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"image":{"description":"Primary hotel photo URL. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"isClosed":{"description":"Whether the property is closed.","type":"boolean"},"isSoldOut":{"description":"Whether the property is sold out for the requested dates.","type":"boolean"},"latitude":{"type":"number"},"location":{"description":"Neighborhood or area label.","type":"string"},"longitude":{"type":"number"},"name":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"noPrepayment":{"description":"Whether the offer needs no payment up front.","type":"boolean"},"originalPrice":{"description":"Pre-discount total stay price in the requested currency.","type":"number"},"price":{"description":"Total stay price in the requested currency.","type":"number"},"pricePerNight":{"type":"number"},"rating":{"description":"Guest review score (0-10).","type":"number"},"reviewScore":{"description":"Guest review score (0-10).","type":"number"},"reviewScoreLabel":{"description":"Word Booking.com uses for the review score (e.g. Fabulous).","type":"string"},"reviewsCount":{"type":"integer"},"roomId":{"description":"Identifier of the room the quoted price is for.","type":"string"},"stars":{"description":"Star rating class (1-5).","type":"integer"},"thumbnail":{"description":"Small hotel photo URL.","type":"string"},"url":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true}},"required":["name","url"],"type":"object"},"type":"array","x-anyapi-must-populate":true}},"required":["items"],"type":"object"}]},"found":{"type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"Booking.com search output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"Booking.com Search","tags":["booking"],"x-mint":{"href":"/api-reference/booking/search"},"x-payment-info":{"price":{"currency":"USD","max":"0.102000","min":"0.002200","mode":"dynamic"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"currency":"USD","max":"0.102000","min":"0.002200","minimumUsd":"0.001000","mode":"dynamic","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"currency":"USD","max":"0.102000","min":"0.002200","minimumUsd":null,"mode":"dynamic","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/capterra.reviews":{"post":{"description":"Pull Capterra software reviews for any product: overall and sub-ratings, pros and cons, reviewer job title, company size, and industry as clean JSON.\n\n**Price:** billed per result - \\$5.50 per 1,000 requests base + \\$0.88 per 1,000 results, capped at \\$93.50 per 1,000 requests.\n\n**Routing:** 2 independent lanes are available in execution order. A failed attempt uses the next lane only when the request's payment authorizes that lane's price; the normalized schema stays the same.\n\n**Catalog:** [Capterra Reviews pricing and uptime](https://getanyapi.com/api/capterra/reviews) - live USD price, lane routing, and measured 30-day uptime. [Every Capterra endpoint](https://getanyapi.com/api/capterra).","operationId":"capterra_reviews","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"limit":25,"product":"https://www.capterra.com/p/135003/Slack/","sortBy":"recent"},"schema":{"additionalProperties":false,"example":{"limit":25,"product":"https://www.capterra.com/p/135003/Slack/","sortBy":"recent"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"limit":{"default":25,"description":"Maximum number of reviews to return. The minimum is 10 because the cheapest Capterra review source will not serve a smaller page. You are billed per returned result, so a lower limit costs less.","maximum":100,"minimum":10,"type":"integer"},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"product":{"description":"Capterra product URL, for example https://www.capterra.com/p/135003/Slack/. Capterra identifies a product by both its numeric id and its slug, so the full URL is required.","maxLength":300,"minLength":10,"type":"string"},"requireFields":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Name the output fields this request must be able to return, for example `ownerResponse`, and it is served only by a source that returns every one of them. Fields you do not name are still returned whenever the serving source has them. This can raise your price: when the cheapest source cannot return a named field, a dearer source serves, and you are quoted and charged its price. A named field can still be absent on a review that genuinely lacks it. Naming a combination that no single source returns together is refused as invalid input, with no charge.","items":{"enum":["alternativesConsidered","anonymous","chosenReasons","ownerResponse","reviewSource","switchedFrom","switchingReasons"],"type":"string"},"type":"array","uniqueItems":true},"sortBy":{"default":"recent","description":"Sort order for the returned reviews: newest first, most complete first, or highest or lowest rated first.","enum":["recent","complete","highest","lowest"],"type":"string"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true}},"required":["product"],"title":"Capterra Reviews input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"oneOf":[{"type":"null"},{"additionalProperties":false,"properties":{"items":{"description":"Capterra reviews for the requested product. Populated whenever the provider has data for the entity.","items":{"properties":{"alternativesConsidered":{"description":"Products the reviewer evaluated before choosing this one.","items":{"properties":{"id":{"description":"Capterra identifier for the alternative product.","type":"string"},"name":{"description":"Name of the alternative product.","type":"string"},"slug":{"description":"Capterra slug of the alternative product.","type":"string"}},"type":"object"},"type":"array"},"anonymous":{"description":"Whether the reviewer chose to stay anonymous.","type":"boolean"},"author":{"description":"Reviewer's display name. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"authorCompanySize":{"description":"Employee-count band of the reviewer's company, for example 11-50 employees. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"authorIndustry":{"description":"Industry of the reviewer's company. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"authorTitle":{"description":"Reviewer's job title. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"chosenReasons":{"description":"The reviewer's stated reason for choosing this product over the alternatives.","type":"string"},"comments":{"description":"The reviewer's overall comments about using the product. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"cons":{"description":"What the reviewer disliked about the product. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"createdUtc":{"description":"UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds. Populated whenever the provider has data for the entity.","type":"number","x-anyapi-must-populate":true},"customerSupportRating":{"description":"Reviewer's customer support rating, on a 1 to 5 scale. Populated whenever the provider has data for the entity.","type":"number","x-anyapi-must-populate":true},"easeOfUseRating":{"description":"Reviewer's ease of use rating, on a 1 to 5 scale. Populated whenever the provider has data for the entity.","type":"number","x-anyapi-must-populate":true},"functionalityRating":{"description":"Reviewer's functionality rating, on a 1 to 5 scale. Populated whenever the provider has data for the entity.","type":"number","x-anyapi-must-populate":true},"id":{"description":"Capterra identifier for the review. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"incentivized":{"description":"Whether the reviewer received an incentive for the review. Populated whenever the provider has data for the entity.","type":"boolean","x-anyapi-must-populate":true},"ownerResponse":{"description":"The vendor's public reply to the review.","type":"string"},"productUrl":{"description":"Canonical Capterra URL for the reviewed product. Capterra has no per-review permalink; anchor to a review with productUrl, then # and the review id. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"pros":{"description":"What the reviewer liked about the product. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"rating":{"description":"Overall star rating the reviewer gave, on a 1 to 5 scale. Populated whenever the provider has data for the entity.","type":"number","x-anyapi-must-populate":true},"recommendationScore":{"description":"How likely the reviewer is to recommend the product, on a 0 to 10 scale. Populated whenever the provider has data for the entity.","type":"number","x-anyapi-must-populate":true},"reviewSource":{"description":"Capterra's explanation of how the review was collected and whether any incentive was offered.","type":"string"},"sourceSite":{"description":"Which site in Capterra's review network the review was written on, for example Capterra, GetApp, or Software Advice. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"switchedFrom":{"description":"Products the reviewer switched away from to this one.","items":{"properties":{"id":{"description":"Capterra identifier for the previous product.","type":"string"},"name":{"description":"Name of the previous product.","type":"string"},"slug":{"description":"Capterra slug of the previous product.","type":"string"}},"type":"object"},"type":"array"},"switchingReasons":{"description":"The reviewer's stated reason for switching to this product.","type":"string"},"timeUsedProduct":{"description":"How long the reviewer has used the product, for example 2+ years. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"title":{"description":"Headline the reviewer gave the review. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"validated":{"description":"Whether Capterra validated the reviewer's identity. Populated whenever the provider has data for the entity.","type":"boolean","x-anyapi-must-populate":true},"valueForMoneyRating":{"description":"Reviewer's value for money rating, on a 1 to 5 scale. Populated whenever the provider has data for the entity.","type":"number","x-anyapi-must-populate":true},"verifiedLinkedIn":{"description":"Whether the reviewer verified their identity through LinkedIn. Populated whenever the provider has data for the entity.","type":"boolean","x-anyapi-must-populate":true}},"required":["id","rating"],"type":"object"},"type":"array","x-anyapi-must-populate":true}},"required":["items"],"type":"object"}]},"found":{"type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"Capterra Reviews output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"Capterra Reviews","tags":["capterra"],"x-mint":{"href":"/api-reference/capterra/reviews"},"x-payment-info":{"price":{"currency":"USD","max":"0.093500","min":"0.005500","mode":"dynamic"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"currency":"USD","max":"0.093500","min":"0.005500","minimumUsd":"0.001000","mode":"dynamic","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"currency":"USD","max":"0.093500","min":"0.005500","minimumUsd":null,"mode":"dynamic","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/chatgpt.search":{"post":{"description":"Ask ChatGPT a web-grounded question and receive an answer with source citations. ChatGPT composes each answer per request, so the same prompt returns different wording and a different source set.\n\n**Price:** \\$1.80 per 1,000 requests (flat per request - same cost regardless of results returned).\n\n**Routing:** 2 independent lanes are available in execution order. A failed attempt uses the next lane only when the request's payment authorizes that lane's price; the normalized schema stays the same.\n\n**Catalog:** [ChatGPT Search pricing and uptime](https://getanyapi.com/api/chatgpt/search) - live USD price, lane routing, and measured 30-day uptime. [Every Chatgpt endpoint](https://getanyapi.com/api/chatgpt).","operationId":"chatgpt_search","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"prompt":"What is AnyAPI at getanyapi.com, and what does it offer?"},"schema":{"additionalProperties":false,"example":{"prompt":"What is AnyAPI at getanyapi.com, and what does it offer?"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"country":{"default":"US","description":"ISO-3166 alpha-2 country to ask from, e.g. US, GB, DE. ChatGPT localizes both the pages it retrieves and the answer it writes, so this is the difference between what a US buyer and a UK buyer are told.","pattern":"^[A-Z]{2}$","type":"string"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"prompt":{"description":"Question or research prompt for ChatGPT to answer using web search.","maxLength":2000,"minLength":1,"type":"string"},"requireAds":{"default":false,"description":"Serve only from a source that can return sponsored placements shown with the answer. One source currently qualifies, so the request cannot fall back when it is unavailable.","type":"boolean"},"requireEntities":{"default":false,"description":"Serve only from a source that can return brands and other named entities recognized in the answer. One source currently qualifies, so the request cannot fall back when it is unavailable.","type":"boolean"},"requireFields":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Name the output fields this request must be able to return, for example `cited` or `price`, and it is served only by a source that returns every one of them. Fields you do not name are still returned whenever the serving source has them. This can raise your price: when the cheapest source cannot return a named field, a dearer source serves, and you are quoted and charged its price. A named field can still be absent on a result that genuinely lacks it. Naming a combination that no single source returns together is refused as invalid input, with no charge.","items":{"enum":["address","ads","advertiserName","advertiserUrl","answerPosition","category","cited","createdUtc","currency","description","domain","entities","image","merchants","model","name","phone","places","position","price","prompt","rating","reviewCount","searchQueries","searchResults","shoppingCards","snippet","title","url","webSearchTriggered","websiteUrl"],"type":"string"},"type":"array","uniqueItems":true},"requirePlaces":{"default":false,"description":"Serve only from a source that can return places shown with the answer. Leaving this off still returns places whenever the source that answered can. Turning it on selects the single source that guarantees them, which costs more and has nothing to fall back to if it is unavailable.","type":"boolean"},"requireShoppingCards":{"default":false,"description":"Serve only from a source that can return shopping cards shown with the answer. Leaving this off still returns shopping cards whenever the source that answered can. Turning it on selects the single source that guarantees them, which costs more and has nothing to fall back to if it is unavailable.","type":"boolean"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"webSearch":{"default":"force","description":"Whether to insist ChatGPT browses the web. force instructs it to search and is the default; auto lets ChatGPT decide, which is cheaper and answers from memory roughly half the time. Check webSearchTriggered for what actually happened - an answer written without a search is not web-grounded.","enum":["force","auto"],"type":"string"}},"required":["prompt"],"title":"ChatGPT Search input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"description":"The normalized answer and citations, or null when no answer was found.","oneOf":[{"type":"null"},{"additionalProperties":false,"properties":{"ads":{"description":"Sponsored placements ChatGPT displayed with the answer. null means the source that answered cannot report ads; an empty array means none were shown.","items":{"properties":{"advertiserName":{"description":"Advertiser name.","type":["string","null"]},"advertiserUrl":{"description":"Advertiser URL, tracking parameters stripped.","format":"uri","type":["string","null"]},"domain":{"description":"Advertised domain.","type":["string","null"]},"image":{"description":"Sponsored image URL.","format":"uri","type":["string","null"]},"snippet":{"description":"Sponsored placement text.","type":["string","null"]},"title":{"description":"Sponsored placement title.","type":"string"},"url":{"description":"Sponsored destination URL, tracking parameters stripped.","format":"uri","type":["string","null"]}},"required":["title"],"type":"object"},"type":["array","null"]},"answer":{"description":"The web-grounded answer as text. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"answerMarkdown":{"description":"The answer in Markdown when the engine returns a Markdown rendering, otherwise the same text as answer. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"citations":{"description":"Sources cited by the answer. Populated whenever the provider has data for the entity.","items":{"properties":{"answerPosition":{"description":"One-based answer section where ChatGPT cited this source. null means the source that answered cannot report the position.","type":["integer","null"]},"title":{"description":"Source page title when supplied by the search engine.","type":"string"},"url":{"description":"Source page URL.","format":"uri","type":"string"}},"required":["title","url"],"type":"object"},"type":"array","x-anyapi-must-populate":true},"createdUtc":{"description":"UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds. null means the source that answered does not report when it answered.","type":["number","null"]},"entities":{"description":"Brands and other named entities recognized in the answer. null means the source that answered cannot report them; an empty array means none were identified.","items":{"properties":{"category":{"description":"Entity category.","type":["string","null"]},"domain":{"description":"Entity domain.","type":["string","null"]},"title":{"description":"Entity name.","type":"string"},"url":{"description":"Entity URL, tracking parameters stripped.","format":"uri","type":["string","null"]}},"required":["title"],"type":"object"},"type":["array","null"]},"model":{"description":"The ChatGPT model that produced the answer. null means the source that answered does not report it, which is not the same as an unknown model.","type":["string","null"]},"places":{"description":"Places and local businesses ChatGPT displayed with the answer. null means the source that answered cannot report them; an empty array means none were shown.","items":{"properties":{"address":{"description":"Place address as displayed.","type":["string","null"]},"category":{"description":"Place category shown by ChatGPT.","type":["string","null"]},"description":{"description":"Place description shown by ChatGPT.","type":["string","null"]},"name":{"description":"Place or business name.","type":"string"},"phone":{"description":"Place phone number as displayed.","type":["string","null"]},"position":{"description":"One-based position in the places block.","type":"integer"},"rating":{"description":"Place rating when the source reports one.","type":["number","null"]},"reviewCount":{"description":"Number of reviews behind the displayed rating.","type":["integer","null"]},"websiteUrl":{"description":"Place website URL, tracking parameters stripped.","format":"uri","type":["string","null"]}},"required":["name"],"type":"object"},"type":["array","null"]},"prompt":{"description":"The prompt answered by ChatGPT.","type":"string"},"searchQueries":{"description":"The web search queries ChatGPT ran to ground its answer. null means the source that answered cannot report them; an empty array means it searched with none recorded.","items":{"type":"string"},"type":["array","null"]},"searchResults":{"description":"Pages ChatGPT retrieved while answering. A SUPERSET of citations: a page can be read and not cited. null means the source that answered cannot report them.","items":{"properties":{"cited":{"description":"Whether this retrieved page made it into citations. false means ChatGPT read the page and chose not to cite it, which is a different and more actionable fact than the page being absent.","type":"boolean"},"title":{"description":"Title of the retrieved page, empty when the source did not send one.","type":"string"},"url":{"description":"Canonical URL of the retrieved page, tracking parameters stripped.","format":"uri","type":"string"}},"type":"object"},"type":["array","null"]},"shoppingCards":{"description":"Products ChatGPT displayed with the answer. null means the source that answered cannot report shopping cards; an empty array means none were shown.","items":{"properties":{"currency":{"description":"ISO 4217 currency code when the source reports it.","type":["string","null"]},"description":{"description":"Product description shown on the shopping card.","type":["string","null"]},"image":{"description":"Product image URL.","format":"uri","type":["string","null"]},"merchants":{"description":"Merchant name shown on the shopping card.","type":["string","null"]},"price":{"description":"Displayed product price as a number when the source reports one.","type":["number","null"]},"rating":{"description":"Product rating when the source reports one.","type":["number","null"]},"title":{"description":"Product name shown by ChatGPT.","type":"string"},"url":{"description":"Product page URL, tracking parameters stripped.","format":"uri","type":["string","null"]}},"required":["title"],"type":"object"},"type":["array","null"]},"webSearchTriggered":{"description":"Whether ChatGPT actually ran a web search before answering. ChatGPT decides this per session, and an answer written without one is not web-grounded. null means the source that answered cannot report it, which is not the same as false.","type":["boolean","null"]}},"required":["prompt","answer","answerMarkdown","citations"],"type":"object"}]},"found":{"description":"Whether ChatGPT returned a web-grounded answer.","type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"ChatGPT Search output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"ChatGPT Search","tags":["chatgpt"],"x-mint":{"href":"/api-reference/chatgpt/search"},"x-payment-info":{"price":{"amount":"0.001800","currency":"USD","mode":"fixed"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"amount":"0.001800","currency":"USD","minimumUsd":"0.001000","mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"amount":"0.001800","currency":"USD","minimumUsd":null,"mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/coinmarketcap.listings":{"post":{"description":"Get the current top cryptocurrencies from CoinMarketCap (rank, price, market cap, volume, and 24h change) as normalized JSON.\n\n**Price:** billed per result - \\$1.98 per 1,000 results, capped at \\$49.50 per 1,000 requests.\n\n**Routing:** one lane serves this API today, so a failed attempt has nowhere to fail over to. Payment outcome follows the selected rail's settlement policy.\n\n**Catalog:** [CoinMarketCap Listings pricing and uptime](https://getanyapi.com/api/coinmarketcap/listings) - live USD price, lane routing, and measured 30-day uptime. [Every Coinmarketcap endpoint](https://getanyapi.com/api/coinmarketcap).","operationId":"coinmarketcap_listings","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"limit":5},"schema":{"additionalProperties":false,"example":{"limit":5},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"limit":{"description":"Maximum number of results to return (1-25, default 25). You are billed per result returned, so a lower limit costs less.","maximum":25,"minimum":1,"type":"integer"},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true}},"title":"CoinMarketCap listings input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"oneOf":[{"type":"null"},{"additionalProperties":false,"properties":{"items":{"description":"Cryptocurrency listing records: rank, name, symbol, price, market cap, trading volume, and 24h price change. Populated whenever the provider has data for the entity.","items":{"properties":{"active":{"description":"Whether CoinMarketCap still tracks the coin as active.","type":"boolean"},"ath":{"description":"All-time high price in USD.","type":"number"},"atl":{"description":"All-time low price in USD.","type":"number"},"circulatingSupply":{"description":"Circulating supply (coin count).","type":"number"},"createdUtc":{"description":"When CoinMarketCap first listed the coin. UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds.","type":"number"},"dominance":{"description":"Share of total crypto market capitalization, in percent.","type":"number"},"fullyDilutedMarketCap":{"description":"Fully diluted market capitalization in USD (total supply at the current price).","type":"number"},"high24h":{"description":"24h high price in USD.","type":"number"},"id":{"description":"CoinMarketCap identifier. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"lastUpdated":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"low24h":{"description":"24h low price in USD.","type":"number"},"marketCap":{"description":"Market capitalization in USD.","type":"number"},"marketPairCount":{"description":"Number of exchange market pairs trading this coin.","type":"integer"},"name":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"percentChange1h":{"description":"Price change over the last hour, in percent.","type":"number"},"percentChange1y":{"description":"Price change over the last year, in percent.","type":"number"},"percentChange24h":{"description":"Price change over the last 24 hours, in percent.","type":"number"},"percentChange30d":{"description":"Price change over the last 30 days, in percent.","type":"number"},"percentChange60d":{"description":"Price change over the last 60 days, in percent.","type":"number"},"percentChange7d":{"description":"Price change over the last 7 days, in percent.","type":"number"},"percentChange90d":{"description":"Price change over the last 90 days, in percent.","type":"number"},"percentChangeYtd":{"description":"Price change year to date, in percent.","type":"number"},"price":{"description":"Latest price in USD.","type":"number"},"selfReportedCirculatingSupply":{"description":"Circulating supply as reported by the project itself (coin count).","type":"number"},"slug":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"symbol":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"totalSupply":{"description":"Total supply (coin count).","type":"number"},"turnover":{"description":"24h trading volume divided by market capitalization.","type":"number"},"volume24h":{"description":"24h trading volume in USD.","type":"number"},"volume30d":{"description":"30-day trading volume in USD.","type":"number"},"volume7d":{"description":"7-day trading volume in USD.","type":"number"}},"required":["id","name","symbol"],"type":"object"},"type":"array","x-anyapi-must-populate":true}},"required":["items"],"type":"object"}]},"found":{"type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"CoinMarketCap listings output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"CoinMarketCap Listings","tags":["coinmarketcap"],"x-mint":{"href":"/api-reference/coinmarketcap/listings"},"x-payment-info":{"price":{"currency":"USD","max":"0.049500","min":"0.000000","mode":"dynamic"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"currency":"USD","max":"0.049500","min":"0.001000","minimumUsd":"0.001000","mode":"dynamic","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"currency":"USD","max":"0.049500","min":"0.000000","minimumUsd":null,"mode":"dynamic","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/company.research":{"post":{"description":"Research a company from one domain, name, or email and return a cross-checked dossier: what it does, how it talks, who it competes with, its firmographics, its hiring and news signal, and its social presence.\n\n**Price:** \\$443.38 per 1,000 requests (flat per request - same cost regardless of results returned).\n\n**Routing:** one lane serves this API today, so a failed attempt has nowhere to fail over to. Payment outcome follows the selected rail's settlement policy.\n\n**Catalog:** [Company Research pricing and uptime](https://getanyapi.com/api/company/research) - live USD price, lane routing, and measured 30-day uptime. [Every Company endpoint](https://getanyapi.com/api/company).\n\n**How it works:** AnyAPI researches the company itself rather than routing to a single upstream. It resolves the identifier to one apex domain, reads the company's own site, then runs six independent parts: profile, voice, competitors, firmographics, signal and presence. Each part buys only the data it needs from the AnyAPI catalog, cross-checks claims across sources, and marks a value verified only when independent sources agree. Parts run and fail independently, so a dossier can come back partial. Results are cached per company and per part, so a repeat request reuses fresh work instead of re-buying it.","operationId":"company_research","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Required. Owns one durable Request and provider dispatch. Active duplicates return the owning Request; completed successes replay without another charge; different semantics return 409.","in":"header","name":"Idempotency-Key","required":true,"schema":{"maxLength":255,"minLength":1,"type":"string"}},{"description":"Use respond-async for immediate acceptance or wait=N to wait up to 90 seconds. The default wait is 10 seconds.","in":"header","name":"Prefer","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"domain":"stripe.com","maxAgeDays":7},"schema":{"additionalProperties":false,"description":"Supply exactly one company identifier: domain, name, or email. Every research part runs on every call.","example":{"domain":"stripe.com","maxAgeDays":7},"oneOf":[{"required":["domain"]},{"required":["name"]},{"required":["email"]}],"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"domain":{"description":"Company website domain, for example stripe.com. Mutually exclusive with name and email.","minLength":1,"type":"string"},"email":{"description":"Work email address whose domain identifies the company. Free and disposable providers are rejected. Mutually exclusive with domain and name.","minLength":1,"type":"string"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"maxAgeDays":{"default":7,"description":"How old a cached part may be and still be served. 0 always forces a fresh run. Defaults to 7 days when omitted.","minimum":0,"type":"integer"},"name":{"description":"Company name, resolved to a domain before the run starts. Mutually exclusive with domain and email.","minLength":1,"type":"string"},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true}},"title":"Company Research input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"description":"The company dossier: one payload per research part, keyed by part name. Parts run and fail independently, so any part may be absent and none is required. An absent part is one that did not complete, never a company with no such data.","properties":{"competitors":{"description":"Companies the run admitted as rivals or adjacent players, each grounded in a page it read.","properties":{"competitors":{"$ref":"#/components/schemas/company_research_competitorListClaim","description":"The admitted competitor set."},"positioningSummary":{"$ref":"#/components/schemas/company_research_stringClaim","description":"One-line positioning read across the admitted competitors."}},"required":["competitors","positioningSummary"],"type":"object"},"firmographics":{"description":"Company facts reconciled across enrichment providers. A value backed by two agreeing providers is reported as verified.","properties":{"founded":{"$ref":"#/components/schemas/company_research_integerClaim","description":"Year the company was founded. 0 when no provider supplied one."},"funding":{"$ref":"#/components/schemas/company_research_fundingClaim","description":"Disclosed funding, reconciled across providers."},"headcount":{"$ref":"#/components/schemas/company_research_integerClaim","description":"Employee count. 0 when no provider supplied one."},"keyPeople":{"$ref":"#/components/schemas/company_research_keyPersonListClaim","description":"Leadership records, masked to a first name and a last initial."},"techStack":{"$ref":"#/components/schemas/company_research_stringListClaim","description":"Technologies detected at the company."}},"required":["founded","headcount","funding","techStack","keyPeople"],"type":"object"},"presence":{"description":"The company's published social accounts and the public places it is discussed.","properties":{"accounts":{"$ref":"#/components/schemas/company_research_platformPresenceListClaim","description":"One entry per platform the company publishes on."},"communities":{"$ref":"#/components/schemas/company_research_communityListClaim","description":"Public communities where matching company discussion appeared."}},"required":["accounts","communities"],"type":"object"},"profile":{"description":"What the company does, synthesized from its own site, plus the clipped crawl corpus the other crawl-derived parts reuse.","properties":{"audiences":{"$ref":"#/components/schemas/company_research_stringListClaim","description":"Audiences the company addresses on its site."},"basics":{"$ref":"#/components/schemas/company_research_companyBasics"},"brandAliases":{"$ref":"#/components/schemas/company_research_stringListClaim","description":"Other names the company trades under."},"corpus":{"$ref":"#/components/schemas/company_research_crawlCorpus"},"description":{"$ref":"#/components/schemas/company_research_stringClaim","description":"Plain description of what the company sells."},"exclusions":{"$ref":"#/components/schemas/company_research_stringClaim","description":"Who or what the company states it is not for."},"howItWorks":{"$ref":"#/components/schemas/company_research_stringClaim","description":"How the product or service works in practice."},"icp":{"$ref":"#/components/schemas/company_research_icpListClaim","description":"Buyer segments synthesized from the crawl."},"pricingModel":{"$ref":"#/components/schemas/company_research_stringClaim","description":"How the company charges, as its own pages describe it."},"problems":{"$ref":"#/components/schemas/company_research_stringListClaim","description":"Problems the company says it solves."},"targetMarkets":{"$ref":"#/components/schemas/company_research_stringListClaim","description":"Markets, industries, or regions the company targets."},"useCases":{"$ref":"#/components/schemas/company_research_stringListClaim","description":"Concrete jobs customers hire the company for."},"valueProp":{"$ref":"#/components/schemas/company_research_stringClaim","description":"The value the company promises its buyer."}},"required":["basics","description","howItWorks","valueProp","useCases","audiences","icp","problems","exclusions","targetMarkets","brandAliases","pricingModel","corpus"],"type":"object"},"signal":{"description":"What the company is doing right now: the roles it is hiring for and the stories written about it.","properties":{"articles":{"$ref":"#/components/schemas/company_research_newsArticleListClaim","description":"Recent stories, deduplicated by article URL."},"openRoles":{"$ref":"#/components/schemas/company_research_openRoleListClaim","description":"Current job postings, deduplicated by posting URL."}},"required":["openRoles","articles"],"type":"object"},"voice":{"description":"The company's writing voice, inferred from the same first-party crawl.","properties":{"taglines":{"$ref":"#/components/schemas/company_research_stringListClaim","description":"Taglines copied verbatim from the crawl. A tagline appears here only when its exact text was found on a crawled page."},"tone":{"$ref":"#/components/schemas/company_research_stringClaim","description":"One concise description of how the company writes."},"vocabulary":{"$ref":"#/components/schemas/company_research_stringListClaim","description":"Words and phrases the company favors, as they appear in the crawl."}},"required":["tone","taglines","vocabulary"],"type":"object"}},"type":"object"},"found":{"description":"True when at least one part produced a payload.","type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"Company Research output","type":"object","x-anyapi-beta":true,"x-anyapi-how-it-works":"AnyAPI researches the company itself rather than routing to a single upstream. It resolves the identifier to one apex domain, reads the company's own site, then runs six independent parts: profile, voice, competitors, firmographics, signal and presence. Each part buys only the data it needs from the AnyAPI catalog, cross-checks claims across sources, and marks a value verified only when independent sources agree. Parts run and fail independently, so a dossier can come back partial. Results are cached per company and per part, so a repeat request reuses fresh work instead of re-buying it."},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}}}},"202":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RequestSnapshot"}}},"description":"Accepted as a durable Request; poll Location after Retry-After.","headers":{"Location":{"schema":{"type":"string"}},"Preference-Applied":{"schema":{"enum":["respond-async"],"type":"string"}},"Retry-After":{"schema":{"type":"integer"}},"X-Anyapi-Request-Id":{"schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}}},"description":"Insufficient wallet balance or spend cap. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization."},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."},"504":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The durable Request reached its execution deadline; use X-Anyapi-Request-Id for status and support."}},"summary":"Company Research","tags":["company"],"x-anyapi-availability":"beta","x-mint":{"href":"/api-reference/company/research"}}},"/v1/run/company_enrichment.crustdata_v3":{"post":{"description":"Enrich a company by domain, name, LinkedIn URL, or Crustdata identifier.\n\n**Price:** \\$48.00 per 1,000 requests (flat per request - same cost regardless of results returned).\n\n**Routing:** one lane serves this API today, so a failed attempt has nowhere to fail over to. Payment outcome follows the selected rail's settlement policy.\n\n**Catalog:** [Company Enrichment - Crustdata v3 pricing and uptime](https://getanyapi.com/api/company-enrichment/crustdata-v3) - live USD price, lane routing, and measured 30-day uptime. [Every Company_enrichment endpoint](https://getanyapi.com/api/company-enrichment).","operationId":"company_enrichment_crustdata_v3","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"companyDomain":"posthog.com"},"schema":{"additionalProperties":false,"anyOf":[{"required":["companyDomain"]},{"required":["companyName"]},{"required":["companyLinkedinUrl"]},{"required":["companyId"]}],"example":{"companyDomain":"posthog.com"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"companyDomain":{"minLength":1,"type":"string"},"companyId":{"type":["string","integer"]},"companyLinkedinUrl":{"format":"uri","type":"string"},"companyName":{"minLength":1,"type":"string"},"exactMatch":{"type":"boolean"},"fields":{"oneOf":[{"minLength":1,"type":"string"},{"items":{"minLength":1,"type":"string"},"minItems":1,"type":"array"}]},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true}},"title":"Company Enrichment - Crustdata v3 input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"oneOf":[{"type":"null"},{"properties":{"acquisitionStatus":{"description":"Acquisition status, when the company has been acquired.","type":"string"},"companyId":{"description":"Crustdata identifier for the company, accepted back as the companyId input.","type":"string"},"companyType":{"description":"Company type, e.g. Privately Held or Public Company.","type":"string"},"crunchbaseCategories":{"description":"Crunchbase category tags.","items":{"type":"string"},"type":"array"},"crunchbaseUrl":{"description":"Crunchbase profile URL.","format":"uri","type":"string"},"crunchbaseUuid":{"description":"Crunchbase organization UUID.","type":"string"},"description":{"description":"Company description from its LinkedIn page.","type":"string"},"domain":{"description":"Primary website domain, or null when the upstream holds none for this company.","type":["string","null"]},"domains":{"description":"All domains associated with the company.","items":{"type":"string"},"type":"array"},"employeeCount":{"description":"Latest observed employee count.","type":"integer"},"employeeGrowthAbsolute":{"description":"Net headcount change over trailing windows.","properties":{"mom":{"description":"Change over the last month.","type":"integer"},"qoq":{"description":"Change over the last quarter.","type":"integer"},"sixMonths":{"description":"Change over the last six months.","type":"integer"},"twoYears":{"description":"Change over the last two years.","type":"integer"},"yoy":{"description":"Change over the last twelve months.","type":"integer"}},"type":"object"},"employeeGrowthPercent":{"description":"Percent headcount change over trailing windows.","properties":{"mom":{"description":"Change over the last month.","type":"number"},"qoq":{"description":"Change over the last quarter.","type":"number"},"sixMonths":{"description":"Change over the last six months.","type":"number"},"twoYears":{"description":"Change over the last two years.","type":"number"},"yoy":{"description":"Change over the last twelve months.","type":"number"}},"type":"object"},"employeeRange":{"description":"Employee count band, e.g. 51-200.","type":"string"},"estimatedRevenueHigherUsd":{"description":"Upper bound of estimated annual revenue in USD.","type":"integer"},"estimatedRevenueLowerUsd":{"description":"Lower bound of estimated annual revenue in USD.","type":"integer"},"fiscalYearEnd":{"description":"Fiscal year end.","type":"string"},"foundedUtc":{"description":"UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds. Founding date of the company.","type":"integer"},"foundedYear":{"description":"Year the company was founded.","type":"integer"},"fullDomainMatch":{"description":"True when the matched company's domain is an exact match for the requested one.","type":"boolean"},"headcountByFunctionTimeseries":{"description":"Headcount history broken down by region and by job function. Untyped passthrough: the whole nested structure ships exactly as Crustdata returns it, including its raw snake_case grouping keys (GEO_REGION, CURRENT_FUNCTION) and its string observation dates rather than epoch seconds, because the shape cannot be expressed in the canonical field grammar."},"headcountByRegion":{"additionalProperties":{"type":"number"},"description":"Employee count per region, keyed by LinkedIn region name.","type":"object"},"headcountByRegionPercent":{"additionalProperties":{"type":"number"},"description":"Share of employees per region as a percent, keyed by LinkedIn region name.","type":"object"},"headcountByRole":{"additionalProperties":{"type":"number"},"description":"Employee count per job function, keyed by LinkedIn function name.","type":"object"},"headcountByRolePercent":{"additionalProperties":{"type":"number"},"description":"Share of employees per job function as a percent, keyed by LinkedIn function name.","type":"object"},"headcountByRoleSixMonthsGrowthPercent":{"description":"Six-month percent headcount change per job function, exactly as Crustdata returns it. Untyped passthrough: the structure ships verbatim and is not validated, because it was empty for the company we captured."},"headcountByRoleYoyGrowthPercent":{"description":"Year-over-year percent headcount change per job function, exactly as Crustdata returns it. Untyped passthrough: the structure ships verbatim and is not validated, because it was empty for the company we captured."},"headcountBySkill":{"additionalProperties":{"type":"number"},"description":"Employee count per listed skill, keyed by skill name.","type":"object"},"headcountBySkillPercent":{"additionalProperties":{"type":"number"},"description":"Share of employees per listed skill as a percent, keyed by skill name.","type":"object"},"headcountTimeseries":{"description":"Historical employee-count observations, oldest first.","items":{"properties":{"dateUtc":{"description":"UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds. Observation date.","type":"integer"},"employeeCount":{"description":"Employee count observed on that date.","type":"integer"}},"type":"object"},"type":"array"},"hqCountry":{"description":"Country of the headquarters.","type":"string"},"hqState":{"description":"State or province of the headquarters.","type":"string"},"hqStreetAddress":{"description":"Headquarters street address. Crustdata returns the same string as location for most companies.","type":"string"},"image":{"description":"Company logo URL.","format":"uri","type":"string"},"industries":{"description":"All LinkedIn industries listed for the company.","items":{"type":"string"},"type":"array"},"industry":{"description":"Primary LinkedIn industry.","type":"string"},"ipoUtc":{"description":"UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds. Date the company went public.","type":"integer"},"largestHeadcountCountry":{"description":"Country holding the largest share of employees.","type":"string"},"linkedinCompanyId":{"description":"LinkedIn's own numeric identifier for the company page.","type":"string"},"linkedinLogoUrl":{"description":"Company logo URL as LinkedIn serves it, including the signed expiry query LinkedIn requires to serve the file. The image field carries Crustdata's cached copy of the same logo, which does not expire.","format":"uri","type":"string"},"linkedinProfileName":{"description":"Company name as it appears on the LinkedIn page. Usually the same value as name; Crustdata returns both.","type":"string"},"linkedinUrl":{"description":"LinkedIn company page URL.","format":"uri","type":"string"},"location":{"description":"Headquarters location.","type":"string"},"naics":{"description":"Primary NAICS industry classification.","properties":{"code":{"description":"Primary NAICS code.","type":"string"},"industry":{"description":"NAICS industry name.","type":"string"},"industryGroup":{"description":"NAICS industry group name.","type":"string"},"sector":{"description":"NAICS sector name.","type":"string"},"subSector":{"description":"NAICS sub-sector name.","type":"string"},"year":{"description":"NAICS revision year the code belongs to.","type":"integer"}},"type":"object"},"name":{"description":"Company name.","type":"string"},"regionMetrics":{"description":"Regions bucketed by the share of headcount they represent. Restates headcountByRegionPercent as bands.","properties":{"share0To10Percent":{"description":"Comma separated regions that each account for 0 to 10 percent of headcount.","type":"string"},"share11To30Percent":{"description":"Comma separated regions that each account for 11 to 30 percent of headcount.","type":"string"},"share31To50Percent":{"description":"Comma separated regions that each account for 31 to 50 percent of headcount.","type":"string"},"share51To70Percent":{"description":"Comma separated regions that each account for 51 to 70 percent of headcount.","type":"string"},"share71To100Percent":{"description":"Comma separated regions that each account for 71 to 100 percent of headcount.","type":"string"}},"type":"object"},"roleMetrics":{"description":"Job functions bucketed by the share of headcount they represent. Restates headcountByRolePercent as bands.","properties":{"allRoles":{"description":"Every job function present at the company, comma separated.","type":"string"},"share0To10Percent":{"description":"Comma separated job functions that each account for 0 to 10 percent of headcount.","type":"string"},"share11To30Percent":{"description":"Comma separated job functions that each account for 11 to 30 percent of headcount.","type":"string"},"share31To50Percent":{"description":"Comma separated job functions that each account for 31 to 50 percent of headcount.","type":"string"},"share51To70Percent":{"description":"Comma separated job functions that each account for 51 to 70 percent of headcount.","type":"string"},"share71To100Percent":{"description":"Comma separated job functions that each account for 71 to 100 percent of headcount.","type":"string"}},"type":"object"},"sicCodes":{"description":"SIC industry classifications assigned to the company.","items":{"properties":{"code":{"description":"SIC code.","type":"string"},"industry":{"description":"SIC industry name.","type":"string"},"year":{"description":"SIC revision year the code belongs to.","type":"integer"}},"type":"object"},"type":"array"},"skillMetrics":{"description":"Skills bucketed by the share of headcount that lists them. Restates headcountBySkillPercent as bands.","properties":{"share0To10Percent":{"description":"Comma separated skills that each account for 0 to 10 percent of headcount.","type":"string"},"share11To30Percent":{"description":"Comma separated skills that each account for 11 to 30 percent of headcount.","type":"string"},"share31To50Percent":{"description":"Comma separated skills that each account for 31 to 50 percent of headcount.","type":"string"},"share51To70Percent":{"description":"Comma separated skills that each account for 51 to 70 percent of headcount.","type":"string"},"share71To100Percent":{"description":"Comma separated skills that each account for 71 to 100 percent of headcount.","type":"string"}},"type":"object"},"specialities":{"description":"Speciality tags the company lists on LinkedIn.","items":{"type":"string"},"type":"array"},"twitterUrl":{"description":"X (Twitter) profile URL.","format":"uri","type":"string"},"website":{"description":"Company website URL.","format":"uri","type":"string"}},"required":["domain"],"type":"object"}]},"found":{"description":"False when no company matched the request.","type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"Company Enrichment - Crustdata v3 output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"Company Enrichment - Crustdata v3","tags":["company-enrichment"],"x-mint":{"href":"/api-reference/company-enrichment/crustdata-v3"},"x-payment-info":{"price":{"amount":"0.048000","currency":"USD","mode":"fixed"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"amount":"0.048000","currency":"USD","minimumUsd":"0.001000","mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"amount":"0.048000","currency":"USD","minimumUsd":null,"mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/company_enrichment.lusha":{"post":{"description":"Enrich one company into firmographics, industry classification, headcount, revenue band and social profiles from a domain, a company name, or a Lusha company id.\n\n**Price:** \\$84.00 per 1,000 requests (flat per request - same cost regardless of results returned).\n\n**Routing:** one lane serves this API today, so a failed attempt has nowhere to fail over to. Payment outcome follows the selected rail's settlement policy.\n\n**Catalog:** [Company Enrichment - Lusha pricing and uptime](https://getanyapi.com/api/company-enrichment/lusha) - live USD price, lane routing, and measured 30-day uptime. [Every Company_enrichment endpoint](https://getanyapi.com/api/company-enrichment).","operationId":"company_enrichment_lusha","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"domain":"posthog.com"},"schema":{"additionalProperties":false,"anyOf":[{"required":["domain"]},{"required":["company"]},{"required":["companyId"]}],"example":{"domain":"posthog.com"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"company":{"description":"Company name to look up when you have no domain.","minLength":1,"type":"string"},"companyId":{"description":"Lusha's own company identifier, as returned by this SKU's companyId output.","minLength":1,"type":"string"},"domain":{"description":"Company domain, e.g. posthog.com. Send the bare domain, without a scheme or www.","minLength":1,"type":"string"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true}},"title":"Company Enrichment - Lusha input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"description":"The enriched company, or null when nothing matched.","oneOf":[{"type":"null"},{"properties":{"address":{"description":"Headquarters address as one display string.","type":"string"},"alternativeDomains":{"description":"Other domains the company owns.","items":{"type":"string"},"type":"array"},"alternativeName":{"description":"Alternative name Lusha holds for the company.","type":"string"},"companyId":{"description":"Lusha's own company identifier. Send it back as this SKU's companyId input.","type":"string"},"companyType":{"description":"Ownership type, e.g. Private Company.","type":"string"},"description":{"description":"Company description.","type":"string"},"domain":{"description":"Primary company domain.","type":"string"},"emailDomain":{"description":"Domain the company's work email addresses use.","type":"string"},"employeeRange":{"description":"Employee headcount band as Lusha bands it, e.g. 51 - 200.","type":"string"},"employeesOnLinkedin":{"description":"Employees LinkedIn shows for the company.","type":"integer"},"facebookUrl":{"description":"Company Facebook page URL.","format":"uri","type":"string"},"founded":{"description":"Year the company was founded.","type":"integer"},"fqdn":{"description":"Fully qualified host for the company website.","type":"string"},"image":{"description":"Company logo URL.","format":"uri","type":"string"},"linkedinFollowers":{"description":"LinkedIn follower count.","type":"integer"},"linkedinUrl":{"description":"Company LinkedIn page URL.","format":"uri","type":"string"},"location":{"description":"Headquarters location.","properties":{"city":{"description":"City.","type":"string"},"continent":{"description":"Continent name.","type":"string"},"country":{"description":"Country name.","type":"string"},"countryCode":{"description":"ISO 3166-1 alpha-2 country code.","type":"string"},"fullLocation":{"description":"Location as one display string.","type":"string"},"state":{"description":"State or region.","type":"string"},"stateCode":{"description":"State or region code.","type":"string"}},"type":"object"},"mainIndustry":{"description":"Top-level industry.","type":"string"},"naicsCodes":{"description":"NAICS classification codes for the company.","items":{"properties":{"code":{"description":"NAICS code.","type":"string"},"description":{"description":"What the NAICS code covers.","type":"string"}},"required":["code"],"type":"object"},"type":"array"},"name":{"description":"Company name.","type":"string"},"offices":{"description":"Every office location Lusha holds for the company.","items":{"properties":{"city":{"description":"City.","type":"string"},"continent":{"description":"Continent name.","type":"string"},"country":{"description":"Country name.","type":"string"},"countryCode":{"description":"ISO 3166-1 alpha-2 country code.","type":"string"},"fullLocation":{"description":"Location as one display string.","type":"string"},"state":{"description":"State or region.","type":"string"},"stateCode":{"description":"State or region code.","type":"string"}},"type":"object"},"type":"array"},"popularityTier":{"description":"Lusha's popularity tier for the company, 1 being the most prominent.","type":"integer"},"recordId":{"description":"Lusha's internal record id for the company row.","type":"string"},"revenueRange":{"description":"Annual revenue band in USD as [min, max].","items":{"type":"integer"},"type":"array"},"sicCodes":{"description":"SIC classification codes for the company.","items":{"properties":{"code":{"description":"SIC code.","type":"string"},"description":{"description":"What the SIC code covers.","type":"string"}},"required":["code"],"type":"object"},"type":"array"},"specialities":{"description":"Specialities the company lists for itself.","items":{"type":"string"},"type":"array"},"subIndustry":{"description":"Sub-industry.","type":"string"},"website":{"description":"Company website URL.","format":"uri","type":"string"},"xUrl":{"description":"Company X (Twitter) profile URL.","format":"uri","type":"string"}},"required":["name"],"type":"object"}]},"found":{"description":"False when Lusha holds no company for the requested identifier.","type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"Company Enrichment - Lusha output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"Company Enrichment - Lusha","tags":["company-enrichment"],"x-mint":{"href":"/api-reference/company-enrichment/lusha"},"x-payment-info":{"price":{"amount":"0.084000","currency":"USD","mode":"fixed"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"amount":"0.084000","currency":"USD","minimumUsd":"0.001000","mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"amount":"0.084000","currency":"USD","minimumUsd":null,"mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/company_enrichment.peopledatalabs":{"post":{"description":"Enrich one company into firmographics, funding history, NAICS and SIC classification, and People Data Labs' headcount growth, tenure and churn series from a domain or a company name.\n\n**Price:** \\$120.00 per 1,000 requests (flat per request - same cost regardless of results returned).\n\n**Routing:** one lane serves this API today, so a failed attempt has nowhere to fail over to. Payment outcome follows the selected rail's settlement policy.\n\n**Catalog:** [Company Enrichment - People Data Labs pricing and uptime](https://getanyapi.com/api/company-enrichment/peopledatalabs) - live USD price, lane routing, and measured 30-day uptime. [Every Company_enrichment endpoint](https://getanyapi.com/api/company-enrichment).","operationId":"company_enrichment_peopledatalabs","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"domain":"posthog.com"},"schema":{"additionalProperties":false,"anyOf":[{"required":["domain"]},{"required":["name"]}],"example":{"domain":"posthog.com"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"dataInclude":{"description":"Comma-separated People Data Labs fields to include, or a leading - list to exclude. Projection changes the payload only; it does not reduce what the call costs.","type":"string"},"domain":{"description":"Company website domain, e.g. posthog.com. The strongest identifier.","minLength":1,"type":"string"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"includeIfMatched":{"description":"Report which of the sent identifiers actually matched.","type":"boolean"},"minLikelihood":{"description":"Minimum People Data Labs likelihood score a match must reach to count as found.","maximum":10,"minimum":1,"type":"integer"},"name":{"description":"Company name, for when you have no domain.","minLength":1,"type":"string"},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"required":{"description":"People Data Labs boolean expression over top-level fields that a match must satisfy, e.g. website and industry.","type":"string"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"titlecase":{"description":"Return text in title case instead of People Data Labs' lowercase default.","type":"boolean"}},"title":"Company Enrichment - People Data Labs input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"description":"The enriched company, or null when nothing matched.","oneOf":[{"type":"null"},{"properties":{"affiliatedEntities":{"description":"People Data Labs company ids of affiliated entities.","items":{"type":"string"},"type":"array"},"affiliatedProfiles":{"description":"People Data Labs company ids of affiliated profiles.","items":{"type":"string"},"type":"array"},"allSubsidiaries":{"description":"People Data Labs company ids of every subsidiary, at any depth.","items":{"type":"string"},"type":"array"},"alternativeDomains":{"description":"Other domains the company owns.","items":{"type":"string"},"type":"array"},"alternativeNames":{"description":"Other names the company trades under.","items":{"type":"string"},"type":"array"},"averageEmployeeTenure":{"description":"Average employee tenure in years.","type":"number"},"averageTenureByLevel":{"additionalProperties":true,"description":"Average tenure in years, keyed by seniority level.","type":"object"},"averageTenureByRole":{"additionalProperties":true,"description":"Average tenure in years, keyed by role.","type":"object"},"datasetVersion":{"description":"Version of the People Data Labs dataset this record came from.","type":"string"},"directSubsidiaries":{"description":"People Data Labs company ids of direct subsidiaries.","items":{"type":"string"},"type":"array"},"employeeChurnRate":{"additionalProperties":true,"description":"Churn rate keyed by window, e.g. 12_month.","type":"object"},"employeeCount":{"description":"Employees People Data Labs currently counts.","type":"integer"},"employeeCountByClass":{"additionalProperties":true,"description":"Headcount keyed by job class.","type":"object"},"employeeCountByCountry":{"additionalProperties":true,"description":"Headcount keyed by country.","type":"object"},"employeeCountByMonth":{"additionalProperties":true,"description":"Headcount keyed by YYYY-MM month.","type":"object"},"employeeCountByRole":{"additionalProperties":true,"description":"Headcount keyed by role.","type":"object"},"employeeCountBySubRole":{"additionalProperties":true,"description":"Headcount keyed by sub-role.","type":"object"},"employeeGrowthRate":{"additionalProperties":true,"description":"Headcount growth rate keyed by window.","type":"object"},"employeeGrowthRate12MonthByClass":{"additionalProperties":true,"description":"Twelve-month headcount growth rate keyed by job class.","type":"object"},"employeeGrowthRate12MonthByCountry":{"additionalProperties":true,"description":"Twelve-month headcount growth keyed by country, each entry carrying current and prior headcount.","type":"object"},"employeeGrowthRate12MonthByRole":{"additionalProperties":true,"description":"Twelve-month headcount growth rate keyed by role.","type":"object"},"employeeTurnoverRate":{"additionalProperties":true,"description":"Turnover rate keyed by window, e.g. 3_month, 12_month.","type":"object"},"facebookUrl":{"description":"Company Facebook page URL.","format":"uri","type":"string"},"founded":{"description":"Year the company was founded.","type":"integer"},"fundingRounds":{"description":"Number of funding rounds raised.","type":"integer"},"fundingStages":{"description":"Every funding stage the company has raised.","items":{"type":"string"},"type":"array"},"grossAdditionsByMonth":{"additionalProperties":true,"description":"Employees joined, keyed by YYYY-MM month.","type":"object"},"grossDeparturesByMonth":{"additionalProperties":true,"description":"Employees departed, keyed by YYYY-MM month.","type":"object"},"headline":{"description":"One-line company tagline.","type":"string"},"immediateParent":{"description":"People Data Labs company id of the immediate parent company.","type":"string"},"industry":{"description":"Company industry.","type":"string"},"industryV2":{"description":"Company industry on People Data Labs' newer taxonomy.","type":"string"},"inferredRevenue":{"description":"Inferred annual revenue band, e.g. $50M-$100M.","type":"string"},"lastFundingUtc":{"description":"UTC epoch timestamp in seconds (Unix time) of the most recent funding round. Multiply by 1000 for a JS Date in milliseconds.","type":"number"},"latestFundingStage":{"description":"Most recent funding stage, e.g. series_e.","type":"string"},"likelihood":{"description":"People Data Labs' 1 to 10 confidence that this record is the company you asked for.","type":"integer"},"linkedinFollowers":{"description":"LinkedIn follower count.","type":"integer"},"linkedinId":{"description":"Company LinkedIn numeric id.","type":"string"},"linkedinSlug":{"description":"Company LinkedIn vanity slug.","type":"string"},"linkedinUrl":{"description":"Company LinkedIn page URL.","format":"uri","type":"string"},"location":{"description":"Company headquarters.","properties":{"addressLine2":{"description":"Second line of the address.","type":"string"},"continent":{"description":"Continent.","type":"string"},"country":{"description":"Country.","type":"string"},"geo":{"description":"Coordinates as \"lat,lon\".","type":"string"},"locality":{"description":"City.","type":"string"},"metro":{"description":"Metro area.","type":"string"},"name":{"description":"Location as one display string.","type":"string"},"postalCode":{"description":"Postal code.","type":"string"},"region":{"description":"State or region.","type":"string"},"streetAddress":{"description":"Street address.","type":"string"}},"type":"object"},"medianEmployeeTenure":{"description":"Median employee tenure in years.","type":"number"},"medianTenureByLevel":{"additionalProperties":true,"description":"Median tenure in years, keyed by seniority level.","type":"object"},"medianTenureByRole":{"additionalProperties":true,"description":"Median tenure in years, keyed by role.","type":"object"},"micExchange":{"description":"MIC code of the exchange the company lists on.","type":"string"},"naicsCodes":{"description":"NAICS classification for the company.","items":{"properties":{"code":{"description":"NAICS code.","type":"string"},"industryGroup":{"description":"NAICS industry group.","type":"string"},"naicsIndustry":{"description":"NAICS industry.","type":"string"},"nationalIndustry":{"description":"NAICS national industry.","type":"string"},"sector":{"description":"NAICS sector.","type":"string"},"subSector":{"description":"NAICS sub-sector.","type":"string"}},"required":["code"],"type":"object"},"type":"array"},"name":{"description":"Company name as People Data Labs displays it.","type":"string"},"nameNormalized":{"description":"Lowercase normalized company name, the form People Data Labs matches on.","type":"string"},"pdlId":{"description":"People Data Labs persistent company id.","type":"string"},"profiles":{"description":"Every social profile People Data Labs links to the company.","items":{"type":"string"},"type":"array"},"sicCodes":{"description":"SIC classification for the company.","items":{"properties":{"code":{"description":"SIC code.","type":"string"},"industryGroup":{"description":"SIC industry group.","type":"string"},"industrySector":{"description":"SIC industry sector.","type":"string"},"majorGroup":{"description":"SIC major group.","type":"string"}},"required":["code"],"type":"object"},"type":"array"},"size":{"description":"Employee headcount band, e.g. 11-50.","type":"string"},"summary":{"description":"Long company description.","type":"string"},"tags":{"description":"Descriptive tags for the company.","items":{"type":"string"},"type":"array"},"ticker":{"description":"Stock ticker, for listed companies.","type":"string"},"totalFundingRaised":{"description":"Total capital raised, in USD.","type":"number"},"twitterUrl":{"description":"Company X (Twitter) profile URL.","format":"uri","type":"string"},"type":{"description":"Ownership type, e.g. private, public.","type":"string"},"ultimateParent":{"description":"People Data Labs company id of the ultimate parent company.","type":"string"},"website":{"description":"Company website domain.","type":"string"}},"required":["name"],"type":"object"}]},"found":{"description":"False when People Data Labs matched no company above the likelihood threshold.","type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"Company Enrichment - People Data Labs output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"Company Enrichment - People Data Labs","tags":["company-enrichment"],"x-mint":{"href":"/api-reference/company-enrichment/peopledatalabs"},"x-payment-info":{"price":{"amount":"0.120000","currency":"USD","mode":"fixed"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"amount":"0.120000","currency":"USD","minimumUsd":"0.001000","mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"amount":"0.120000","currency":"USD","minimumUsd":null,"mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/company_enrichment.prospeo":{"post":{"description":"Enrich one company into firmographics, funding history, technology stack, open roles and headquarters contact details from a website, a company name, or a LinkedIn page.\n\n**Price:** \\$66.00 per 1,000 requests (flat per request - same cost regardless of results returned).\n\n**Routing:** one lane serves this API today, so a failed attempt has nowhere to fail over to. Payment outcome follows the selected rail's settlement policy.\n\n**Catalog:** [Company Enrichment - Prospeo pricing and uptime](https://getanyapi.com/api/company-enrichment/prospeo) - live USD price, lane routing, and measured 30-day uptime. [Every Company_enrichment endpoint](https://getanyapi.com/api/company-enrichment).","operationId":"company_enrichment_prospeo","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"companyWebsite":"stripe.com"},"schema":{"additionalProperties":false,"anyOf":[{"required":["companyWebsite"]},{"required":["companyName"]},{"required":["companyId"]},{"required":["companyLinkedinUrl"]}],"example":{"companyWebsite":"stripe.com"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"companyId":{"description":"Prospeo's own company identifier, as returned by this SKU's companyId output.","minLength":1,"type":"string"},"companyLinkedinUrl":{"description":"Company LinkedIn page URL.","format":"uri","type":"string"},"companyName":{"description":"Company name, for when you have no domain.","minLength":1,"type":"string"},"companyWebsite":{"description":"Company domain, e.g. stripe.com. The most reliable identifier.","minLength":1,"type":"string"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true}},"title":"Company Enrichment - Prospeo input","type":"object","x-aliases":{"domain":"companyWebsite","website":"companyWebsite"}}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"description":"The enriched company, or null when nothing matched.","oneOf":[{"type":"null"},{"properties":{"attributes":{"description":"What Prospeo detects about how the company sells.","properties":{"hasDemo":{"description":"The website offers a demo.","type":"boolean"},"hasDownloadable":{"description":"The website offers a download.","type":"boolean"},"hasFreeTrial":{"description":"The website offers a free trial.","type":"boolean"},"hasMobileApps":{"description":"The company publishes mobile apps.","type":"boolean"},"hasOnlineReviews":{"description":"The company has online reviews.","type":"boolean"},"hasPricing":{"description":"The website publishes pricing.","type":"boolean"},"isB2b":{"description":"The company sells to businesses.","type":"boolean"}},"type":"object"},"companyId":{"description":"Prospeo's own company identifier. Send it back as this SKU's companyId input.","type":"string"},"crunchbaseUrl":{"description":"Company Crunchbase profile URL.","format":"uri","type":"string"},"description":{"description":"Company description as the company writes it.","type":"string"},"descriptionAi":{"description":"Prospeo's own AI-written company summary.","type":"string"},"descriptionSeo":{"description":"Meta description from the company's website.","type":"string"},"domain":{"description":"Primary company domain.","type":"string"},"emailTech":{"description":"How the company's email is hosted.","properties":{"domain":{"description":"Domain the company's email addresses use.","type":"string"},"mxProvider":{"description":"Mail provider behind the domain's MX records.","type":"string"}},"type":"object"},"employeeCount":{"description":"Employees Prospeo currently counts.","type":"integer"},"employeeCountOnProspeo":{"description":"Employees of this company that Prospeo holds a profile for.","type":"integer"},"employeeRange":{"description":"Employee headcount band, e.g. 10000+.","type":"string"},"facebookUrl":{"description":"Company Facebook page URL.","format":"uri","type":"string"},"founded":{"description":"Year the company was founded.","type":"integer"},"freeEnrichment":{"description":"True when Prospeo served this record from cache and did not charge for it.","type":"boolean"},"funding":{"description":"Funding history.","properties":{"events":{"description":"One entry per funding round.","items":{"properties":{"amount":{"description":"Amount raised in USD.","type":"number"},"amountPrinted":{"description":"Amount raised as a display string.","type":"string"},"link":{"description":"Source URL for the round.","format":"uri","type":"string"},"raisedUtc":{"description":"UTC epoch timestamp in seconds (Unix time) the round closed. Multiply by 1000 for a JS Date in milliseconds.","type":"number"},"stage":{"description":"Round stage, e.g. Series E-J.","type":"string"}},"type":"object"},"type":"array"},"latestStage":{"description":"Most recent funding stage.","type":"string"},"latestUtc":{"description":"UTC epoch timestamp in seconds (Unix time) of the most recent round. Multiply by 1000 for a JS Date in milliseconds.","type":"number"},"rounds":{"description":"Number of funding rounds raised.","type":"integer"},"totalRaised":{"description":"Total capital raised, in USD.","type":"number"},"totalRaisedPrinted":{"description":"Total capital raised as a display string.","type":"string"}},"type":"object"},"image":{"description":"Company logo URL.","format":"uri","type":"string"},"industry":{"description":"Company industry.","type":"string"},"instagramUrl":{"description":"Company Instagram profile URL.","format":"uri","type":"string"},"jobPostings":{"description":"Open roles Prospeo currently sees for the company.","properties":{"activeCount":{"description":"Open roles currently posted.","type":"integer"},"activeTitles":{"description":"Titles of the open roles.","items":{"type":"string"},"type":"array"}},"type":"object"},"keywords":{"description":"Keywords Prospeo assigns the company.","items":{"type":"string"},"type":"array"},"linkedinId":{"description":"Company LinkedIn numeric id.","type":"string"},"linkedinUrl":{"description":"Company LinkedIn page URL.","format":"uri","type":"string"},"location":{"description":"Company headquarters.","properties":{"city":{"description":"City.","type":"string"},"country":{"description":"Country name.","type":"string"},"countryCode":{"description":"ISO 3166-1 alpha-2 country code.","type":"string"},"rawAddress":{"description":"Headquarters address as one display string.","type":"string"},"state":{"description":"State or region.","type":"string"}},"type":"object"},"naicsCodes":{"description":"NAICS classification codes for the company.","items":{"type":"string"},"type":"array"},"name":{"description":"Company name.","type":"string"},"otherWebsites":{"description":"Other domains the company owns.","items":{"type":"string"},"type":"array"},"phoneHq":{"description":"Headquarters switchboard number.","properties":{"country":{"description":"Country the number belongs to.","type":"string"},"countryCode":{"description":"ISO 3166-1 alpha-2 code for that country.","type":"string"},"international":{"description":"Number in international format.","type":"string"},"national":{"description":"Number in national format.","type":"string"},"phone":{"description":"Phone number as Prospeo stores it.","type":"string"}},"type":"object"},"revenueRange":{"description":"Annual revenue band in USD.","properties":{"max":{"description":"Upper bound in USD.","type":"number"},"min":{"description":"Lower bound in USD.","type":"number"}},"type":"object"},"revenueRangePrinted":{"description":"Annual revenue band as a display string.","type":"string"},"sicCodes":{"description":"SIC classification codes for the company.","items":{"type":"string"},"type":"array"},"technologies":{"description":"Technologies Prospeo detects in the company's stack.","items":{"type":"string"},"type":"array"},"twitterUrl":{"description":"Company X (Twitter) profile URL.","format":"uri","type":"string"},"type":{"description":"Ownership type, e.g. Private, Public, Non Profit.","type":"string"},"website":{"description":"Company website URL.","format":"uri","type":"string"},"youtubeUrl":{"description":"Company YouTube channel URL.","format":"uri","type":"string"}},"required":["name"],"type":"object"}]},"found":{"description":"False when Prospeo matched nothing.","type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"Company Enrichment - Prospeo output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"Company Enrichment - Prospeo","tags":["company-enrichment"],"x-mint":{"href":"/api-reference/company-enrichment/prospeo"},"x-payment-info":{"price":{"amount":"0.066000","currency":"USD","mode":"fixed"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"amount":"0.066000","currency":"USD","minimumUsd":"0.001000","mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"amount":"0.066000","currency":"USD","minimumUsd":null,"mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/company_identify.crustdata_v3":{"post":{"description":"Resolve one company from its domain, LinkedIn company page, Crustdata company id, or name to its Crustdata id, primary domain, LinkedIn page, and basic profile. Identify a company for $1 per 1,000 requests before paying to enrich it.\n\n**Price:** \\$1.00 per 1,000 requests (flat per request - same cost regardless of results returned).\n\n**Routing:** one lane serves this API today, so a failed attempt has nowhere to fail over to. Payment outcome follows the selected rail's settlement policy.\n\n**Catalog:** [Company Identify - Crustdata v3 pricing and uptime](https://getanyapi.com/api/company-identify/crustdata-v3) - live USD price, lane routing, and measured 30-day uptime. [Every Company_identify endpoint](https://getanyapi.com/api/company-identify).","operationId":"company_identify_crustdata_v3","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"companyDomain":"stripe.com"},"schema":{"additionalProperties":false,"example":{"companyDomain":"stripe.com"},"oneOf":[{"required":["companyDomain"]},{"required":["companyLinkedinUrl"]},{"required":["companyId"]},{"required":["companyName"]}],"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"companyDomain":{"description":"Company website domain without a scheme or path, e.g. stripe.com. Send exactly one of companyDomain, companyLinkedinUrl, companyId, or companyName.","minLength":1,"type":"string"},"companyId":{"description":"Crustdata company id, as returned in companyId by this or another Crustdata v3 endpoint.","minimum":1,"type":"integer"},"companyLinkedinUrl":{"description":"LinkedIn company page URL, e.g. https://www.linkedin.com/company/stripe.","format":"uri","type":"string"},"companyName":{"description":"Full company name, including any legal suffix. A name match is a best guess; confirm it against the returned domain or LinkedIn page before relying on it.","minLength":1,"type":"string"},"exactMatch":{"description":"Require an exact match on the identifier instead of letting Crustdata decide. Leave unset for automatic matching.","type":"boolean"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true}},"title":"Company Identify - Crustdata v3 input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"description":"The identified company, or null when nothing matched.","oneOf":[{"type":"null"},{"properties":{"companyId":{"description":"Crustdata company id. Send it as companyId to identify the same company again.","type":"string"},"companyType":{"description":"Ownership type, e.g. Privately Held or Public Company.","type":"string"},"confidenceScore":{"description":"Match confidence from 0 to 1. Treat a low score on a name match as a guess.","type":"number"},"description":{"description":"Company description.","type":"string"},"domain":{"description":"Primary website domain, or null when Crustdata holds none for this company.","type":["string","null"]},"domains":{"description":"Every website domain Crustdata links to the company.","items":{"type":"string"},"type":"array"},"employeeRange":{"description":"Employee count band, e.g. 5001-10000.","type":"string"},"foundedYear":{"description":"Year the company was founded.","type":"integer"},"image":{"description":"Company logo URL.","format":"uri","type":"string"},"industries":{"description":"Industries the company operates in.","items":{"type":"string"},"type":"array"},"linkedinCompanyId":{"description":"LinkedIn numeric company id.","type":"string"},"linkedinProfileName":{"description":"Company name as shown on its LinkedIn page.","type":"string"},"linkedinUrl":{"description":"LinkedIn company page URL.","format":"uri","type":"string"},"markets":{"description":"Markets the company is listed in, e.g. PRIVATE or NASDAQ.","items":{"type":"string"},"type":"array"},"matchType":{"description":"Which kind of identifier produced the match, e.g. domain.","type":"string"},"name":{"description":"Company name.","type":"string"},"website":{"description":"Company website URL.","format":"uri","type":"string"}},"required":["companyId","domain"],"type":"object"}]},"found":{"description":"False when no company matched the identifier.","type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"Company Identify - Crustdata v3 output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"Company Identify - Crustdata v3","tags":["company-identify"],"x-mint":{"href":"/api-reference/company-identify/crustdata-v3"},"x-payment-info":{"price":{"amount":"0.001000","currency":"USD","mode":"fixed"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"amount":"0.001000","currency":"USD","minimumUsd":"0.001000","mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"amount":"0.001000","currency":"USD","minimumUsd":null,"mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/company_search.ai_ark":{"post":{"description":"Search companies by name, lookalike domains, account filters, and saved-list filters.\n\n**Price:** billed per result - \\$2.40 per 1,000 results, capped at \\$240.00 per 1,000 requests.\n\n**Routing:** one lane serves this API today, so a failed attempt has nowhere to fail over to. Payment outcome follows the selected rail's settlement policy.\n\n**Catalog:** [Company Search - AI Ark pricing and uptime](https://getanyapi.com/api/company-search/ai-ark) - live USD price, lane routing, and measured 30-day uptime. [Every Company_search endpoint](https://getanyapi.com/api/company-search).","operationId":"company_search_ai_ark","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"name":"OpenAI","page":0,"size":1},"schema":{"additionalProperties":false,"example":{"name":"OpenAI","page":0,"size":1},"properties":{"account":{"additionalProperties":true,"description":"AI Ark account filter expression. Nested generic any/all filter objects are accepted as documented by the source and are not further constrained.","type":"object"},"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"lists":{"additionalProperties":true,"description":"AI Ark saved-list filter expression.","type":"object"},"lookalikeDomains":{"description":"Domains whose company characteristics should guide the search.","items":{"minLength":1,"type":"string"},"maxItems":5,"type":"array"},"name":{"description":"Company-name search text.","minLength":1,"type":"string"},"page":{"default":0,"description":"Zero-based result page.","minimum":0,"type":"integer"},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"size":{"default":10,"description":"Maximum companies to return on this page.","maximum":100,"minimum":1,"type":"integer"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true}},"title":"Company Search - AI Ark input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"description":"Normalized companies and page metadata, or null when no companies matched.","oneOf":[{"type":"null"},{"additionalProperties":false,"properties":{"companies":{"description":"Companies returned on this page.","items":{"properties":{"address":{"description":"Headquarters address as published by the source.","type":"string"},"city":{"description":"Headquarters city.","type":"string"},"companyId":{"description":"The source's own record identifier for this company, exposed so you can trace a result back to the record it came from.","type":"string"},"continent":{"description":"Headquarters continent.","type":"string"},"country":{"description":"Headquarters country.","type":"string"},"crunchbaseUrl":{"description":"Company Crunchbase URL.","format":"uri","type":"string"},"description":{"description":"Company description when available.","type":"string"},"diversityInvestmentCount":{"description":"Number of diversity-flagged investments the source records for the company.","minimum":0,"type":"integer"},"diversityInvestments":{"description":"Investments the source has flagged with a diversity spotlight.","items":{"properties":{"announcedUtc":{"description":"UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds.","type":"integer"},"imageKey":{"description":"The source's internal image key for the counterparty. It is a bare key, not a URL.","type":"string"},"name":{"description":"Counterparty organization name.","type":"string"},"recordId":{"description":"The source's own slug for the counterparty organization.","type":"string"},"roundImageKey":{"description":"The source's internal image key for the round. It is a bare key, not a URL.","type":"string"},"roundName":{"description":"Funding round name as published by the source.","type":"string"},"roundRaisedAmount":{"description":"Amount raised in this round in USD.","minimum":0,"type":"integer"},"roundRecordId":{"description":"The source's own slug for the funding round.","type":"string"},"roundType":{"description":"Funding round type, for example GRANT.","type":"string"},"spotlights":{"description":"Diversity spotlights the source attached to this investment.","items":{"properties":{"name":{"description":"Human-readable spotlight label.","type":"string"},"recordId":{"description":"The source's own slug for the spotlight, for example women-founded.","type":"string"}},"type":"object"},"type":"array"}},"type":"object"},"type":"array"},"domain":{"description":"Company website domain, or null when the upstream holds none for this company.","minLength":1,"type":["string","null"]},"domainLtd":{"description":"The source's second copy of the company domain. Usually identical to domain; it can differ when the source resolves a redirect or a country domain differently, so compare the two rather than assuming they match.","type":"string"},"email":{"description":"Public company contact email.","format":"email","type":"string"},"employeeCount":{"description":"Estimated total employees.","minimum":0,"type":"integer"},"employeeRangeMax":{"description":"Upper bound of the published employee range.","minimum":0,"type":"integer"},"employeeRangeMin":{"description":"Lower bound of the published employee range.","minimum":0,"type":"integer"},"facebookUrl":{"description":"Canonical company Facebook URL.","format":"uri","type":"string"},"foundedYear":{"description":"Year the company was founded.","type":"integer"},"fundedUtc":{"description":"UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds.","type":"integer"},"fundingLastAmount":{"description":"Amount raised in the most recent round in USD.","minimum":0,"type":"integer"},"fundingLastType":{"description":"Type of the most recent funding round.","type":"string"},"fundingRoundCount":{"description":"Number of funding rounds raised.","minimum":0,"type":"integer"},"fundingRounds":{"description":"Funding rounds the company has raised.","items":{"properties":{"announcedUtc":{"description":"UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds.","type":"integer"},"investors":{"description":"Investors named in this round.","items":{"type":"string"},"type":"array"},"raisedAmount":{"description":"Amount raised in this round in USD.","minimum":0,"type":"integer"},"type":{"description":"Funding round type.","type":"string"}},"type":"object"},"type":"array"},"fundingTotalAmount":{"description":"Total capital raised across all rounds in USD.","minimum":0,"type":"integer"},"hashtags":{"description":"Hashtags the company publishes under.","items":{"type":"string"},"type":"array"},"image":{"description":"Company logo URL. This is a SIGNED, EXPIRING image-proxy URL - the path carries an exp: epoch roughly five days out - so fetch and store the image promptly rather than storing this URL.","format":"uri","type":"string"},"industries":{"description":"Additional company industries.","items":{"type":"string"},"type":"array"},"industry":{"description":"Primary company industry.","type":"string"},"investorCount":{"description":"Number of distinct investors.","minimum":0,"type":"integer"},"keywords":{"description":"Keywords describing the company.","items":{"type":"string"},"type":"array"},"languages":{"description":"Languages the company publishes in.","items":{"type":"string"},"type":"array"},"latitude":{"description":"Headquarters latitude in decimal degrees.","type":"number"},"legalName":{"description":"Registered company name when available.","type":"string"},"linkedinUrl":{"description":"Canonical company LinkedIn URL.","format":"uri","type":"string"},"locations":{"description":"Every office location the source lists for the company.","items":{"properties":{"address":{"description":"Location address as published by the source.","type":"string"},"city":{"description":"Location city.","type":"string"},"continent":{"description":"Location continent.","type":"string"},"country":{"description":"Location country.","type":"string"},"latitude":{"description":"Location latitude in decimal degrees.","type":"number"},"longitude":{"description":"Location longitude in decimal degrees.","type":"number"},"postalCode":{"description":"Location postal code.","type":"string"},"state":{"description":"Location state or region.","type":"string"}},"type":"object"},"type":"array"},"longitude":{"description":"Headquarters longitude in decimal degrees.","type":"number"},"naics":{"description":"NAICS codes for the company.","items":{"type":"string"},"type":"array"},"name":{"description":"Company name.","minLength":1,"type":"string"},"overview":{"description":"Longer company overview written by the source. Overlaps description but is a separately maintained blurb and is often longer or more current.","type":"string"},"phone":{"description":"Sanitized public company phone number.","type":"string"},"phoneRaw":{"description":"The same phone number in the source's unsanitized spelling, keeping spaces, dashes and brackets. Use phone for dialing and this for display fidelity.","type":"string"},"postalCode":{"description":"Headquarters postal code.","type":"string"},"revenueMax":{"description":"Upper bound of estimated annual revenue in USD.","minimum":0,"type":"integer"},"revenueMin":{"description":"Lower bound of estimated annual revenue in USD.","minimum":0,"type":"integer"},"revenueRange":{"description":"The same annual revenue estimate as a single hyphenated range string, for example 500000000-1000000000. It duplicates revenueMin and revenueMax; use those for arithmetic.","type":"string"},"seoDescription":{"description":"The meta description the source scraped from the company website. It is site copy, not the source's own writing, so it may be in another language or out of date.","type":"string"},"sic":{"description":"SIC codes for the company.","items":{"type":"string"},"type":"array"},"state":{"description":"Headquarters state or region.","type":"string"},"technologies":{"description":"Technologies detected on the company's web presence.","items":{"properties":{"category":{"description":"Technology category.","type":"string"},"name":{"description":"Technology name.","type":"string"}},"type":"object"},"type":"array"},"twitterUrl":{"description":"Canonical company X (Twitter) URL.","format":"uri","type":"string"},"type":{"description":"Company organization type.","type":"string"},"updatedUtc":{"description":"UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds.","type":"integer"},"websiteUrl":{"description":"Canonical company website URL.","format":"uri","type":"string"}},"required":["name","domain"],"type":"object"},"type":"array"},"page":{"description":"Zero-based page number returned by the source.","minimum":0,"type":"integer"},"size":{"description":"Configured page size.","minimum":0,"type":"integer"},"total":{"description":"Total matching companies.","minimum":0,"type":"integer"},"totalPages":{"description":"Total result pages.","minimum":0,"type":"integer"}},"required":["companies","page","size","total","totalPages"],"type":"object"}]},"found":{"description":"Whether the search returned at least one company.","type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"Company Search - AI Ark output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"Company Search - AI Ark","tags":["company-search"],"x-mint":{"href":"/api-reference/company-search/ai-ark"},"x-payment-info":{"price":{"currency":"USD","max":"0.240000","min":"0.000000","mode":"dynamic"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"currency":"USD","max":"0.240000","min":"0.001000","minimumUsd":"0.001000","mode":"dynamic","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"currency":"USD","max":"0.240000","min":"0.000000","minimumUsd":null,"mode":"dynamic","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/company_search.crustdata_v3":{"post":{"description":"Search companies by structured filters with cursor pagination.\n\n**Price:** billed per result - \\$48.00 per 1,000 results, capped at \\$12,000.00 per 1,000 requests.\n\n**Routing:** one lane serves this API today, so a failed attempt has nowhere to fail over to. Payment outcome follows the selected rail's settlement policy.\n\n**Catalog:** [Company Search - Crustdata v3 pricing and uptime](https://getanyapi.com/api/company-search/crustdata-v3) - live USD price, lane routing, and measured 30-day uptime. [Every Company_search endpoint](https://getanyapi.com/api/company-search).","operationId":"company_search_crustdata_v3","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"filters":[{"filter_type":"company_website_domain","type":"(.)","value":"posthog.com"}],"limit":1},"schema":{"additionalProperties":false,"example":{"filters":[{"filter_type":"company_website_domain","type":"(.)","value":"posthog.com"}],"limit":1},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"cursor":{"minLength":1,"type":"string"},"fields":{"oneOf":[{"minLength":1,"type":"string"},{"items":{"minLength":1,"type":"string"},"minItems":1,"type":"array"}]},"filters":{"description":"Crustdata company-database filter expression. A leaf condition is {\"filter_type\": \u003ccolumn\u003e, \"type\": \u003coperator\u003e, \"value\": \u003cmatch\u003e}; a group is {\"op\": \"and\"|\"or\", \"conditions\": [\u003cleaf\u003e, ...]}. Pass a single leaf, an array of leaves, or a group. See the example for a domain lookup.","oneOf":[{"type":"object"},{"items":{"type":"object"},"minItems":1,"type":"array"}]},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"limit":{"default":10,"description":"Maximum companies to return on this page. Every company returned is billed; the page is capped at 250 to bound the cost of a single call.","maximum":250,"minimum":1,"type":"integer"},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"sorts":{"items":{"type":"object"},"type":"array"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true}},"required":["filters"],"title":"Company Search - Crustdata v3 input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"oneOf":[{"type":"null"},{"additionalProperties":false,"properties":{"companies":{"description":"Matching companies.","items":{"properties":{"acquisitionStatus":{"description":"Acquisition status, when the company has been acquired.","type":"string"},"companyId":{"description":"Crustdata identifier for the company, accepted by the Company Enrichment endpoint.","type":"string"},"companyType":{"description":"Company type, e.g. Privately Held or Public Company.","type":"string"},"competitorIds":{"description":"Crustdata identifiers for the companies Crustdata lists as competitors. These are the same identifiers companyId reports, returned here as numbers, and line up positionally with competitorWebsites.","items":{"type":"integer"},"type":"array"},"competitorWebsites":{"description":"Websites of companies Crustdata considers competitors.","items":{"type":"string"},"type":"array"},"contactEmail":{"description":"Publicly listed contact email address.","type":"string"},"crunchbaseCategories":{"description":"Crunchbase category tags.","items":{"type":"string"},"type":"array"},"crunchbaseUrl":{"description":"Crunchbase profile URL.","format":"uri","type":"string"},"crunchbaseUuid":{"description":"Crunchbase organization UUID.","type":"string"},"description":{"description":"Company description from its LinkedIn page.","type":"string"},"domain":{"description":"Primary website domain, or null when the upstream holds none for this company.","type":["string","null"]},"domains":{"description":"All domains associated with the company.","items":{"type":"string"},"type":"array"},"employeeCount":{"description":"Latest observed employee count.","type":"integer"},"employeeGrowth":{"description":"Headcount change over trailing windows, absolute and percent.","properties":{"absolute12m":{"description":"Net change over the last twelve months.","type":"integer"},"absolute1m":{"description":"Net change over the last month.","type":"integer"},"absolute3m":{"description":"Net change over the last three months.","type":"integer"},"absolute6m":{"description":"Net change over the last six months.","type":"integer"},"percent12m":{"description":"Percent change over the last twelve months.","type":"number"},"percent1m":{"description":"Percent change over the last month.","type":"number"},"percent3m":{"description":"Percent change over the last three months.","type":"number"},"percent6m":{"description":"Percent change over the last six months.","type":"number"}},"type":"object"},"employeeRange":{"description":"Employee count band, e.g. 51-200.","type":"string"},"estimatedRevenueHigherUsd":{"description":"Upper bound of estimated annual revenue in USD.","type":"integer"},"estimatedRevenueLowerUsd":{"description":"Lower bound of estimated annual revenue in USD.","type":"integer"},"fiscalYearEnd":{"description":"Fiscal year end.","type":"string"},"followerCount":{"description":"Latest LinkedIn follower count.","type":"integer"},"followerGrowth":{"description":"LinkedIn follower change over trailing windows, absolute and percent.","properties":{"absolute12m":{"description":"Net change over the last twelve months.","type":"integer"},"absolute1m":{"description":"Net change over the last month.","type":"integer"},"absolute3m":{"description":"Net change over the last three months.","type":"integer"},"absolute6m":{"description":"Net change over the last six months.","type":"integer"},"percent12m":{"description":"Percent change over the last twelve months.","type":"number"},"percent1m":{"description":"Percent change over the last month.","type":"number"},"percent3m":{"description":"Percent change over the last three months.","type":"number"},"percent6m":{"description":"Percent change over the last six months.","type":"number"}},"type":"object"},"foundedYear":{"description":"Year the company was founded.","type":"integer"},"growthCalculatedUtc":{"description":"UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds. When the growth metrics on this record were last calculated.","type":"integer"},"headcountByRegion":{"additionalProperties":{"type":"number"},"description":"Employee count per region, keyed by LinkedIn region name.","type":"object"},"headcountByRole":{"additionalProperties":{"type":"number"},"description":"Employee count per job function, keyed by LinkedIn function name.","type":"object"},"headcountByRolePercent":{"additionalProperties":{"type":"number"},"description":"Share of employees per job function as a percent, keyed by LinkedIn function name.","type":"object"},"headcountBySkill":{"additionalProperties":{"type":"number"},"description":"Employee count per listed skill, keyed by skill name.","type":"object"},"headcountBySkillPercent":{"additionalProperties":{"type":"number"},"description":"Share of employees per listed skill as a percent, keyed by skill name.","type":"object"},"headquarters":{"description":"Headquarters location.","type":"string"},"hqCountry":{"description":"Country of the headquarters.","type":"string"},"hqLocationAddressComponents":{"description":"The headquarters location split into address components (city, state, country). Restates headquarters in parts.","items":{"type":"string"},"type":"array"},"hqStreetAddressAndCity":{"description":"Headquarters street address and city. Crustdata returns the same string as headquarters for most companies.","type":"string"},"image":{"description":"Company logo URL.","format":"uri","type":"string"},"indexedUtc":{"description":"UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds. When Crustdata last indexed the record for search, which is usually just after updatedUtc.","type":"integer"},"industries":{"description":"All LinkedIn industries listed for the company.","items":{"type":"string"},"type":"array"},"industry":{"description":"Primary LinkedIn industry.","type":"string"},"investors":{"description":"Investors named on the Crunchbase profile.","items":{"type":"string"},"type":"array"},"isInvestor":{"description":"True when the company itself invests in other companies.","type":"boolean"},"largestHeadcountCountry":{"description":"Country holding the largest share of employees.","type":"string"},"lastFundingType":{"description":"Type of the most recent funding round, e.g. series_e.","type":"string"},"lastFundingUsd":{"description":"Amount raised in the most recent funding round, in USD.","type":"integer"},"lastFundingUtc":{"description":"UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds. Date of the most recent funding round.","type":"integer"},"linkedinCategories":{"description":"LinkedIn speciality tags listed by the company.","items":{"type":"string"},"type":"array"},"linkedinCompanyId":{"description":"LinkedIn's own numeric identifier for the company page.","type":"string"},"linkedinProfileName":{"description":"Company name as it appears on the LinkedIn page. Usually the same value as name; Crustdata returns both.","type":"string"},"linkedinUrl":{"description":"LinkedIn company page URL.","format":"uri","type":"string"},"markets":{"description":"Markets the company trades in, e.g. PRIVATE or NASDAQ.","items":{"type":"string"},"type":"array"},"name":{"description":"Company name.","type":"string"},"officeAddresses":{"description":"Office addresses exactly as Crustdata returns them. Untyped passthrough: the structure ships verbatim and is not validated, because it was empty for every company we captured."},"phone":{"description":"Publicly listed phone number.","type":"string"},"roleGrowth6mPercent":{"additionalProperties":{"type":"number"},"description":"Six-month percent headcount change per job function, keyed by LinkedIn function name.","type":"object"},"roleGrowthYoyPercent":{"additionalProperties":{"type":"number"},"description":"Year-over-year percent headcount change per job function, keyed by LinkedIn function name.","type":"object"},"stockSymbols":{"description":"Stock ticker symbols.","items":{"type":"string"},"type":"array"},"totalFundingUsd":{"description":"Total investment raised to date, in USD.","type":"integer"},"tracxnInvestors":{"description":"Investors sourced from Tracxn, exactly as Crustdata returns them. Untyped passthrough: the structure ships verbatim and is not validated, because it was empty for every company we captured."},"twitterUrl":{"description":"X (Twitter) profile URL.","format":"uri","type":"string"},"updatedUtc":{"description":"UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds. When this company record was last refreshed.","type":"integer"},"valuationLowerUsd":{"description":"Lower bound of the reported valuation in USD.","type":"integer"},"valuationUsd":{"description":"Reported valuation in USD.","type":"integer"},"website":{"description":"Company website URL.","format":"uri","type":"string"}},"required":["name"],"type":"object"},"type":"array"},"hasMore":{"description":"True when more companies exist beyond this page.","type":"boolean"},"nextCursor":{"description":"Opaque continuation token; null when the walk is complete.","type":["string","null"]},"totalCount":{"description":"Total number of companies matching the filters.","minimum":0,"type":"integer"}},"required":["companies"],"type":"object"}]},"found":{"description":"False when the filters matched no companies.","type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"Company Search - Crustdata v3 output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"Company Search - Crustdata v3","tags":["company-search"],"x-mint":{"href":"/api-reference/company-search/crustdata-v3"},"x-payment-info":{"price":{"currency":"USD","max":"12.000000","min":"0.000000","mode":"dynamic"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"currency":"USD","max":"12.000000","min":"0.001000","minimumUsd":"0.001000","mode":"dynamic","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"currency":"USD","max":"12.000000","min":"0.000000","minimumUsd":null,"mode":"dynamic","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/company_search.fullenrich":{"post":{"description":"Build an account list from FullEnrich by name, domain, industry, specialty, ownership type, headcount, founding year and headquarters, with full firmographics and every office on each row. Billed per company returned.\n\n**Price:** billed per result - \\$25.20 per 1,000 results, capped at \\$2,520.00 per 1,000 requests.\n\n**Routing:** one lane serves this API today, so a failed attempt has nowhere to fail over to. Payment outcome follows the selected rail's settlement policy.\n\n**Catalog:** [Company Search - FullEnrich pricing and uptime](https://getanyapi.com/api/company-search/fullenrich) - live USD price, lane routing, and measured 30-day uptime. [Every Company_search endpoint](https://getanyapi.com/api/company-search).","operationId":"company_search_fullenrich","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"domains":[{"exact_match":true,"value":"stripe.com"}],"limit":1},"schema":{"additionalProperties":false,"example":{"domains":[{"exact_match":true,"value":"stripe.com"}],"limit":1},"minProperties":1,"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"companyIds":{"description":"Filter by FullEnrich company id. Each entry is an object taking a `value` string and an optional `exact_match` boolean, e.g. [{\"value\": \"stripe.com\", \"exact_match\": true}]. A bare string is rejected.","items":{"additionalProperties":true,"properties":{"exact_match":{"description":"Require an exact match rather than a fuzzy one.","type":"boolean"},"value":{"description":"The value to match.","type":"string"}},"type":"object"},"type":"array"},"cursor":{"description":"Cursor from a previous response's nextCursor. Works at any depth, including past the 10000 offset ceiling.","type":"string"},"domains":{"description":"Filter by company domain, e.g. stripe.com. Each entry is an object taking a `value` string and an optional `exact_match` boolean, e.g. [{\"value\": \"stripe.com\", \"exact_match\": true}]. A bare string is rejected.","items":{"additionalProperties":true,"properties":{"exact_match":{"description":"Require an exact match rather than a fuzzy one.","type":"boolean"},"value":{"description":"The value to match.","type":"string"}},"type":"object"},"type":"array"},"foundedYears":{"description":"Filter by founding year. Each entry is an object taking a `value` string and an optional `exact_match` boolean, e.g. [{\"value\": \"stripe.com\", \"exact_match\": true}]. A bare string is rejected.","items":{"additionalProperties":true,"properties":{"exact_match":{"description":"Require an exact match rather than a fuzzy one.","type":"boolean"},"value":{"description":"The value to match.","type":"string"}},"type":"object"},"type":"array"},"headcounts":{"description":"Filter by employee headcount band. Each entry is an object taking a `value` string and an optional `exact_match` boolean, e.g. [{\"value\": \"stripe.com\", \"exact_match\": true}]. A bare string is rejected.","items":{"additionalProperties":true,"properties":{"exact_match":{"description":"Require an exact match rather than a fuzzy one.","type":"boolean"},"value":{"description":"The value to match.","type":"string"}},"type":"object"},"type":"array"},"headquartersLocations":{"description":"Filter by headquarters city, region or country. Each entry is an object taking a `value` string and an optional `exact_match` boolean, e.g. [{\"value\": \"stripe.com\", \"exact_match\": true}]. A bare string is rejected.","items":{"additionalProperties":true,"properties":{"exact_match":{"description":"Require an exact match rather than a fuzzy one.","type":"boolean"},"value":{"description":"The value to match.","type":"string"}},"type":"object"},"type":"array"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"industries":{"description":"Filter by company industry, e.g. Software Development. Each entry is an object taking a `value` string and an optional `exact_match` boolean, e.g. [{\"value\": \"stripe.com\", \"exact_match\": true}]. A bare string is rejected.","items":{"additionalProperties":true,"properties":{"exact_match":{"description":"Require an exact match rather than a fuzzy one.","type":"boolean"},"value":{"description":"The value to match.","type":"string"}},"type":"object"},"type":"array"},"keywords":{"description":"Filter by words in the company description. Each entry is an object taking a `value` string and an optional `exact_match` boolean, e.g. [{\"value\": \"stripe.com\", \"exact_match\": true}]. A bare string is rejected.","items":{"additionalProperties":true,"properties":{"exact_match":{"description":"Require an exact match rather than a fuzzy one.","type":"boolean"},"value":{"description":"The value to match.","type":"string"}},"type":"object"},"type":"array"},"limit":{"default":10,"description":"Rows to return on this page, up to FullEnrich's maximum of 100. Every row returned is billed.","maximum":100,"minimum":1,"type":"integer"},"linkedinUrls":{"description":"Filter by company LinkedIn URL. Each entry is an object taking a `value` string and an optional `exact_match` boolean, e.g. [{\"value\": \"stripe.com\", \"exact_match\": true}]. A bare string is rejected.","items":{"additionalProperties":true,"properties":{"exact_match":{"description":"Require an exact match rather than a fuzzy one.","type":"boolean"},"value":{"description":"The value to match.","type":"string"}},"type":"object"},"type":"array"},"names":{"description":"Filter by company name. Each entry is an object taking a `value` string and an optional `exact_match` boolean, e.g. [{\"value\": \"stripe.com\", \"exact_match\": true}]. A bare string is rejected.","items":{"additionalProperties":true,"properties":{"exact_match":{"description":"Require an exact match rather than a fuzzy one.","type":"boolean"},"value":{"description":"The value to match.","type":"string"}},"type":"object"},"type":"array"},"offset":{"default":0,"description":"Rows to skip. FullEnrich caps offset at 10000; past that, page with cursor.","minimum":0,"type":"integer"},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"specialties":{"description":"Filter by company specialty. Each entry is an object taking a `value` string and an optional `exact_match` boolean, e.g. [{\"value\": \"stripe.com\", \"exact_match\": true}]. A bare string is rejected.","items":{"additionalProperties":true,"properties":{"exact_match":{"description":"Require an exact match rather than a fuzzy one.","type":"boolean"},"value":{"description":"The value to match.","type":"string"}},"type":"object"},"type":"array"},"types":{"description":"Filter by ownership type, e.g. Public Company, Privately Held, Nonprofit. Each entry is an object taking a `value` string and an optional `exact_match` boolean, e.g. [{\"value\": \"stripe.com\", \"exact_match\": true}]. A bare string is rejected.","items":{"additionalProperties":true,"properties":{"exact_match":{"description":"Require an exact match rather than a fuzzy one.","type":"boolean"},"value":{"description":"The value to match.","type":"string"}},"type":"object"},"type":"array"}},"title":"Company Search - FullEnrich input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"description":"One page of matching records plus FullEnrich's paging state.","oneOf":[{"type":"null"},{"additionalProperties":false,"properties":{"companies":{"description":"Matching companies with FullEnrich's firmographic record.","items":{"properties":{"companyId":{"description":"FullEnrich's own company identifier.","type":"string"},"companyType":{"description":"Ownership type, e.g. Public Company, Privately Held.","type":"string"},"description":{"description":"Company description.","type":"string"},"domain":{"description":"Primary company domain.","type":"string"},"foundedYear":{"description":"Year the company was founded. Zero when FullEnrich holds none.","type":"integer"},"headcount":{"description":"Employees FullEnrich currently counts.","type":"integer"},"headcountRange":{"description":"Employee headcount band, e.g. 5001-10000.","type":"string"},"headquarters":{"description":"Headquarters address.","properties":{"city":{"description":"City.","type":"string"},"country":{"description":"Country name.","type":"string"},"countryCode":{"description":"ISO 3166-1 alpha-2 country code.","type":"string"},"line1":{"description":"First address line.","type":"string"},"line2":{"description":"Second address line, carrying city, region, postal code and country.","type":"string"},"region":{"description":"State or region.","type":"string"}},"type":"object"},"image":{"description":"Company logo URL.","format":"uri","type":"string"},"industry":{"description":"Main industry.","type":"string"},"linkedinFollowers":{"description":"LinkedIn follower count.","type":"integer"},"linkedinHandle":{"description":"Company LinkedIn vanity handle.","type":"string"},"linkedinId":{"description":"Company LinkedIn numeric id.","type":"string"},"linkedinUrl":{"description":"Company LinkedIn page URL.","format":"uri","type":"string"},"name":{"description":"Company name.","type":"string"},"offices":{"description":"Every other office FullEnrich holds for the company.","items":{"properties":{"line1":{"description":"First address line.","type":"string"},"line2":{"description":"Second address line, carrying city, region, postal code and country.","type":"string"}},"type":"object"},"type":"array"},"specialties":{"description":"Specialties the company lists for itself.","items":{"type":"string"},"type":"array"},"website":{"description":"Company website URL.","format":"uri","type":"string"}},"required":["name"],"type":"object"},"type":"array"},"nextCursor":{"description":"Cursor for the next page, or null when this lane is complete. Send it back as cursor.","type":["string","null"]},"offset":{"description":"Rows skipped before this page.","type":"integer"},"total":{"description":"Rows matching the filters across all pages.","type":"integer"}},"required":["companies"],"type":"object"}]},"found":{"description":"False when nothing matched the filters.","type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"Company Search - FullEnrich output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"Company Search - FullEnrich","tags":["company-search"],"x-mint":{"href":"/api-reference/company-search/fullenrich"},"x-payment-info":{"price":{"currency":"USD","max":"2.520000","min":"0.000000","mode":"dynamic"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"currency":"USD","max":"2.520000","min":"0.001000","minimumUsd":"0.001000","mode":"dynamic","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"currency":"USD","max":"2.520000","min":"0.000000","minimumUsd":null,"mode":"dynamic","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/company_search.peopledatalabs":{"post":{"description":"Search People Data Labs' company dataset with SQL or an Elasticsearch query and get the full firmographic record back, including funding history and the headcount growth, tenure and churn series. Billed per company returned.\n\n**Price:** billed per result - \\$120.00 per 1,000 results, capped at \\$9,960.00 per 1,000 requests.\n\n**Routing:** one lane serves this API today, so a failed attempt has nowhere to fail over to. Payment outcome follows the selected rail's settlement policy.\n\n**Catalog:** [Company Search - People Data Labs pricing and uptime](https://getanyapi.com/api/company-search/peopledatalabs) - live USD price, lane routing, and measured 30-day uptime. [Every Company_search endpoint](https://getanyapi.com/api/company-search).","operationId":"company_search_peopledatalabs","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"limit":1,"sql":"SELECT * FROM company WHERE website = 'posthog.com'"},"schema":{"additionalProperties":false,"anyOf":[{"required":["sql"]},{"required":["query"]}],"example":{"limit":1,"sql":"SELECT * FROM company WHERE website = 'posthog.com'"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"dataInclude":{"description":"Comma-separated People Data Labs fields to include, or a leading - list to exclude. Projection changes the payload only; billing still follows companies returned.","type":"string"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"limit":{"default":10,"description":"Maximum companies to return. Every company returned is billed, so start at 1 to check a query and read total before asking for more.","maximum":83,"minimum":1,"type":"integer"},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"query":{"additionalProperties":true,"description":"Elasticsearch-style query over the People Data Labs company dataset, e.g. {\"bool\": {\"must\": [{\"term\": {\"website\": \"posthog.com\"}}]}}. Send this or sql, never both.","type":"object"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"sql":{"description":"People Data Labs SQL, in the form SELECT * FROM company WHERE ... . String literals take single quotes, only SELECT * is supported, and field names must be real People Data Labs company fields including nested subfields such as location.country. Do not include a LIMIT clause; People Data Labs rejects it. Use limit instead. Send this or query, never both.","minLength":1,"type":"string"},"titlecase":{"description":"Return text in title case instead of People Data Labs' lowercase default.","type":"boolean"}},"title":"Company Search - People Data Labs input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"description":"The matching companies plus the total the query matched. People Data Labs paginates with a scroll token that is not exposed here, so a call returns one page and total tells you how much is behind it.","oneOf":[{"type":"null"},{"additionalProperties":false,"properties":{"companies":{"description":"Matching company records, up to limit.","items":{"properties":{"affiliatedEntities":{"description":"People Data Labs company ids of affiliated entities.","items":{"type":"string"},"type":"array"},"affiliatedProfiles":{"description":"People Data Labs company ids of affiliated profiles.","items":{"type":"string"},"type":"array"},"allSubsidiaries":{"description":"People Data Labs company ids of every subsidiary, at any depth.","items":{"type":"string"},"type":"array"},"alternativeDomains":{"description":"Other domains the company owns.","items":{"type":"string"},"type":"array"},"alternativeNames":{"description":"Other names the company trades under.","items":{"type":"string"},"type":"array"},"averageEmployeeTenure":{"description":"Average employee tenure in years.","type":"number"},"averageTenureByLevel":{"additionalProperties":true,"description":"Average tenure in years, keyed by seniority level.","type":"object"},"averageTenureByRole":{"additionalProperties":true,"description":"Average tenure in years, keyed by role.","type":"object"},"directSubsidiaries":{"description":"People Data Labs company ids of direct subsidiaries.","items":{"type":"string"},"type":"array"},"employeeChurnRate":{"additionalProperties":true,"description":"Churn rate keyed by window, e.g. 12_month.","type":"object"},"employeeCount":{"description":"Employees People Data Labs currently counts.","type":"integer"},"employeeCountByClass":{"additionalProperties":true,"description":"Headcount keyed by job class.","type":"object"},"employeeCountByCountry":{"additionalProperties":true,"description":"Headcount keyed by country.","type":"object"},"employeeCountByMonth":{"additionalProperties":true,"description":"Headcount keyed by YYYY-MM month.","type":"object"},"employeeCountByRole":{"additionalProperties":true,"description":"Headcount keyed by role.","type":"object"},"employeeCountBySubRole":{"additionalProperties":true,"description":"Headcount keyed by sub-role.","type":"object"},"employeeGrowthRate":{"additionalProperties":true,"description":"Headcount growth rate keyed by window.","type":"object"},"employeeGrowthRate12MonthByClass":{"additionalProperties":true,"description":"Twelve-month headcount growth rate keyed by job class.","type":"object"},"employeeGrowthRate12MonthByCountry":{"additionalProperties":true,"description":"Twelve-month headcount growth keyed by country, each entry carrying current and prior headcount.","type":"object"},"employeeGrowthRate12MonthByRole":{"additionalProperties":true,"description":"Twelve-month headcount growth rate keyed by role.","type":"object"},"employeeTurnoverRate":{"additionalProperties":true,"description":"Turnover rate keyed by window, e.g. 3_month, 12_month.","type":"object"},"facebookUrl":{"description":"Company Facebook page URL.","format":"uri","type":"string"},"founded":{"description":"Year the company was founded.","type":"integer"},"fundingRounds":{"description":"Number of funding rounds raised.","type":"integer"},"fundingStages":{"description":"Every funding stage the company has raised.","items":{"type":"string"},"type":"array"},"grossAdditionsByMonth":{"additionalProperties":true,"description":"Employees joined, keyed by YYYY-MM month.","type":"object"},"grossDeparturesByMonth":{"additionalProperties":true,"description":"Employees departed, keyed by YYYY-MM month.","type":"object"},"headline":{"description":"One-line company tagline.","type":"string"},"immediateParent":{"description":"People Data Labs company id of the immediate parent company.","type":"string"},"industry":{"description":"Company industry.","type":"string"},"industryV2":{"description":"Company industry on People Data Labs' newer taxonomy.","type":"string"},"inferredRevenue":{"description":"Inferred annual revenue band, e.g. $50M-$100M.","type":"string"},"lastFundingUtc":{"description":"UTC epoch timestamp in seconds (Unix time) of the most recent funding round. Multiply by 1000 for a JS Date in milliseconds.","type":"number"},"latestFundingStage":{"description":"Most recent funding stage, e.g. series_e.","type":"string"},"linkedinFollowers":{"description":"LinkedIn follower count.","type":"integer"},"linkedinId":{"description":"Company LinkedIn numeric id.","type":"string"},"linkedinSlug":{"description":"Company LinkedIn vanity slug.","type":"string"},"linkedinUrl":{"description":"Company LinkedIn page URL.","format":"uri","type":"string"},"location":{"description":"Company headquarters.","properties":{"addressLine2":{"description":"Second line of the address.","type":"string"},"continent":{"description":"Continent.","type":"string"},"country":{"description":"Country.","type":"string"},"geo":{"description":"Coordinates as \"lat,lon\".","type":"string"},"locality":{"description":"City.","type":"string"},"metro":{"description":"Metro area.","type":"string"},"name":{"description":"Location as one display string.","type":"string"},"postalCode":{"description":"Postal code.","type":"string"},"region":{"description":"State or region.","type":"string"},"streetAddress":{"description":"Street address.","type":"string"}},"type":"object"},"medianEmployeeTenure":{"description":"Median employee tenure in years.","type":"number"},"medianTenureByLevel":{"additionalProperties":true,"description":"Median tenure in years, keyed by seniority level.","type":"object"},"medianTenureByRole":{"additionalProperties":true,"description":"Median tenure in years, keyed by role.","type":"object"},"micExchange":{"description":"MIC code of the exchange the company lists on.","type":"string"},"naicsCodes":{"description":"NAICS classification for the company.","items":{"properties":{"code":{"description":"NAICS code.","type":"string"},"industryGroup":{"description":"NAICS industry group.","type":"string"},"naicsIndustry":{"description":"NAICS industry.","type":"string"},"nationalIndustry":{"description":"NAICS national industry.","type":"string"},"sector":{"description":"NAICS sector.","type":"string"},"subSector":{"description":"NAICS sub-sector.","type":"string"}},"required":["code"],"type":"object"},"type":"array"},"name":{"description":"Company name as People Data Labs displays it.","type":"string"},"nameNormalized":{"description":"Lowercase normalized company name, the form People Data Labs matches on.","type":"string"},"pdlId":{"description":"People Data Labs persistent company id.","type":"string"},"profiles":{"description":"Every social profile People Data Labs links to the company.","items":{"type":"string"},"type":"array"},"sicCodes":{"description":"SIC classification for the company.","items":{"properties":{"code":{"description":"SIC code.","type":"string"},"industryGroup":{"description":"SIC industry group.","type":"string"},"industrySector":{"description":"SIC industry sector.","type":"string"},"majorGroup":{"description":"SIC major group.","type":"string"}},"required":["code"],"type":"object"},"type":"array"},"size":{"description":"Employee headcount band, e.g. 11-50.","type":"string"},"summary":{"description":"Long company description.","type":"string"},"tags":{"description":"Descriptive tags for the company.","items":{"type":"string"},"type":"array"},"ticker":{"description":"Stock ticker, for listed companies.","type":"string"},"totalFundingRaised":{"description":"Total capital raised, in USD.","type":"number"},"twitterUrl":{"description":"Company X (Twitter) profile URL.","format":"uri","type":"string"},"type":{"description":"Ownership type, e.g. private, public.","type":"string"},"ultimateParent":{"description":"People Data Labs company id of the ultimate parent company.","type":"string"},"website":{"description":"Company website domain.","type":"string"}},"required":["name"],"type":"object"},"type":"array"},"datasetVersion":{"description":"Version of the People Data Labs dataset these records came from.","type":"string"},"total":{"description":"Companies matching the query across the whole dataset, not just this page.","type":"integer"}},"required":["companies"],"type":"object"}]},"found":{"description":"False when the query matched no company.","type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"Company Search - People Data Labs output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"Company Search - People Data Labs","tags":["company-search"],"x-mint":{"href":"/api-reference/company-search/peopledatalabs"},"x-payment-info":{"price":{"currency":"USD","max":"9.960000","min":"0.000000","mode":"dynamic"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"currency":"USD","max":"9.960000","min":"0.001000","minimumUsd":"0.001000","mode":"dynamic","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"currency":"USD","max":"9.960000","min":"0.000000","minimumUsd":null,"mode":"dynamic","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/company_search.prospeo":{"post":{"description":"Build an account list from Prospeo by industry, headcount, revenue, location, technology, funding and hiring activity. One flat price per page of 25.\n\n**Price:** \\$66.00 per 1,000 requests (flat per request - same cost regardless of results returned).\n\n**Routing:** one lane serves this API today, so a failed attempt has nowhere to fail over to. Payment outcome follows the selected rail's settlement policy.\n\n**Catalog:** [Company Search - Prospeo pricing and uptime](https://getanyapi.com/api/company-search/prospeo) - live USD price, lane routing, and measured 30-day uptime. [Every Company_search endpoint](https://getanyapi.com/api/company-search).","operationId":"company_search_prospeo","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"company":{"websites":{"include":["stripe.com"]}},"page":1},"schema":{"additionalProperties":false,"example":{"company":{"websites":{"include":["stripe.com"]}},"page":1},"minProperties":1,"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"company":{"additionalProperties":true,"description":"Filter by company names or websites, e.g. {\"names\": {\"include\": [\"Stripe\"]}, \"websites\": {\"include\": [\"stripe.com\"]}}.","type":"object"},"companyAttributes":{"additionalProperties":true,"description":"Filter by company characteristics, e.g. B2B, has pricing, has a free trial.","type":"object"},"companyEmailProvider":{"description":"Filter by the company's email MX provider.","items":{"type":"string"},"type":"array"},"companyFounded":{"additionalProperties":true,"description":"Filter by founding year range.","type":"object"},"companyFunding":{"additionalProperties":true,"description":"Filter by funding stage or amount raised.","type":"object"},"companyHeadcountByDepartment":{"description":"Filter by headcount within a department.","items":{"type":"string"},"type":"array"},"companyHeadcountCustom":{"additionalProperties":true,"description":"Filter by a custom employee count range.","type":"object"},"companyHeadcountGrowth":{"additionalProperties":true,"description":"Filter by headcount growth.","type":"object"},"companyHeadcountRange":{"description":"Filter by Prospeo's predefined employee count bands.","items":{"type":"string"},"type":"array"},"companyIndustry":{"additionalProperties":true,"description":"Filter by company industry.","type":"object"},"companyJobPostingHiringFor":{"description":"Filter by the roles the company is currently hiring for.","items":{"type":"string"},"type":"array"},"companyJobPostingQuantity":{"additionalProperties":true,"description":"Filter by how many roles the company has open.","type":"object"},"companyKeywords":{"additionalProperties":true,"description":"Filter by keywords found in company data.","type":"object"},"companyLocationSearch":{"additionalProperties":true,"description":"Filter by company headquarters location.","type":"object"},"companyNaics":{"additionalProperties":true,"description":"Filter by NAICS codes.","type":"object"},"companyRevenue":{"additionalProperties":true,"description":"Filter by revenue range.","type":"object"},"companySics":{"additionalProperties":true,"description":"Filter by SIC codes.","type":"object"},"companyTechnology":{"additionalProperties":true,"description":"Filter by technologies the company uses.","type":"object"},"companyType":{"description":"Filter by ownership type.","enum":["Private","Public","Non Profit","Other"],"type":"string"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"page":{"default":1,"description":"Page number, one-based. Prospeo returns 25 results per page and charges one flat price per page.","minimum":1,"type":"integer"},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true}},"title":"Company Search - Prospeo input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"description":"One page of matching records plus Prospeo's paging counters.","oneOf":[{"type":"null"},{"additionalProperties":false,"properties":{"companies":{"description":"Matching companies with Prospeo's full firmographic record.","items":{"properties":{"attributes":{"description":"What Prospeo detects about how the company sells.","properties":{"hasDemo":{"description":"The website offers a demo.","type":"boolean"},"hasDownloadable":{"description":"The website offers a download.","type":"boolean"},"hasFreeTrial":{"description":"The website offers a free trial.","type":"boolean"},"hasMobileApps":{"description":"The company publishes mobile apps.","type":"boolean"},"hasOnlineReviews":{"description":"The company has online reviews.","type":"boolean"},"hasPricing":{"description":"The website publishes pricing.","type":"boolean"},"isB2b":{"description":"The company sells to businesses.","type":"boolean"}},"type":"object"},"companyId":{"description":"Prospeo's own company identifier. Send it back as this SKU's companyId input.","type":"string"},"crunchbaseUrl":{"description":"Company Crunchbase profile URL.","format":"uri","type":"string"},"description":{"description":"Company description as the company writes it.","type":"string"},"descriptionAi":{"description":"Prospeo's own AI-written company summary.","type":"string"},"descriptionSeo":{"description":"Meta description from the company's website.","type":"string"},"domain":{"description":"Primary company domain.","type":"string"},"emailTech":{"description":"How the company's email is hosted.","properties":{"domain":{"description":"Domain the company's email addresses use.","type":"string"},"mxProvider":{"description":"Mail provider behind the domain's MX records.","type":"string"}},"type":"object"},"employeeCount":{"description":"Employees Prospeo currently counts.","type":"integer"},"employeeCountOnProspeo":{"description":"Employees of this company that Prospeo holds a profile for.","type":"integer"},"employeeRange":{"description":"Employee headcount band, e.g. 10000+.","type":"string"},"facebookUrl":{"description":"Company Facebook page URL.","format":"uri","type":"string"},"founded":{"description":"Year the company was founded.","type":"integer"},"funding":{"description":"Funding history.","properties":{"events":{"description":"One entry per funding round.","items":{"properties":{"amount":{"description":"Amount raised in USD.","type":"number"},"amountPrinted":{"description":"Amount raised as a display string.","type":"string"},"link":{"description":"Source URL for the round.","format":"uri","type":"string"},"raisedUtc":{"description":"UTC epoch timestamp in seconds (Unix time) the round closed. Multiply by 1000 for a JS Date in milliseconds.","type":"number"},"stage":{"description":"Round stage, e.g. Series E-J.","type":"string"}},"type":"object"},"type":"array"},"latestStage":{"description":"Most recent funding stage.","type":"string"},"latestUtc":{"description":"UTC epoch timestamp in seconds (Unix time) of the most recent round. Multiply by 1000 for a JS Date in milliseconds.","type":"number"},"rounds":{"description":"Number of funding rounds raised.","type":"integer"},"totalRaised":{"description":"Total capital raised, in USD.","type":"number"},"totalRaisedPrinted":{"description":"Total capital raised as a display string.","type":"string"}},"type":"object"},"image":{"description":"Company logo URL.","format":"uri","type":"string"},"industry":{"description":"Company industry.","type":"string"},"instagramUrl":{"description":"Company Instagram profile URL.","format":"uri","type":"string"},"jobPostings":{"description":"Open roles Prospeo currently sees for the company.","properties":{"activeCount":{"description":"Open roles currently posted.","type":"integer"},"activeTitles":{"description":"Titles of the open roles.","items":{"type":"string"},"type":"array"}},"type":"object"},"keywords":{"description":"Keywords Prospeo assigns the company.","items":{"type":"string"},"type":"array"},"linkedinId":{"description":"Company LinkedIn numeric id.","type":"string"},"linkedinUrl":{"description":"Company LinkedIn page URL.","format":"uri","type":"string"},"location":{"description":"Company headquarters.","properties":{"city":{"description":"City.","type":"string"},"country":{"description":"Country name.","type":"string"},"countryCode":{"description":"ISO 3166-1 alpha-2 country code.","type":"string"},"rawAddress":{"description":"Headquarters address as one display string.","type":"string"},"state":{"description":"State or region.","type":"string"}},"type":"object"},"naicsCodes":{"description":"NAICS classification codes for the company.","items":{"type":"string"},"type":"array"},"name":{"description":"Company name.","type":"string"},"otherWebsites":{"description":"Other domains the company owns.","items":{"type":"string"},"type":"array"},"phoneHq":{"description":"Headquarters switchboard number.","properties":{"country":{"description":"Country the number belongs to.","type":"string"},"countryCode":{"description":"ISO 3166-1 alpha-2 code for that country.","type":"string"},"international":{"description":"Number in international format.","type":"string"},"national":{"description":"Number in national format.","type":"string"},"phone":{"description":"Phone number as Prospeo stores it.","type":"string"}},"type":"object"},"revenueRange":{"description":"Annual revenue band in USD.","properties":{"max":{"description":"Upper bound in USD.","type":"number"},"min":{"description":"Lower bound in USD.","type":"number"}},"type":"object"},"revenueRangePrinted":{"description":"Annual revenue band as a display string.","type":"string"},"sicCodes":{"description":"SIC classification codes for the company.","items":{"type":"string"},"type":"array"},"technologies":{"description":"Technologies Prospeo detects in the company's stack.","items":{"type":"string"},"type":"array"},"twitterUrl":{"description":"Company X (Twitter) profile URL.","format":"uri","type":"string"},"type":{"description":"Ownership type, e.g. Private, Public, Non Profit.","type":"string"},"website":{"description":"Company website URL.","format":"uri","type":"string"},"youtubeUrl":{"description":"Company YouTube channel URL.","format":"uri","type":"string"}},"required":["name"],"type":"object"},"type":"array"},"currentPage":{"description":"Page number this response holds, one-based.","type":"integer"},"perPage":{"description":"Results Prospeo returns per page. Prospeo fixes this at 25 and charges one flat price per page.","type":"integer"},"totalCount":{"description":"Results matching the filters across all pages.","type":"integer"},"totalPages":{"description":"Pages of results behind these filters.","type":"integer"}},"required":["companies"],"type":"object"}]},"found":{"description":"False when no record matched the filters.","type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"Company Search - Prospeo output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"Company Search - Prospeo","tags":["company-search"],"x-mint":{"href":"/api-reference/company-search/prospeo"},"x-payment-info":{"price":{"amount":"0.066000","currency":"USD","mode":"fixed"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"amount":"0.066000","currency":"USD","minimumUsd":"0.001000","mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"amount":"0.066000","currency":"USD","minimumUsd":null,"mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/company_search.quickenrich":{"post":{"description":"Find companies by name, domain, industry, headcount, revenue, services, or location, and get back their site, LinkedIn, and contact details. Billed per company returned.\n\n**Price:** billed per result - \\$7.20 per 1,000 results, capped at \\$720.00 per 1,000 requests.\n\n**Routing:** one lane serves this API today, so a failed attempt has nowhere to fail over to. Payment outcome follows the selected rail's settlement policy.\n\n**Catalog:** [Company Search - QuickEnrich pricing and uptime](https://getanyapi.com/api/company-search/quickenrich) - live USD price, lane routing, and measured 30-day uptime. [Every Company_search endpoint](https://getanyapi.com/api/company-search).","operationId":"company_search_quickenrich","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"country":{"include":["US"]},"employeeCount":{"include":["20 - 99"]},"limit":2},"schema":{"additionalProperties":false,"anyOf":[{"required":["companyName"]},{"required":["companyDomain"]},{"required":["industry"]},{"required":["employeeCount"]},{"required":["revenue"]},{"required":["services"]},{"required":["city"]},{"required":["country"]},{"required":["homePageText"]},{"required":["linkedinBio"]}],"example":{"country":{"include":["US"]},"employeeCount":{"include":["20 - 99"]},"limit":2},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"city":{"additionalProperties":false,"description":"Filter on city name.","properties":{"exclude":{"description":"Reject any of these values.","items":{"type":"string"},"maxItems":50,"type":"array"},"include":{"description":"Match any of these values.","items":{"type":"string"},"maxItems":50,"type":"array"}},"type":"object"},"companyDomain":{"additionalProperties":false,"description":"Filter on company website domain. Include only; exclude is rejected upstream.","properties":{"include":{"description":"Match any of these values.","items":{"type":"string"},"maxItems":50,"type":"array"}},"type":"object"},"companyName":{"additionalProperties":false,"description":"Filter on company name.","properties":{"exclude":{"description":"Reject any of these values.","items":{"type":"string"},"maxItems":50,"type":"array"},"include":{"description":"Match any of these values.","items":{"type":"string"},"maxItems":50,"type":"array"}},"type":"object"},"country":{"additionalProperties":false,"description":"Filter on ISO 3166-1 alpha-2 country code, e.g. \"US\".","properties":{"exclude":{"description":"Reject any of these values.","items":{"type":"string"},"maxItems":50,"type":"array"},"include":{"description":"Match any of these values.","items":{"type":"string"},"maxItems":50,"type":"array"}},"type":"object"},"employeeCount":{"additionalProperties":false,"description":"Filter on headcount band. Note these bands differ from the employeeCount string returned on a result.","properties":{"exclude":{"description":"Reject any of these values.","items":{"enum":["\u003c 5","5 - 19","20 - 99","100 - 249","250 - 499","500 - 999","1000 - 4999","5000 - 9999","\u003e10000","Not Available"],"type":"string"},"maxItems":50,"type":"array"},"include":{"description":"Match any of these values.","items":{"enum":["\u003c 5","5 - 19","20 - 99","100 - 249","250 - 499","500 - 999","1000 - 4999","5000 - 9999","\u003e10000","Not Available"],"type":"string"},"maxItems":50,"type":"array"}},"type":"object"},"homePageText":{"additionalProperties":false,"description":"Filter on words found in the company home page text.","properties":{"exclude":{"description":"Reject any of these values.","items":{"type":"string"},"maxItems":50,"type":"array"},"include":{"description":"Match any of these values.","items":{"type":"string"},"maxItems":50,"type":"array"}},"type":"object"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"includeFullText":{"description":"Return the full home page text on each company instead of a snippet.","type":"boolean"},"industry":{"additionalProperties":false,"description":"Filter on industry label. Values must match the QuickEnrich industry vocabulary exactly, e.g. \"IT Services and IT Consulting\".","properties":{"exclude":{"description":"Reject any of these values.","items":{"type":"string"},"maxItems":50,"type":"array"},"include":{"description":"Match any of these values.","items":{"type":"string"},"maxItems":50,"type":"array"}},"type":"object"},"limit":{"default":10,"description":"Maximum companies to return on this page. Every company returned is billed.","maximum":100,"minimum":1,"type":"integer"},"linkedinBio":{"additionalProperties":false,"description":"Filter on words found in the company LinkedIn bio.","properties":{"exclude":{"description":"Reject any of these values.","items":{"type":"string"},"maxItems":50,"type":"array"},"include":{"description":"Match any of these values.","items":{"type":"string"},"maxItems":50,"type":"array"}},"type":"object"},"page":{"default":1,"description":"One-based result page.","minimum":1,"type":"integer"},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"revenue":{"additionalProperties":false,"description":"Filter on revenue band.","properties":{"exclude":{"description":"Reject any of these values.","items":{"enum":["\u003c 500k","500k - 1 Million","1 - 2.5 Million","2.5 - 5 Million","5 - 10 Million","10 - 20 Million","20 - 50 Million","50 - 100 Million","100 - 500 Million","500 Million - 1 Billion","\u003e1 Billion","Not Available"],"type":"string"},"maxItems":50,"type":"array"},"include":{"description":"Match any of these values.","items":{"enum":["\u003c 500k","500k - 1 Million","1 - 2.5 Million","2.5 - 5 Million","5 - 10 Million","10 - 20 Million","20 - 50 Million","50 - 100 Million","100 - 500 Million","500 Million - 1 Billion","\u003e1 Billion","Not Available"],"type":"string"},"maxItems":50,"type":"array"}},"type":"object"},"services":{"additionalProperties":false,"description":"Filter on the services a company lists.","properties":{"exclude":{"description":"Reject any of these values.","items":{"type":"string"},"maxItems":50,"type":"array"},"include":{"description":"Match any of these values.","items":{"type":"string"},"maxItems":50,"type":"array"}},"type":"object"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true}},"title":"Company Search - QuickEnrich input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"description":"One page of results, or null when the request matched nothing.","oneOf":[{"type":"null"},{"additionalProperties":false,"properties":{"companies":{"description":"Companies on this page.","items":{"properties":{"city":{"description":"City on the employer record.","type":"string"},"country":{"description":"ISO 3166-1 alpha-2 country code on the employer record.","type":"string"},"domain":{"description":"Company website domain.","type":"string"},"email":{"description":"Work email address.","type":"string"},"emailDomain":{"description":"Domain the work email resolves to.","type":"string"},"employeeCount":{"description":"Headcount band, e.g. \"20 - 99\". Upstream band vocabulary; \"Not Available\" means the band is unknown.","type":"string"},"finalEmailDomain":{"description":"Domain the company's email addresses finally resolve to after redirects.","type":"string"},"homePageText":{"description":"Home page text. A snippet unless includeFullText was set.","type":"string"},"industry":{"description":"Industry label.","type":"string"},"linkedinBio":{"description":"Company LinkedIn bio snippet.","type":"string"},"linkedinUrl":{"description":"Person's LinkedIn profile URL.","type":"string"},"name":{"description":"Company name.","type":"string"},"phone":{"description":"Direct business phone line held for the person. Mostly desk lines; read phoneType before treating it as a mobile.","type":"string"},"region":{"description":"State or region code on the employer record.","type":"string"},"revenue":{"description":"Revenue band, e.g. \"1 - 2.5 Million\". Upstream band vocabulary; \"Not Available\" means the band is unknown.","type":"string"},"serviceCount":{"description":"How many services the company lists.","type":"integer"},"services":{"description":"Services the company lists. Passed through untyped: every captured response so far has this empty, so the element shape is unverified."}},"required":["name"],"type":"object"},"type":"array"},"hasMore":{"description":"Whether the upstream reports further pages beyond this one.","type":"boolean"},"page":{"description":"One-based page this response covers.","type":"integer"},"pageSize":{"description":"Records per page upstream applied.","type":"integer"},"total":{"description":"Total records matching the request.","type":"integer"},"totalPages":{"description":"Total pages available.","type":"integer"}},"required":["companies","page","pageSize","total","totalPages","hasMore"],"type":"object"}]},"found":{"description":"False when the filters matched no companies.","type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"Company Search - QuickEnrich output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"Company Search - QuickEnrich","tags":["company-search"],"x-mint":{"href":"/api-reference/company-search/quickenrich"},"x-payment-info":{"price":{"currency":"USD","max":"0.720000","min":"0.000000","mode":"dynamic"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"currency":"USD","max":"0.720000","min":"0.001000","minimumUsd":"0.001000","mode":"dynamic","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"currency":"USD","max":"0.720000","min":"0.000000","minimumUsd":null,"mode":"dynamic","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/company_search.theirstack":{"post":{"description":"Build an account list from TheirStack by the technologies, keywords and buying-intent topics a company mentions in its job posts, plus headcount, revenue, funding, industry and location. Billed per company returned.\n\n**Price:** billed per result - \\$199.20 per 1,000 results, capped at \\$9,960.00 per 1,000 requests.\n\n**Routing:** one lane serves this API today, so a failed attempt has nowhere to fail over to. Payment outcome follows the selected rail's settlement policy.\n\n**Catalog:** [Company Search - TheirStack pricing and uptime](https://getanyapi.com/api/company-search/theirstack) - live USD price, lane routing, and measured 30-day uptime. [Every Company_search endpoint](https://getanyapi.com/api/company-search).","operationId":"company_search_theirstack","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"companyDomainOr":["posthog.com"],"limit":1},"schema":{"additionalProperties":false,"example":{"companyDomainOr":["posthog.com"],"limit":1},"minProperties":1,"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"companyCountryCodeNot":{"description":"Return companies whose HQ country code is not any of the ones passed here, case sensitive. Pass ISO2 country codes.","items":{"type":"string"},"type":"array"},"companyCountryCodeOr":{"description":"Return companies whose HQ country code is any of the ones passed here, case sensitive. Pass ISO2 country codes.","items":{"type":"string"},"type":"array"},"companyDescriptionPatternAccentInsensitive":{"description":"Set to True to make company description searches accent insensitive. For example, \"á\" will match \"a\" as well.","type":"boolean"},"companyDescriptionPatternNot":{"description":"Case-insensitive patterns to match in the company description. Will return companies that match any of the patterns.","items":{"type":"string"},"type":"array"},"companyDescriptionPatternOr":{"description":"Case-insensitive patterns to match in the company description. Will return companies that match any of the patterns.","items":{"type":"string"},"type":"array"},"companyDomainNot":{"description":"Only return companies that don't match these domains exactly. It accepts full urls (https://www.google.com/) and emails (john.polo@gmail.com).","items":{"type":"string"},"type":"array"},"companyDomainOr":{"description":"Only return companies that match these domains exactly. It accepts full urls (https://www.google.com/) and emails (john.polo@gmail.com). This filter acts as an OR filter, so if you pass more than one company domain, it will return companies that match any of the domains.","items":{"type":"string"},"type":"array"},"companyIdOr":{"description":"Only return companies that match these IDs exactly. This filter acts as an OR filter, so if you pass more than one company ID, it will return companies that match any of the IDs.","items":{"type":"string"},"type":"array"},"companyInvestorsOr":{"description":"Investors of the company","items":{"type":"string"},"type":"array"},"companyInvestorsPartialMatchOr":{"description":"Investors of the company. Will return companies for which any of their investors contains any of the substrings passed here. For example, if you pass 'andree', all funds that match it (like 'Andreessen Horowitz', 'Andreessen Horowitz LLC', etc).","items":{"type":"string"},"type":"array"},"companyKeywordSlugAnd":{"description":"Return results from companies that have mentioned all of these keywords in their jobs. Case sensitive. Pass slugs. Check out all the keywords we track at GET /v0/catalog/keywords","items":{"type":"string"},"type":"array"},"companyKeywordSlugNot":{"description":"Return results from companies that haven't mentioned any of these keywords in their jobs. Case sensitive. Pass slugs. Check out all the keywords we track at GET /v0/catalog/keywords","items":{"type":"string"},"type":"array"},"companyKeywordSlugOr":{"description":"Return results from companies that have mentioned any of these keywords in their jobs. Case sensitive. Pass slugs. Check out all the keywords we track at GET /v0/catalog/keywords","items":{"type":"string"},"type":"array"},"companyLinkedinUrlExists":{"description":"(Use `property_exists_or / property_exists_and` instead) Only return companies with a LinkedIn URL","type":"boolean"},"companyLinkedinUrlOr":{"description":"Return companies whose LinkedIn URL matches any of the slugs passed here. Can also pass full LinkedIn company URLs.","items":{"type":"string"},"type":"array"},"companyListIdNot":{"description":"Return companies that don't belong to any of the company lists passed here","items":{"type":"string"},"type":"array"},"companyListIdOr":{"description":"Return companies that belong to any of the company lists passed here","items":{"type":"string"},"type":"array"},"companyLocationPatternOr":{"description":"Return companies whose city matches any of the patterns passed here. Case insensitive. For example, if you pass 'san francisco', it will return companies whose city is 'San Francisco', 'San Francisco Bay Area', etc.","items":{"type":"string"},"type":"array"},"companyNameCaseInsensitiveOr":{"description":"Only return companies that match these names exactly, case-insensitively.","items":{"type":"string"},"type":"array"},"companyNameNot":{"description":"Only return companies that don't match these names exactly, case-sensitively.","items":{"type":"string"},"type":"array"},"companyNameOr":{"description":"Only return companies that match these names exactly, case-sensitively. This filter acts as an OR filter, so if you pass more than one company name, it will return companies that match any of the names.","items":{"type":"string"},"type":"array"},"companyNamePartialMatchNot":{"description":"Company names. Will return companies whose name doesn't contain any of the the substrings passed here, case-insensitively. For example, if you pass 'google', it will exclude 'Google', 'Google LLC', 'Google Inc', etc.","items":{"type":"string"},"type":"array"},"companyNamePartialMatchOr":{"description":"Company names. Will return companies whose name contain any of the the substrings passed here, case-insensitively. For example, if you pass \"google\", it will return \"Google\", \"Google LLC\", \"Google Inc\", etc.","items":{"type":"string"},"type":"array"},"companyTagsOr":{"description":"Return companies that match any of these keywords","items":{"type":"string"},"type":"array"},"companyTechnologySlugAnd":{"description":"Will return jobs from companies that that have mentioned all of these technologies in their jobs (not necessarily in the jobs returned). Case sensitive. Pass slugs. Check out all the technologies we track at GET /v0/catalog/technologies. Deprecated: use company_keyword_slug_and instead.","items":{"type":"string"},"type":"array"},"companyTechnologySlugNot":{"description":"Will return jobs from companies that that haven't mentioned any of these technologies in their jobs. Case sensitive. Pass slugs. Check out all the technologies we track at GET /v0/catalog/technologies. Deprecated: use company_keyword_slug_not instead.","items":{"type":"string"},"type":"array"},"companyTechnologySlugOr":{"description":"Will return jobs from companies that that have mentioned any of these technologies in their jobs (not necessarily in the jobs returned). Case sensitive. Pass slugs. Check out all the technologies we track at GET /v0/catalog/technologies. Deprecated: use company_keyword_slug_or instead.","items":{"type":"string"},"type":"array"},"companyType":{"description":"Filter by company type.","type":"string"},"expandTechnologySlugs":{"description":"Specify technology slugs to include detailed technology usage information for each company. The response will include a 'technologies_found' field containing metrics like confidence score, ranking, and job count for each specified technology. Note: If a technology is not listed for a company, it means that company does not use that technology. This feature is useful for enriching company data with their technology stack details.","items":{"type":"string"},"type":"array"},"fundingStageOr":{"description":"Funding stages of companies returned. Possible values: ['angel', 'convertible_note', 'debt_financing', 'equity_crowdfunding', 'other', 'private_equity', 'seed', 'series_a', 'series_b', 'series_c', 'series_d', 'series_e', 'series_f', 'series_g', 'series_h', 'venture_round_not_specified', 'series_i', 'series_j', 'undisclosed', 'series_unknown', 'pre_seed', 'post_ipo_secondary', 'post_ipo_equity', 'post_ipo_debt', 'non_equity_assistance', 'late_vc', 'initial_coin_offering', 'growth_equity_vc', 'grant', 'early_vc', 'corporate_round', 'secondary_market', 'product_crowdfunding']","items":{"type":"string"},"type":"array"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"includeTotalResults":{"description":"When enabled, calculates and returns `total_results` and `total_companies` fields in the response. WARNING: This significantly slows down responses as it requires reading the entire dataset. Recommended usage: enable only for the initial request to get totals, then disable for subsequent pagination requests.","type":"boolean"},"industryIdNot":{"description":"Industry ids to exclude.You can use any of LinkedIn's Industry Codes V2 or GET /v0/catalog/industries","items":{"type":"string"},"type":"array"},"industryIdOr":{"description":"Industry codes. You can use any of LinkedIn's Industry Codes V2 or GET /v0/catalog/industries","items":{"type":"string"},"type":"array"},"industryNot":{"description":"Names of industries, case-insensitive. Results will exclude companies that belong to any of the industries specified in this parameter. Available values: GET /v0/catalog/industries WARNING: Deprecated parameter. Use the industry_id_not field instead.","items":{"type":"string"},"type":"array"},"industryOr":{"description":"Names of industries, case-insensitive. Results will only include companies that belong to any of the industries specified in this parameter. Available values: GET /v0/catalog/industries WARNING: Deprecated parameter. Use the industry_id_or field instead.","items":{"type":"string"},"type":"array"},"jobFilters":{"additionalProperties":true,"type":"object"},"keywordSlugAnd":{"description":"Return results from companies that have mentioned all of these keywords in their jobs. Case sensitive. Pass slugs. Check out all the keywords we track at GET /v0/catalog/keywords","items":{"type":"string"},"type":"array"},"keywordSlugNot":{"description":"Return results from companies that haven't mentioned any of these keywords in their jobs. Case sensitive. Pass slugs. Check out all the keywords we track at GET /v0/catalog/keywords","items":{"type":"string"},"type":"array"},"keywordSlugOr":{"description":"Return results from companies that have mentioned any of these keywords in their jobs. Case sensitive. Pass slugs. Check out all the keywords we track at GET /v0/catalog/keywords","items":{"type":"string"},"type":"array"},"lastFundingRoundDateGte":{"description":"Only return companies whose last funding round date is after or on this date. Format: 'YYYY-MM-DD'","type":"string"},"lastFundingRoundDateLte":{"description":"Only return companies whose last funding round date is before or on this date. Format: 'YYYY-MM-DD'","type":"string"},"limit":{"default":25,"description":"Rows to return on this page, up to TheirStack's maximum of 500. Every row returned is billed.","maximum":50,"minimum":1,"type":"integer"},"maxEmployeeCount":{"description":"Maximum number of employees in a company","type":"integer"},"maxEmployeeCountOrNull":{"description":"Maximum number of employees in a company. If we don't have company size information, we will return it as well.","type":"integer"},"maxFundingUsd":{"description":"Maximum company funding, in USD","type":"integer"},"maxRevenueUsd":{"description":"Maximum company revenue, in USD","type":"integer"},"minEmployeeCount":{"description":"Minimum number of employees in a company","type":"integer"},"minEmployeeCountOrNull":{"description":"Minimum number of employees in a company. If we don't have company size information, we will return it as well.","type":"integer"},"minFundingUsd":{"description":"Minimum company funding, in USD","type":"integer"},"minRevenueUsd":{"description":"Minimum company revenue, in USD","type":"integer"},"offset":{"description":"Number of results to skip. Required for offset-based pagination.","type":"integer"},"onlyYcCompanies":{"description":"Only return YC companies","type":"boolean"},"orderBy":{"description":"List of column objects. You can pass several columns to order by, in order of priority. Only `field` is required, `desc` is True by default","items":{"type":"string"},"type":"array"},"page":{"description":"Page number. Required when using page-based pagination.","type":"integer"},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"propertyExistsAnd":{"description":"Return companies that have all of these fields not null. For example, if you pass ['domain', 'linkedin_url'], it will return companies that have both domain AND linkedin_url set.","items":{"type":"string"},"type":"array"},"propertyExistsOr":{"description":"Return companies that have any of these fields not null. For example, if you pass ['domain', 'linkedin_url'], it will return companies that have a domain OR a linkedin_url set.","items":{"type":"string"},"type":"array"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"techFilters":{"additionalProperties":true,"description":"Filter by technologies and buying intent topics detected for the company","type":"object"},"technologySlugAnd":{"description":"Return results from companies that have mentioned all of these keywords in their jobs. Case sensitive. Pass slugs. Check out all the keywords we track at GET /v0/catalog/keywords","items":{"type":"string"},"type":"array"},"technologySlugNot":{"description":"Return results from companies that haven't mentioned any of these keywords in their jobs. Case sensitive. Pass slugs. Check out all the keywords we track at GET /v0/catalog/keywords","items":{"type":"string"},"type":"array"},"technologySlugOr":{"description":"Return results from companies that have mentioned any of these keywords in their jobs. Case sensitive. Pass slugs. Check out all the keywords we track at GET /v0/catalog/keywords","items":{"type":"string"},"type":"array"}},"title":"Company Search - TheirStack input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"description":"The matching rows plus TheirStack's result counters.","oneOf":[{"type":"null"},{"additionalProperties":false,"properties":{"companies":{"description":"Matching companies with TheirStack's firmographic record and the technology and keyword slugs found in their job posts.","items":{"properties":{"alexaRanking":{"description":"Alexa traffic rank for the company website.","type":"integer"},"annualRevenueReadable":{"description":"Estimated annual revenue as a display string, e.g. 4.2M.","type":"string"},"annualRevenueUsd":{"description":"Estimated annual revenue in USD.","type":"number"},"apolloId":{"description":"Apollo's identifier for the same company.","type":"string"},"city":{"description":"Headquarters city.","type":"string"},"companyId":{"description":"TheirStack's own company identifier.","type":"string"},"companyKeywords":{"description":"Keywords TheirStack assigns the company.","items":{"type":"string"},"type":"array"},"companyTags":{"description":"Tags TheirStack assigns the company.","items":{"type":"string"},"type":"array"},"country":{"description":"Headquarters country.","type":"string"},"countryCode":{"description":"ISO 3166-1 alpha-2 country code.","type":"string"},"domain":{"description":"Primary company domain.","type":"string"},"employeeCount":{"description":"Employees TheirStack currently counts.","type":"integer"},"employeeCountRange":{"description":"Employee headcount band, e.g. 201-500.","type":"string"},"foundedYear":{"description":"Year the company was founded.","type":"integer"},"fundingStage":{"description":"Most recent funding stage, e.g. series_b.","type":"string"},"hasBlurredData":{"description":"True when TheirStack redacted part of the record on this plan.","type":"boolean"},"image":{"description":"Company logo URL.","format":"uri","type":"string"},"industry":{"description":"Company industry.","type":"string"},"industryId":{"description":"TheirStack's identifier for that industry.","type":"string"},"investors":{"description":"Investors TheirStack records for the company.","items":{"type":"string"},"type":"array"},"isRecruitingAgency":{"description":"True when TheirStack classifies the company as a recruiting agency rather than a direct employer.","type":"boolean"},"keywordSlugs":{"description":"Keyword slugs found in the company's job posts. These are the values the keyword filters take.","items":{"type":"string"},"type":"array"},"lastFundingRoundReadable":{"description":"Most recent round size as a display string, e.g. $15M.","type":"string"},"lastFundingRoundUtc":{"description":"UTC epoch timestamp in seconds (Unix time) of the most recent funding round. Multiply by 1000 for a JS Date in milliseconds.","type":"number"},"linkedinId":{"description":"Company LinkedIn numeric id.","type":"string"},"linkedinUrl":{"description":"Company LinkedIn page URL.","format":"uri","type":"string"},"longDescription":{"description":"Company description as the company writes it.","type":"string"},"name":{"description":"Company name.","type":"string"},"numBuyingIntentTopics":{"description":"Distinct buying-intent topics detected in the company's job posts.","type":"integer"},"numJobs":{"description":"Job posts TheirStack holds for the company, all time.","type":"integer"},"numJobsFound":{"description":"Job posts of this company that matched your job filters, when you sent any.","type":"integer"},"numJobsLast30Days":{"description":"Job posts published in the last 30 days.","type":"integer"},"numKeywords":{"description":"Distinct keywords detected in the company's job posts.","type":"integer"},"numTechnologies":{"description":"Distinct technologies detected in the company's job posts.","type":"integer"},"possibleDomains":{"description":"Every domain TheirStack associates with the company.","items":{"type":"string"},"type":"array"},"postalCode":{"description":"Headquarters postal code.","type":"string"},"publiclyTradedExchange":{"description":"Exchange the company lists on.","type":"string"},"publiclyTradedSymbol":{"description":"Stock ticker, for listed companies.","type":"string"},"seoDescription":{"description":"Meta description from the company's website.","type":"string"},"technologiesFound":{"description":"The technologies from your technology filters that this company was matched on. Empty unless you filtered by technology.","items":{"properties":{"category":{"description":"Category the technology sits in.","type":"string"},"categorySlug":{"description":"Slug for that category.","type":"string"},"confidence":{"description":"How sure TheirStack is that the company uses it: high, medium or low.","type":"string"},"firstFoundUtc":{"description":"UTC epoch timestamp in seconds (Unix time) the technology was first seen. Multiply by 1000 for a JS Date in milliseconds.","type":"number"},"image":{"description":"Technology logo URL.","format":"uri","type":"string"},"jobs":{"description":"Job posts mentioning the technology, all time.","type":"integer"},"jobsLast180Days":{"description":"Job posts mentioning it in the last 180 days.","type":"integer"},"jobsLast30Days":{"description":"Job posts mentioning it in the last 30 days.","type":"integer"},"jobsLast7Days":{"description":"Job posts mentioning it in the last 7 days.","type":"integer"},"lastFoundUtc":{"description":"UTC epoch timestamp in seconds (Unix time) the technology was last seen. Multiply by 1000 for a JS Date in milliseconds.","type":"number"},"name":{"description":"Technology name.","type":"string"},"parentCategory":{"description":"Parent category.","type":"string"},"parentCategorySlug":{"description":"Slug for that parent category.","type":"string"},"rankWithinCategory":{"description":"Rank among the company's technologies in the same category, 1 being the most used.","type":"integer"},"relativeOccurrenceWithinCategory":{"description":"Share of the company's mentions within this category that are of this technology, 0 to 1.","type":"number"},"score":{"description":"TheirStack's own relevance score for the match.","type":"number"},"slug":{"description":"Technology slug. This is the value the technology filters take.","type":"string"},"thumbnail":{"description":"Smaller technology logo URL.","format":"uri","type":"string"},"type":{"description":"Whether the row is a technology or a buying-intent keyword.","type":"string"}},"required":["name"],"type":"object"},"type":"array"},"technologyNames":{"description":"Human-readable names for those technologies.","items":{"type":"string"},"type":"array"},"technologySlugs":{"description":"Technology slugs found in the company's job posts. These are the values the technology filters take.","items":{"type":"string"},"type":"array"},"totalFundingUsd":{"description":"Total capital raised, in USD.","type":"number"},"url":{"description":"Company website URL.","format":"uri","type":"string"},"urlSource":{"description":"Where TheirStack sourced the company website URL.","type":"string"},"ycBatch":{"description":"Y Combinator batch, e.g. W20, for companies that went through it.","type":"string"}},"required":["name"],"type":"object"},"type":"array"},"totalCompanies":{"description":"Distinct companies matching the filters. TheirStack computes it only when you send includeTotalResults.","type":"integer"},"totalResults":{"description":"Rows matching the filters across all pages. TheirStack computes it only when you send includeTotalResults, and omits it otherwise.","type":"integer"},"truncatedCompanies":{"description":"Companies TheirStack withheld because the plan's result ceiling was reached.","type":"integer"},"truncatedResults":{"description":"Rows TheirStack withheld because the plan's result ceiling was reached.","type":"integer"}},"required":["companies"],"type":"object"}]},"found":{"description":"False when nothing matched the filters.","type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"Company Search - TheirStack output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"Company Search - TheirStack","tags":["company-search"],"x-mint":{"href":"/api-reference/company-search/theirstack"},"x-payment-info":{"price":{"currency":"USD","max":"9.960000","min":"0.000000","mode":"dynamic"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"currency":"USD","max":"9.960000","min":"0.001000","minimumUsd":"0.001000","mode":"dynamic","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"currency":"USD","max":"9.960000","min":"0.000000","minimumUsd":null,"mode":"dynamic","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/congress.trades":{"post":{"description":"Get US Congress members' financial disclosures and stock trades (member, ticker, transaction type, amount range, and dates), filterable by member, ticker, or date range.\n\n**Price:** billed per result - \\$1.10 per 1,000 requests base + \\$2.09 per 1,000 results, capped at \\$53.40 per 1,000 requests.\n\n**Routing:** one lane serves this API today, so a failed attempt has nowhere to fail over to. Payment outcome follows the selected rail's settlement policy.\n\n**Catalog:** [Congress Stock Trades pricing and uptime](https://getanyapi.com/api/congress/trades) - live USD price, lane routing, and measured 30-day uptime. [Every Congress endpoint](https://getanyapi.com/api/congress).","operationId":"congress_trades","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"limit":5},"schema":{"additionalProperties":false,"example":{"limit":5},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"endDate":{"description":"Latest transaction date to include, inclusive, in YYYY-MM-DD format (e.g. 2026-06-01).","type":"string"},"firstName":{"description":"Filter by the congressional member's first name, case-insensitive partial match (e.g. Nancy).","type":"string"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"lastName":{"description":"Filter by the congressional member's last name, case-insensitive partial match (e.g. Pelosi).","type":"string"},"limit":{"description":"Maximum number of results to return (1-25, default 25). You are billed per result returned, so a lower limit costs less.","maximum":25,"minimum":1,"type":"integer"},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"startDate":{"description":"Earliest transaction date to include, inclusive, in YYYY-MM-DD format (e.g. 2026-01-01).","type":"string"},"ticker":{"description":"Filter to transactions involving this stock ticker symbol (e.g. NVDA).","type":"string"}},"required":[],"title":"Congress stock trades input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"description":"The result wrapper, or null when nothing was found.","oneOf":[{"type":"null"},{"additionalProperties":false,"properties":{"items":{"description":"Disclosure records: member name and chamber, stock ticker, transaction type, amount range, and transaction/report dates. Populated whenever the provider has data for the entity.","items":{"properties":{"amountRange":{"description":"Disclosed dollar amount range for the transaction.","type":"string"},"assetName":{"description":"Full name of the traded asset. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"assetType":{"description":"House disclosure asset class code, e.g. ST for stock or OP for option.","type":"string"},"chamber":{"description":"Congressional chamber, e.g. House or Senate.","type":"string"},"firstName":{"description":"Member's first name. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"id":{"description":"Stable disclosure record identifier. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"lastName":{"description":"Member's last name. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"owner":{"description":"Trade owner code, e.g. SP (spouse), JT (joint), DC (dependent child).","type":"string"},"reportedUtc":{"description":"UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds. Date the transaction was reported/disclosed.","type":"number"},"stateDistrict":{"description":"Member's state and district, e.g. PA11.","type":"string"},"symbol":{"description":"Stock ticker symbol of the traded asset. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"tradedUtc":{"description":"UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds. Date the transaction occurred.","type":"number"},"transactionType":{"description":"Transaction type code, e.g. P (purchase), S (sale).","type":"string"},"year":{"description":"Calendar year of the disclosure filing.","type":"integer"}},"required":["id","symbol"],"type":"object"},"type":"array","x-anyapi-must-populate":true}},"required":["items"],"type":"object"}]},"found":{"description":"True when at least one disclosure record was returned.","type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"Congress stock trades output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"Congress Stock Trades","tags":["congress"],"x-mint":{"href":"/api-reference/congress/trades"},"x-payment-info":{"price":{"currency":"USD","max":"0.053400","min":"0.001100","mode":"dynamic"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"currency":"USD","max":"0.053400","min":"0.001100","minimumUsd":"0.001000","mode":"dynamic","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"currency":"USD","max":"0.053400","min":"0.001100","minimumUsd":null,"mode":"dynamic","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/contact_enrichment.crustdata_v3":{"post":{"description":"Find one person's business emails, personal emails, and phone numbers from a LinkedIn profile URL or a business email, with a deliverability status on every email. Billed only when the person is found.\n\n**Price:** \\$240.00 per 1,000 requests (flat per request - same cost regardless of results returned).\n\n**Routing:** one lane serves this API today, so a failed attempt has nowhere to fail over to. Payment outcome follows the selected rail's settlement policy.\n\n**Catalog:** [Contact Enrichment - Crustdata v3 pricing and uptime](https://getanyapi.com/api/contact-enrichment/crustdata-v3) - live USD price, lane routing, and measured 30-day uptime. [Every Contact_enrichment endpoint](https://getanyapi.com/api/contact-enrichment).","operationId":"contact_enrichment_crustdata_v3","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"linkedinUrl":"https://www.linkedin.com/in/satyanadella"},"schema":{"additionalProperties":false,"example":{"linkedinUrl":"https://www.linkedin.com/in/satyanadella"},"oneOf":[{"required":["linkedinUrl"]},{"required":["email"]}],"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"email":{"description":"The person's business email address.","format":"email","type":"string"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"linkedinUrl":{"description":"LinkedIn profile URL, e.g. https://www.linkedin.com/in/satyanadella. Send exactly one of linkedinUrl or email.","format":"uri","type":"string"},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true}},"title":"Contact Enrichment - Crustdata v3 input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"description":"The person's contact details, or null when nothing matched.","oneOf":[{"type":"null"},{"properties":{"businessEmails":{"description":"Work email addresses.","items":{"properties":{"email":{"description":"Email address.","type":"string"},"status":{"description":"Deliverability status, e.g. deliverable or unknown.","type":"string"}},"required":["email"],"type":"object"},"type":"array"},"matchConfidence":{"description":"Confidence from 0 to 1 that the returned person is the one asked for.","type":"number"},"personId":{"description":"Crustdata person id.","type":"string"},"personalEmails":{"description":"Personal email addresses.","items":{"properties":{"email":{"description":"Email address.","type":"string"},"status":{"description":"Deliverability status, e.g. deliverable or unknown.","type":"string"}},"required":["email"],"type":"object"},"type":"array"},"phoneNumbers":{"description":"Phone numbers, as Crustdata stores them.","items":{"type":"string"},"type":"array"}},"required":["personId"],"type":"object"}]},"found":{"description":"False when no person matched the LinkedIn URL or email.","type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"Contact Enrichment - Crustdata v3 output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"Contact Enrichment - Crustdata v3","tags":["contact-enrichment"],"x-mint":{"href":"/api-reference/contact-enrichment/crustdata-v3"},"x-payment-info":{"price":{"amount":"0.240000","currency":"USD","mode":"fixed"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"amount":"0.240000","currency":"USD","minimumUsd":"0.001000","mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"amount":"0.240000","currency":"USD","minimumUsd":null,"mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/douyin.profile":{"post":{"description":"Look up a public Douyin profile by sec_user_id and return normalized profile statistics.\n\n**Price:** \\$1.20 per 1,000 requests (flat per request - same cost regardless of results returned).\n\n**Routing:** one lane serves this API today, so a failed attempt has nowhere to fail over to. Payment outcome follows the selected rail's settlement policy.\n\n**Catalog:** [Douyin Profile pricing and uptime](https://getanyapi.com/api/douyin/profile) - live USD price, lane routing, and measured 30-day uptime. [Every Douyin endpoint](https://getanyapi.com/api/douyin).","operationId":"douyin_profile","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"secUserId":"MS4wLjABAAAAW9FWcqS7RdQAWPd2AA5fL_ilmqsIFUCQ_Iym6Yh9_cUa6ZRqVLjVQSUjlHrfXY1Y"},"schema":{"additionalProperties":false,"example":{"secUserId":"MS4wLjABAAAAW9FWcqS7RdQAWPd2AA5fL_ilmqsIFUCQ_Iym6Yh9_cUa6ZRqVLjVQSUjlHrfXY1Y"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"secUserId":{"description":"Douyin sec_user_id for the public account.","minLength":1,"type":"string"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true}},"required":["secUserId"],"title":"Douyin profile input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"description":"Normalized profile, or null when not found.","oneOf":[{"type":"null"},{"properties":{"bio":{"description":"Profile biography.","type":"string"},"followers":{"description":"Follower count.","type":"integer"},"following":{"description":"Following count.","type":"integer"},"image":{"description":"Profile image URL. Populated whenever the provider has data for the entity.","format":"uri","type":"string","x-anyapi-must-populate":true},"likes":{"description":"Total likes received.","type":"integer"},"nickname":{"description":"Display name. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"posts":{"description":"Published post count.","type":"integer"},"secUserId":{"description":"Douyin sec_user_id. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"shortId":{"description":"Legacy numeric short ID.","type":"string"},"uniqueId":{"description":"Public Douyin handle when configured. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"userId":{"description":"Douyin user identifier. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true}},"required":["userId","secUserId"],"type":"object"}]},"found":{"description":"True when the profile was found.","type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"Douyin profile output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"Douyin Profile","tags":["douyin"],"x-mint":{"href":"/api-reference/douyin/profile"},"x-payment-info":{"price":{"amount":"0.001200","currency":"USD","mode":"fixed"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"amount":"0.001200","currency":"USD","minimumUsd":"0.001000","mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"amount":"0.001200","currency":"USD","minimumUsd":null,"mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/douyin.search_videos":{"post":{"description":"Search public Douyin videos by keyword with sorting, time, duration, and content filters.\n\n**Price:** \\$12.00 per 1,000 requests (flat per request - same cost regardless of results returned).\n\n**Routing:** one lane serves this API today, so a failed attempt has nowhere to fail over to. Payment outcome follows the selected rail's settlement policy.\n\n**Catalog:** [Douyin Video Search pricing and uptime](https://getanyapi.com/api/douyin/search-videos) - live USD price, lane routing, and measured 30-day uptime. [Every Douyin endpoint](https://getanyapi.com/api/douyin).","operationId":"douyin_search_videos","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"duration":"0","publishedWithin":0,"query":"机器人","sort":"relevance"},"schema":{"additionalProperties":false,"example":{"duration":"0","publishedWithin":0,"query":"机器人","sort":"relevance"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"backtrace":{"description":"Backtrace token returned by the previous page.","type":"string"},"cursor":{"description":"Pagination cursor from the previous response; omit for the first page.","minimum":0,"type":"integer"},"duration":{"default":"0","description":"Duration filter in minutes: any, under 1, 1 to 5, or over 5.","enum":["0","0-1","1-5","5-10000"],"type":"string"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"publishedWithin":{"default":0,"description":"Publication window in days. Use the canonical JSON integer 0 for any time, 1 for one day, 7 for seven days, or 180 for 180 days; legacy numeric strings remain accepted.","enum":[0,1,7,180,"0","1","7","180"],"type":["integer","string"]},"query":{"description":"Keyword to search for.","minLength":1,"type":"string"},"searchId":{"description":"Search ID returned by the previous page.","type":"string"},"sort":{"default":"relevance","description":"Sort order: relevance (Douyin's comprehensive ranking), most-liked, date-posted.","enum":["relevance","most-liked","date-posted"],"type":"string"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true}},"required":["query"],"title":"Douyin video search input","type":"object","x-anyapi-compat-values":{"sort":{"0":"relevance","1":"most-liked","2":"date-posted"}}}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"description":"Videos and pagination, or null when none were found.","oneOf":[{"type":"null"},{"additionalProperties":false,"properties":{"backtrace":{"description":"Backtrace token required for the next page.","type":"string"},"hasMore":{"description":"Whether another page is available.","type":"boolean"},"nextCursor":{"description":"Opaque cursor for the next page of videos, or null when this lane has no more. Pass it back as cursor to continue.","type":["string","null"]},"searchId":{"description":"Search ID required for the next page.","type":"string"},"videos":{"description":"Normalized matching videos. Populated whenever the provider has data for the entity.","items":{"properties":{"authorImage":{"description":"Author's avatar image URL.","type":"string"},"authorNickname":{"description":"Author display name. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"authorUniqueId":{"description":"Author's Douyin handle (unique id).","type":"string"},"authorUserId":{"description":"Author user identifier. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"authorVerified":{"description":"Whether the author's account is verified.","type":"boolean"},"caption":{"description":"Video caption. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"comments":{"description":"Comment count.","type":"integer"},"createdUtc":{"description":"UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds. Populated whenever the provider has data for the entity.","type":"number","x-anyapi-must-populate":true},"durationMs":{"description":"Video duration in milliseconds.","type":"integer"},"height":{"description":"Pixel height of the video.","type":"integer"},"id":{"description":"Video identifier. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"image":{"description":"Cover image URL.","format":"uri","type":"string"},"likes":{"description":"Like count.","type":"integer"},"region":{"description":"Two-letter region code the video was published from.","type":"string"},"saves":{"description":"Save count.","type":"integer"},"shares":{"description":"Share count.","type":"integer"},"url":{"description":"Canonical video URL. Populated whenever the provider has data for the entity.","format":"uri","type":"string","x-anyapi-must-populate":true},"videoUrl":{"description":"Playable video URL. The query string carries required access parameters, so keep it intact.","type":"string"},"views":{"description":"Play count.","type":"integer"},"width":{"description":"Pixel width of the video.","type":"integer"}},"required":["id"],"type":"object"},"type":"array","x-anyapi-must-populate":true}},"required":["videos","nextCursor","searchId","backtrace","hasMore"],"type":"object"}]},"found":{"description":"True when matching videos were found.","type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"Douyin video search output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"Douyin Video Search","tags":["douyin"],"x-mint":{"href":"/api-reference/douyin/search-videos"},"x-payment-info":{"price":{"amount":"0.012000","currency":"USD","mode":"fixed"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"amount":"0.012000","currency":"USD","minimumUsd":"0.001000","mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"amount":"0.012000","currency":"USD","minimumUsd":null,"mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/douyin.user_posts":{"post":{"description":"List public posts from a Douyin user with normalized engagement data and pagination.\n\n**Price:** \\$1.20 per 1,000 requests (flat per request - same cost regardless of results returned).\n\n**Routing:** one lane serves this API today, so a failed attempt has nowhere to fail over to. Payment outcome follows the selected rail's settlement policy.\n\n**Catalog:** [Douyin User Posts pricing and uptime](https://getanyapi.com/api/douyin/user-posts) - live USD price, lane routing, and measured 30-day uptime. [Every Douyin endpoint](https://getanyapi.com/api/douyin).","operationId":"douyin_user_posts","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"limit":20,"secUserId":"MS4wLjABAAAANXSltcLCzDGmdNFI2Q_QixVTr67NiYzjKOIP5s03CAE","sort":"newest"},"schema":{"additionalProperties":false,"example":{"limit":20,"secUserId":"MS4wLjABAAAANXSltcLCzDGmdNFI2Q_QixVTr67NiYzjKOIP5s03CAE","sort":"newest"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"cursor":{"description":"Pagination cursor from the previous response; omit for the first page.","type":"integer"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"limit":{"default":20,"description":"Requested page size. Values up to 20 are recommended.","type":"integer"},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"secUserId":{"description":"Douyin sec_user_id for the public account.","minLength":1,"type":"string"},"sort":{"default":"newest","description":"Post order: newest, most-popular.","enum":["newest","most-popular"],"type":"string"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true}},"required":["secUserId"],"title":"Douyin user posts input","type":"object","x-anyapi-compat-values":{"sort":{"0":"newest","1":"most-popular"}}}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"description":"Posts and pagination, or null when none were found.","oneOf":[{"type":"null"},{"additionalProperties":false,"properties":{"hasMore":{"description":"Whether another page is available.","type":"boolean"},"nextCursor":{"description":"Opaque cursor for the next page of posts, or null when this lane has no more. Pass it back as cursor to continue.","type":["string","null"]},"posts":{"description":"Normalized Douyin posts. Populated whenever the provider has data for the entity.","items":{"properties":{"authorImage":{"description":"Author's avatar image URL.","type":"string"},"authorNickname":{"description":"Author display name. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"authorSecUserId":{"description":"Author sec_user_id. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"authorUniqueId":{"description":"Author's Douyin handle (unique id).","type":"string"},"authorUserId":{"description":"Author user identifier. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"authorVerified":{"description":"Whether the author's account is verified.","type":"boolean"},"caption":{"description":"Post caption. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"comments":{"description":"Comment count.","type":"integer"},"createdUtc":{"description":"UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds. Populated whenever the provider has data for the entity.","type":"number","x-anyapi-must-populate":true},"durationMs":{"description":"Media duration in milliseconds.","type":"integer"},"height":{"description":"Pixel height of the media.","type":"integer"},"id":{"description":"Post identifier. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"image":{"description":"Cover image URL.","format":"uri","type":"string"},"likes":{"description":"Like count.","type":"integer"},"region":{"description":"Two-letter region code the post was published from.","type":"string"},"saves":{"description":"Save count.","type":"integer"},"shares":{"description":"Share count.","type":"integer"},"url":{"description":"Canonical post URL. Populated whenever the provider has data for the entity.","format":"uri","type":"string","x-anyapi-must-populate":true},"views":{"description":"Play count.","type":"integer"},"width":{"description":"Pixel width of the media.","type":"integer"}},"required":["id"],"type":"object"},"type":"array","x-anyapi-must-populate":true}},"required":["posts","nextCursor","hasMore"],"type":"object"}]},"found":{"description":"True when posts were found.","type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"Douyin user posts output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"Douyin User Posts","tags":["douyin"],"x-mint":{"href":"/api-reference/douyin/user-posts"},"x-payment-info":{"price":{"amount":"0.001200","currency":"USD","mode":"fixed"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"amount":"0.001200","currency":"USD","minimumUsd":"0.001000","mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"amount":"0.001200","currency":"USD","minimumUsd":null,"mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/douyin.video":{"post":{"description":"Fetch a public Douyin video by share URL with normalized author and engagement data.\n\n**Price:** \\$1.20 per 1,000 requests (flat per request - same cost regardless of results returned).\n\n**Routing:** one lane serves this API today, so a failed attempt has nowhere to fail over to. Payment outcome follows the selected rail's settlement policy.\n\n**Catalog:** [Douyin Video pricing and uptime](https://getanyapi.com/api/douyin/video) - live USD price, lane routing, and measured 30-day uptime. [Every Douyin endpoint](https://getanyapi.com/api/douyin).","operationId":"douyin_video","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"url":"https://www.douyin.com/video/6894784055775071503"},"schema":{"additionalProperties":false,"example":{"url":"https://www.douyin.com/video/6894784055775071503"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"url":{"description":"Public Douyin video share URL.","format":"uri","type":"string"}},"required":["url"],"title":"Douyin video input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"description":"Normalized video, or null when not found.","oneOf":[{"type":"null"},{"properties":{"authorImage":{"description":"Author's avatar image URL.","type":"string"},"authorNickname":{"description":"Author display name. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"authorSecUserId":{"description":"Author sec_user_id. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"authorUniqueId":{"description":"Author's Douyin handle (unique id).","type":"string"},"authorUserId":{"description":"Author user identifier. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"authorVerified":{"description":"Whether the author's account is verified.","type":"boolean"},"caption":{"description":"Video caption. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"comments":{"description":"Comment count.","type":"integer"},"createdUtc":{"description":"UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds. Populated whenever the provider has data for the entity.","type":"number","x-anyapi-must-populate":true},"durationMs":{"description":"Video duration in milliseconds.","type":"integer"},"height":{"description":"Pixel height of the video.","type":"integer"},"id":{"description":"Video identifier. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"image":{"description":"Video cover image URL.","format":"uri","type":"string"},"likes":{"description":"Like count.","type":"integer"},"region":{"description":"Two-letter region code the video was published from.","type":"string"},"saves":{"description":"Save count.","type":"integer"},"shares":{"description":"Share count.","type":"integer"},"url":{"description":"Canonical Douyin video URL. Populated whenever the provider has data for the entity.","format":"uri","type":"string","x-anyapi-must-populate":true},"videoUrl":{"description":"Playable video URL. The query string carries required access parameters, so keep it intact.","type":"string"},"views":{"description":"Play count.","type":"integer"},"width":{"description":"Pixel width of the video.","type":"integer"}},"required":["id"],"type":"object"}]},"found":{"description":"True when the video was found.","type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"Douyin video output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"Douyin Video","tags":["douyin"],"x-mint":{"href":"/api-reference/douyin/video"},"x-payment-info":{"price":{"amount":"0.001200","currency":"USD","mode":"fixed"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"amount":"0.001200","currency":"USD","minimumUsd":"0.001000","mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"amount":"0.001200","currency":"USD","minimumUsd":null,"mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/douyin.video_comments":{"post":{"description":"List public comments on a Douyin video with author and engagement data.\n\n**Price:** \\$1.20 per 1,000 requests (flat per request - same cost regardless of results returned).\n\n**Routing:** one lane serves this API today, so a failed attempt has nowhere to fail over to. Payment outcome follows the selected rail's settlement policy.\n\n**Catalog:** [Douyin Video Comments pricing and uptime](https://getanyapi.com/api/douyin/video-comments) - live USD price, lane routing, and measured 30-day uptime. [Every Douyin endpoint](https://getanyapi.com/api/douyin).","operationId":"douyin_video_comments","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"videoId":"7448118827402972455"},"schema":{"additionalProperties":false,"example":{"videoId":"7448118827402972455"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"cursor":{"description":"Pagination cursor from the previous response; omit for the first page.","minimum":0,"type":"integer"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"videoId":{"description":"Douyin aweme_id for the video.","minLength":1,"type":"string"}},"required":["videoId"],"title":"Douyin video comments input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"description":"Comments and pagination, or null when none were found.","oneOf":[{"type":"null"},{"additionalProperties":false,"properties":{"comments":{"description":"Normalized video comments. Populated whenever the provider has data for the entity.","items":{"properties":{"authorImage":{"description":"Author profile image URL.","format":"uri","type":"string"},"authorNickname":{"description":"Author display name. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"authorSecUserId":{"description":"Author sec_user_id. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"authorUniqueId":{"description":"Author public handle.","type":"string"},"authorUserId":{"description":"Author user identifier. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"createdUtc":{"description":"UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds. Populated whenever the provider has data for the entity.","type":"number","x-anyapi-must-populate":true},"id":{"description":"Comment identifier. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"ipLabel":{"description":"Approximate location label shown by Douyin.","type":"string"},"likes":{"description":"Comment like count.","type":"integer"},"replyCount":{"description":"Direct reply count.","type":"integer"},"text":{"description":"Comment text. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"videoId":{"description":"Commented video identifier. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true}},"required":["id","videoId"],"type":"object"},"type":"array","x-anyapi-must-populate":true},"hasMore":{"description":"Whether another page is available.","type":"boolean"},"nextCursor":{"description":"Opaque cursor for the next page of comments, or null when this lane has no more. Pass it back as cursor to continue.","type":["string","null"]},"total":{"description":"Total comment count reported by Douyin.","type":"integer"}},"required":["comments","nextCursor","hasMore","total"],"type":"object"}]},"found":{"description":"True when comments were found.","type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"Douyin video comments output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"Douyin Video Comments","tags":["douyin"],"x-mint":{"href":"/api-reference/douyin/video-comments"},"x-payment-info":{"price":{"amount":"0.001200","currency":"USD","mode":"fixed"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"amount":"0.001200","currency":"USD","minimumUsd":"0.001000","mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"amount":"0.001200","currency":"USD","minimumUsd":null,"mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/ebay.product":{"post":{"description":"Fetch one eBay listing by URL and get the full offer record: price, condition, shipping, item location, seller feedback, quantity, watchers, and live auction state (bid count and end time).\n\n**Price:** \\$0.50 per 1,000 requests (flat per request - same cost regardless of results returned).\n\n**Routing:** one lane serves this API today, so a failed attempt has nowhere to fail over to. Payment outcome follows the selected rail's settlement policy.\n\n**Catalog:** [eBay Product pricing and uptime](https://getanyapi.com/api/ebay/product) - live USD price, lane routing, and measured 30-day uptime. [Every Ebay endpoint](https://getanyapi.com/api/ebay).","operationId":"ebay_product","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"url":"https://www.ebay.com/itm/133576802017"},"schema":{"additionalProperties":false,"example":{"url":"https://www.ebay.com/itm/133576802017"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"url":{"description":"Full eBay listing URL (e.g. https://www.ebay.com/itm/133576802017). The marketplace is taken from the host, so an ebay.co.uk or ebay.de URL returns that site's listing and currency. Item ids come back on every row of ebay.search and ebay.sold_listings.","type":"string"}},"required":["url"],"title":"eBay product input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"description":"Listing wrapper, or null when the URL resolved to no listing.","oneOf":[{"type":"null"},{"additionalProperties":false,"properties":{"items":{"description":"Listing detail record (one element, for the requested listing URL). Populated whenever the provider has data for the entity.","items":{"properties":{"availability":{"description":"Stock state as eBay reports it (e.g. InStock, OutOfStock).","type":"string"},"bestOfferEnabled":{"description":"True when the seller accepts Best Offer on this listing.","type":"boolean"},"bidCount":{"description":"Bids placed so far, for auction listings.","type":"integer"},"brand":{"description":"Brand as listed, when the seller filled it in.","type":"string"},"categories":{"description":"eBay category path the listing sits in.","items":{"type":"string"},"type":"array"},"condition":{"description":"Item condition as listed (e.g. New, Used). Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"currency":{"description":"ISO currency code of the price (e.g. USD, GBP).","type":"string"},"endsUtc":{"description":"UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds.","type":"number"},"freeShipping":{"description":"True when the listing ships free.","type":"boolean"},"gtin":{"description":"Global Trade Item Number (UPC/EAN) as listed.","type":"string"},"image":{"description":"Primary listing image URL. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"images":{"description":"All listing images, primary first.","items":{"properties":{"height":{"description":"Image height in pixels.","type":"integer"},"url":{"description":"Image URL.","type":"string"},"width":{"description":"Image width in pixels.","type":"integer"}},"type":"object"},"type":"array"},"itemId":{"description":"eBay item identifier. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"itemLocation":{"description":"Where the item ships from, as displayed (e.g. Brooklyn, New York, United States).","type":"string"},"listingType":{"description":"Sale format (e.g. Buy It Now, Auction).","type":"string"},"model":{"description":"Model as listed, when the seller filled it in.","type":"string"},"mpn":{"description":"Manufacturer part number as listed. eBay sellers frequently set this to the literal \"Does Not Apply\"; ebay.product_full returns the full item-specifics table instead.","type":"string"},"price":{"description":"Current asking price, or the current bid on a live auction, in the site currency. Populated whenever the provider has data for the entity.","type":"number","x-anyapi-must-populate":true},"productId":{"description":"eBay catalog product identifier the listing is matched to.","type":"string"},"quantityAvailable":{"description":"Units the seller still has available, when the listing shows a quantity.","type":"integer"},"quantitySold":{"description":"Units sold on this listing, when eBay shows a sold count.","type":"integer"},"returnsAccepted":{"description":"True when the seller accepts returns.","type":"boolean"},"sellerFeedbackCount":{"description":"Seller's lifetime feedback count.","type":"integer"},"sellerFeedbackPercent":{"description":"Seller's positive-feedback percentage.","type":"number"},"sellerName":{"description":"Seller's eBay username, or the store's display name when the seller runs an eBay Store. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"sellerUrl":{"description":"Seller's eBay store or listings page.","type":"string"},"shippingCost":{"description":"Shipping cost to the default destination as a numeric amount; absent when eBay quotes no flat cost.","type":"number"},"subtitle":{"description":"Seller subtitle shown under the listing title.","type":"string"},"title":{"description":"Listing title as it appears on eBay. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"updatedUtc":{"description":"UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds. When the listing was last modified.","type":"number"},"url":{"description":"Canonical listing URL (tracking query params stripped). Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"watchers":{"description":"Number of shoppers watching the listing, when eBay shows it.","type":"integer"}},"required":["itemId","title","url"],"type":"object"},"type":"array","x-anyapi-must-populate":true}},"required":["items"],"type":"object"}]},"found":{"description":"True when the listing was found.","type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"eBay product output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"eBay Product","tags":["ebay"],"x-mint":{"href":"/api-reference/ebay/product"},"x-payment-info":{"price":{"amount":"0.000500","currency":"USD","mode":"fixed"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"amount":"0.001000","currency":"USD","minimumUsd":"0.001000","mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"amount":"0.000500","currency":"USD","minimumUsd":null,"mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/ebay.product_full":{"post":{"description":"Fetch one eBay listing by URL with the complete item-specifics table the seller filled in (MPN, model, capacity, compatibility and every other per-category attribute), the seller's full description, every listing image, and the seller's feedback record.\n\n**Price:** \\$1.80 per 1,000 requests (flat per request - same cost regardless of results returned).\n\n**Routing:** one lane serves this API today, so a failed attempt has nowhere to fail over to. Payment outcome follows the selected rail's settlement policy.\n\n**Catalog:** [eBay Product Full pricing and uptime](https://getanyapi.com/api/ebay/product-full) - live USD price, lane routing, and measured 30-day uptime. [Every Ebay endpoint](https://getanyapi.com/api/ebay).","operationId":"ebay_product_full","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"url":"https://www.ebay.com/itm/133576802017"},"schema":{"additionalProperties":false,"example":{"url":"https://www.ebay.com/itm/133576802017"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"url":{"description":"Full eBay listing URL (e.g. https://www.ebay.com/itm/133576802017). Works on ended and sold listings as well as live ones, so it composes with ebay.sold_listings: pull the comps cheaply, then enrich the few you care about.","type":"string"}},"required":["url"],"title":"eBay product full input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"description":"Listing wrapper, or null when the URL resolved to no listing.","oneOf":[{"type":"null"},{"additionalProperties":false,"properties":{"items":{"description":"Listing detail record with the full item-specifics table (one element, for the requested listing URL). Populated whenever the provider has data for the entity.","items":{"properties":{"availability":{"description":"Stock state as eBay reports it (e.g. in_stock, out_of_stock).","type":"string"},"brand":{"description":"Brand as listed, when the seller filled it in.","type":"string"},"category":{"description":"Full category path, e.g. \"Electronics\u003eCell Phones \u0026 Accessories\u003eCell Phones \u0026 Smartphones\".","type":"string"},"condition":{"description":"Item condition as listed (e.g. New, Used). Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"countryCode":{"description":"ISO country code of the eBay marketplace the listing is on.","type":"string"},"currency":{"description":"ISO currency code of the price (e.g. USD, GBP).","type":"string"},"description":{"description":"The seller's own listing description, as plain text. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"gtin":{"description":"Global Trade Item Number (UPC/EAN) as listed.","type":"string"},"image":{"description":"Primary listing image URL. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"images":{"description":"All listing image URLs, primary first. Populated whenever the provider has data for the entity.","items":{"type":"string"},"type":"array","x-anyapi-must-populate":true},"itemId":{"description":"eBay item identifier. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"itemLocation":{"description":"Where the item ships from, as displayed (e.g. Brooklyn, New York, United States).","type":"string"},"listingType":{"description":"Sale format (e.g. Buy It Now, Auction, Buy It Now + Best Offer).","type":"string"},"price":{"description":"Current effective price in the site currency: the discounted price when the seller is running a sale, otherwise the asking price. Populated whenever the provider has data for the entity.","type":"number","x-anyapi-must-populate":true},"quantityAvailable":{"description":"Units the seller still has available, when the listing shows a quantity.","type":"integer"},"quantitySold":{"description":"Units sold on this listing, when eBay shows a sold count.","type":"integer"},"returnWindow":{"description":"Days the buyer has to return the item, when the seller accepts returns.","type":"integer"},"sellerFeedbackCount":{"description":"Seller's lifetime feedback count.","type":"integer"},"sellerFeedbackPercent":{"description":"Seller's positive-feedback percentage.","type":"number"},"sellerName":{"description":"Seller's eBay username, or the store's display name when the seller runs an eBay Store. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"sellerUrl":{"description":"Seller's eBay store or listings page.","type":"string"},"specifications":{"description":"The listing's item-specifics table, as the seller filled it in. This is where MPN, Model, Storage Capacity, Compatible Brand and every other per-category attribute lives; the set of names varies by category. eBay's boilerplate condition blurb is removed. Populated whenever the provider has data for the entity.","items":{"properties":{"name":{"description":"Attribute name as eBay labels it (e.g. MPN, Storage Capacity).","type":"string"},"value":{"description":"Attribute value as the seller entered it.","type":"string"}},"type":"object"},"type":"array","x-anyapi-must-populate":true},"title":{"description":"Listing title as it appears on eBay. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"url":{"description":"Canonical listing URL (tracking query params stripped). Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true}},"required":["itemId","title","url"],"type":"object"},"type":"array","x-anyapi-must-populate":true}},"required":["items"],"type":"object"}]},"found":{"description":"True when the listing was found.","type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"eBay product full output","type":"object","x-anyapi-heavy":true},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"eBay Product Full","tags":["ebay"],"x-mint":{"href":"/api-reference/ebay/product-full"},"x-payment-info":{"price":{"amount":"0.001800","currency":"USD","mode":"fixed"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"amount":"0.001800","currency":"USD","minimumUsd":"0.001000","mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"amount":"0.001800","currency":"USD","minimumUsd":null,"mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/ebay.search":{"post":{"description":"Search eBay active listings by keyword with optional price-range, item-condition, listing-type, and sort filters and get title, price, condition, shipping, and seller in one normalized response.\n\n**Price:** billed per result - \\$1.10 per 1,000 requests base + \\$2.58 per 1,000 results, capped at \\$65.50 per 1,000 requests.\n\n**Routing:** one lane serves this API today, so a failed attempt has nowhere to fail over to. Payment outcome follows the selected rail's settlement policy.\n\n**Catalog:** [eBay Search pricing and uptime](https://getanyapi.com/api/ebay/search) - live USD price, lane routing, and measured 30-day uptime. [Every Ebay endpoint](https://getanyapi.com/api/ebay).","operationId":"ebay_search","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"limit":3,"query":"nintendo switch","sort":"price_low"},"schema":{"additionalProperties":false,"example":{"limit":3,"query":"nintendo switch","sort":"price_low"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"condition":{"description":"Filter by one or more item conditions; omit for all conditions (e.g. [\"new\", \"open_box\"]).","items":{"enum":["new","open_box","refurbished","used","for_parts"],"type":"string"},"type":"array"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"limit":{"description":"Maximum number of results to return (1 to 25, default 25).","maximum":25,"minimum":1,"type":"integer"},"listingType":{"description":"Restrict to a listing format; omit or use all for both (e.g. buy_it_now for fixed-price only).","enum":["all","auction","buy_it_now"],"type":"string"},"maxPrice":{"description":"Optional maximum item price in USD.","minimum":0,"type":"integer"},"minPrice":{"description":"Optional minimum item price in USD.","minimum":0,"type":"integer"},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"query":{"description":"Search keywords, e.g. \"nintendo switch\" or \"vintage levis 501\".","type":"string"},"sort":{"description":"Result sort order; omit for eBay's Best Match (e.g. price_low sorts by lowest price plus shipping first).","enum":["best_match","ending_soonest","newly_listed","price_low","price_high"],"type":"string"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true}},"required":["query"],"title":"eBay search input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"oneOf":[{"type":"null"},{"additionalProperties":false,"properties":{"items":{"description":"Listing records: title, price, condition, shipping cost, seller info, image, and item URL. Populated whenever the provider has data for the entity.","items":{"properties":{"bidCount":{"description":"Bids placed so far, for auction listings.","type":"integer"},"condition":{"type":"string"},"currency":{"description":"ISO currency code of the price (e.g. USD).","type":"string"},"image":{"description":"Primary listing image URL. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"itemId":{"description":"eBay item identifier. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"listingType":{"description":"Auction, FixedPrice, etc.","type":"string"},"price":{"description":"Listing price.","type":"number"},"sellerFeedbackCount":{"description":"Seller's lifetime feedback count.","type":"number"},"sellerFeedbackPercent":{"description":"Seller positive-feedback percentage.","type":"number"},"sellerName":{"type":"string"},"shippingCost":{"description":"Shipping cost or free-delivery label.","type":"string"},"title":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"url":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true}},"required":["itemId","title","url"],"type":"object"},"type":"array","x-anyapi-must-populate":true}},"required":["items"],"type":"object"}]},"found":{"type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"eBay search output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"eBay Search","tags":["ebay"],"x-mint":{"href":"/api-reference/ebay/search"},"x-payment-info":{"price":{"currency":"USD","max":"0.065500","min":"0.001100","mode":"dynamic"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"currency":"USD","max":"0.065500","min":"0.001100","minimumUsd":"0.001000","mode":"dynamic","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"currency":"USD","max":"0.065500","min":"0.001100","minimumUsd":null,"mode":"dynamic","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/ebay.sold_listings":{"post":{"description":"Retrieve recently sold eBay listings for any keyword with optional price-range, condition, and sort filters (sold price, sale date, condition, seller, item details); ideal for pricing research.\n\n**Price:** billed per result - \\$22.00 per 1,000 requests base + \\$2.64 per 1,000 results, capped at \\$88.00 per 1,000 requests.\n\n**Routing:** one lane serves this API today, so a failed attempt has nowhere to fail over to. Payment outcome follows the selected rail's settlement policy.\n\n**Catalog:** [eBay Sold Listings pricing and uptime](https://getanyapi.com/api/ebay/sold-listings) - live USD price, lane routing, and measured 30-day uptime. [Every Ebay endpoint](https://getanyapi.com/api/ebay).","operationId":"ebay_sold_listings","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"limit":10,"query":"iphone 13 pro","sort":"ended_recently"},"schema":{"additionalProperties":false,"example":{"limit":10,"query":"iphone 13 pro","sort":"ended_recently"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"condition":{"default":"any","description":"Item condition filter (e.g. used).","enum":["any","new","used"],"type":"string"},"freeShipping":{"description":"Only include listings that sold with free shipping.","type":"boolean"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"limit":{"description":"Maximum number of results to return (1-25, default 25). You are billed per result returned, so a lower limit costs less.","maximum":25,"minimum":1,"type":"integer"},"listingType":{"description":"Restrict to a listing format; omit or use all for both (e.g. auction for auction sales only).","enum":["all","auction","buy_it_now"],"type":"string"},"maxPrice":{"description":"Optional maximum sold price in the site currency (e.g. 500).","minimum":0,"type":"number"},"minPrice":{"description":"Optional minimum sold price in the site currency (e.g. 200).","minimum":0,"type":"number"},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"query":{"description":"Search keyword for sold items (e.g. iphone 13 pro).","type":"string"},"returnsAccepted":{"description":"Only include listings from sellers who accept returns.","type":"boolean"},"seller":{"description":"Restrict to sold listings from one seller username (e.g. rainierconsignment).","type":"string"},"site":{"default":"ebay.com","description":"eBay country site to search. Sold-listing coverage is currently US only.","enum":["ebay.com"],"type":"string"},"sort":{"description":"Result sort order; omit for eBay's default best-match order (e.g. price_high sorts by highest sold price first).","enum":["ended_recently","price_low","price_high"],"type":"string"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true}},"required":["query"],"title":"eBay sold listings input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"oneOf":[{"type":"null"},{"additionalProperties":false,"properties":{"items":{"description":"Sold listing records: title, sold price, sale date, condition, seller, and item URL. Populated whenever the provider has data for the entity.","items":{"properties":{"bidCount":{"description":"Number of bids the listing received, for auction sales.","type":"integer"},"condition":{"description":"Item condition as listed (e.g. Pre-Owned).","type":"string"},"countryCode":{"description":"ISO country code of the eBay marketplace the sale happened on.","type":"string"},"epid":{"description":"eBay catalog product identifier (ePID), when the listing is matched to a catalog product.","type":"string"},"image":{"description":"Primary listing image URL. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"images":{"description":"All listing image URLs, primary first.","items":{"type":"string"},"type":"array"},"itemId":{"description":"eBay item identifier. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"listingType":{"description":"Sale format (e.g. Fixed price, Auction).","type":"string"},"sellerFeedbackCount":{"description":"Seller's lifetime feedback count, when available.","type":"integer"},"sellerFeedbackPercent":{"description":"Seller's positive-feedback percentage, when available.","type":"number"},"sellerUsername":{"description":"Seller's eBay username, when available.","type":"string"},"shippingCost":{"description":"Shipping cost as displayed on the listing (e.g. \"Free delivery\", \"$5.55 delivery\").","type":"string"},"soldCurrency":{"description":"ISO currency code of the sold price (e.g. USD).","type":"string"},"soldPrice":{"description":"Final sold price in the site currency.","type":"number"},"soldUtc":{"description":"UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds.","type":"number"},"title":{"description":"Listing title as it appeared on eBay. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"url":{"description":"Canonical listing URL. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true}},"required":["itemId","title","url"],"type":"object"},"type":"array","x-anyapi-must-populate":true}},"required":["items"],"type":"object"}]},"found":{"type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"eBay sold listings output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"eBay Sold Listings","tags":["ebay"],"x-mint":{"href":"/api-reference/ebay/sold-listings"},"x-payment-info":{"price":{"currency":"USD","max":"0.088000","min":"0.022000","mode":"dynamic"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"currency":"USD","max":"0.088000","min":"0.022000","minimumUsd":"0.001000","mode":"dynamic","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"currency":"USD","max":"0.088000","min":"0.022000","minimumUsd":null,"mode":"dynamic","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/email.find":{"post":{"description":"Find a person's work email address from their name and company domain.\n\n**Price:** \\$30.80 per 1,000 requests (flat per request - same cost regardless of results returned).\n\n**Routing:** 2 independent lanes are available in execution order. A failed attempt uses the next lane only when the request's payment authorizes that lane's price; the normalized schema stays the same.\n\n**Catalog:** [Email Finder pricing and uptime](https://getanyapi.com/api/email/find) - live USD price, lane routing, and measured 30-day uptime. [Every Email endpoint](https://getanyapi.com/api/email).\n\n**How it works:** AnyAPI runs up to three independent email finders in sequence, cheapest first. The first source that returns an address wins and the rest are never called, so most lookups are billed at the bottom of the published price range and only the harder ones reach the top. A source that holds no record of the person returns nothing rather than guessing a likely address, and the next source is tried. When none of them finds an address the response is found:false with a null data, and the call is not charged.","operationId":"email_find","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"person":{"domain":"google.com","firstName":"Damien","surname":"Neil"}},"schema":{"additionalProperties":false,"example":{"person":{"domain":"google.com","firstName":"Damien","surname":"Neil"}},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"person":{"description":"The person to find an email for, e.g. {\"firstName\": \"Jane\", \"surname\": \"Doe\", \"domain\": \"acme.com\"} (domain also accepts a company name).","properties":{"domain":{"description":"Company domain (e.g. acme.com) or company name (e.g. Acme Inc), resolved automatically.","type":"string"},"firstName":{"description":"The person's first name (e.g. Jane).","type":"string"},"surname":{"description":"The person's last name (e.g. Doe).","type":"string"}},"required":["firstName","surname","domain"],"type":"object"},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true}},"title":"Email Finder input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"oneOf":[{"type":"null"},{"additionalProperties":false,"properties":{"items":{"description":"Email lookup records: the discovered email address, verification status, and the matched person and company details. Populated whenever the provider has data for the entity.","items":{"properties":{"email":{"description":"The discovered work email address. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"status":{"description":"Lookup status. Always \"found\": a lookup that finds nothing returns found:false with a null data instead of an item, and is not charged. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true}},"required":["email","status"],"type":"object"},"type":"array","x-anyapi-must-populate":true}},"required":["items"],"type":"object"}]},"found":{"type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"Email Finder output","type":"object","x-anyapi-how-it-works":"AnyAPI runs up to three independent email finders in sequence, cheapest first. The first source that returns an address wins and the rest are never called, so most lookups are billed at the bottom of the published price range and only the harder ones reach the top. A source that holds no record of the person returns nothing rather than guessing a likely address, and the next source is tried. When none of them finds an address the response is found:false with a null data, and the call is not charged."},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"Email Finder","tags":["email"],"x-mint":{"href":"/api-reference/email/find"},"x-payment-info":{"price":{"amount":"0.030800","currency":"USD","mode":"fixed"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"amount":"0.030800","currency":"USD","minimumUsd":"0.001000","mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"amount":"0.030800","currency":"USD","minimumUsd":null,"mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/email.verify":{"post":{"description":"Verify an email address for deliverability: a status verdict (good, risky, or bad) with domain, mailbox, catch-all, disposable, and role signals plus a confidence score. Malformed addresses are rejected by the input schema with no charge; every syntactically valid address returns a billed verdict, including undeliverable ones.\n\n**Price:** \\$6.60 per 1,000 requests (flat per request - same cost regardless of results returned).\n\n**Routing:** 2 independent lanes are available in execution order. A failed attempt uses the next lane only when the request's payment authorizes that lane's price; the normalized schema stays the same.\n\n**Catalog:** [Email Verifier pricing and uptime](https://getanyapi.com/api/email/verify) - live USD price, lane routing, and measured 30-day uptime. [Every Email endpoint](https://getanyapi.com/api/email).\n\n**How it works:** One source verifies every call: it opens an SMTP conversation with the receiving mail server and reports what that server said, which is what settles a catch-all domain rather than guessing at one. If it cannot be reached, a second source verifies the same address instead of failing the request. Both answer in the same vocabulary - good, bad or risky - and both report whether the domain accepts every address, so the price is one number either way. The two differ in two optional fields: `reason` is published only by the rescue source, so it is absent on almost every call, and `score` is coarse on the primary (it restates the verdict rather than grading it). Every syntactically valid address returns a billed verdict; a malformed one is rejected by the input schema with no charge.","operationId":"email_verify","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"email":"patrick@stripe.com"},"schema":{"additionalProperties":false,"example":{"email":"patrick@stripe.com"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"email":{"description":"The email address to verify (e.g. jane.doe@acme.com). Exactly one @, a dotted domain, no whitespace or angle brackets. Addresses on reserved, never-deliverable TLDs (.invalid, .test, .example, .localhost, .local, .internal, .blink) and HTML/JSON escape artifacts (a u003e prefix) are rejected locally with no charge.","maxLength":254,"minLength":6,"not":{"pattern":"^[uU]00[0-9a-fA-F]{2}|\\.\\.|\\.([Bb][Ll][Ii][Nn][Kk]|[Ii][Nn][Vv][Aa][Ll][Ii][Dd]|[Ll][Oo][Cc][Aa][Ll]([Hh][Oo][Ss][Tt])?|[Tt][Ee][Ss][Tt]|[Ee][Xx][Aa][Mm][Pp][Ll][Ee]|[Ii][Nn][Tt][Ee][Rr][Nn][Aa][Ll])$"},"pattern":"^[^\\s\u003c\u003e()\\[\\],;:\"@\\\\]+@[^\\s\u003c\u003e()\\[\\],;:\"@\\\\]+\\.[^\\s\u003c\u003e()\\[\\],;:\"@.\\\\]{2,63}$","type":"string"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"requireFields":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Name the output fields this request must be able to return, for example `reason`, and it is served only by a source that returns every one of them. Fields you do not name are still returned whenever the serving source has them. This can raise your price: when the cheapest source cannot return a named field, a dearer source serves, and you are quoted and charged its price. A named field can still be absent on a result that genuinely lacks it. Naming a combination that no single source returns together is refused as invalid input, with no charge.","items":{"enum":["catchAll","disposable","domain","free","mxProvider","mxRecords","reason","role","score"],"type":"string"},"type":"array","uniqueItems":true},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true}},"required":["email"],"title":"Email Verifier input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"oneOf":[{"type":"null"},{"additionalProperties":false,"properties":{"items":{"description":"Verification records: the email address with its deliverability verdict and the domain, mailbox, and reputation signals behind it. A record is returned for every syntactically valid address, including ones the verdict marks undeliverable. Populated whenever the provider has data for the entity.","items":{"properties":{"catchAll":{"description":"Domain accepts all addresses.","type":"boolean"},"disposable":{"type":"boolean"},"domain":{"type":"string"},"email":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"free":{"description":"Free email provider.","type":"boolean"},"mxProvider":{"description":"Mail provider behind the address domain, e.g. Google. Null when the serving source does not report one.","type":["string","null"]},"mxRecords":{"description":"MX record hosts published by the address domain.","items":{"type":"string"},"type":"array"},"reason":{"description":"Why the verdict was reached. Published by only one of the two sources, so it is absent on most calls; never treat it as required.","type":"string"},"role":{"description":"Role-based address (e.g. info@).","type":"boolean"},"score":{"description":"Confidence in the verdict, 0-100. Coarse rather than graded on most calls: it tracks the status rather than ranking addresses within one.","type":"integer"},"status":{"description":"Deliverability verdict: good (the mailbox accepted), bad (it was refused), or risky (no source could settle it - usually a catch-all domain that accepts every address, sometimes a receiving server that declined to answer at all). Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true}},"required":["email","status"],"type":"object"},"type":"array","x-anyapi-must-populate":true}},"required":["items"],"type":"object"}]},"found":{"type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"Email Verifier output","type":"object","x-anyapi-how-it-works":"One source verifies every call: it opens an SMTP conversation with the receiving mail server and reports what that server said, which is what settles a catch-all domain rather than guessing at one. If it cannot be reached, a second source verifies the same address instead of failing the request. Both answer in the same vocabulary - good, bad or risky - and both report whether the domain accepts every address, so the price is one number either way. The two differ in two optional fields: `reason` is published only by the rescue source, so it is absent on almost every call, and `score` is coarse on the primary (it restates the verdict rather than grading it). Every syntactically valid address returns a billed verdict; a malformed one is rejected by the input schema with no charge."},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"Email Verifier","tags":["email"],"x-mint":{"href":"/api-reference/email/verify"},"x-payment-info":{"price":{"amount":"0.006600","currency":"USD","mode":"fixed"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"amount":"0.006600","currency":"USD","minimumUsd":"0.001000","mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"amount":"0.006600","currency":"USD","minimumUsd":null,"mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/email_finding.dropleads":{"post":{"description":"Find a professional email from a person's name and company domain or company name.\n\n**Price:** \\$31.20 per 1,000 requests (flat per request - same cost regardless of results returned).\n\n**Routing:** one lane serves this API today, so a failed attempt has nowhere to fail over to. Payment outcome follows the selected rail's settlement policy.\n\n**Catalog:** [Email Finding - DropLeads pricing and uptime](https://getanyapi.com/api/email-finding/dropleads) - live USD price, lane routing, and measured 30-day uptime. [Every Email_finding endpoint](https://getanyapi.com/api/email-finding).","operationId":"email_finding_dropleads","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"companyDomain":"apollo.io","firstName":"Tim","lastName":"Zheng"},"schema":{"additionalProperties":false,"example":{"companyDomain":"apollo.io","firstName":"Tim","lastName":"Zheng"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"companyDomain":{"description":"Company domain without a path.","minLength":1,"type":"string"},"companyName":{"description":"Company name when the domain is unavailable.","minLength":1,"type":"string"},"firstName":{"description":"Person's first name.","minLength":1,"type":"string"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"lastName":{"description":"Person's last name.","minLength":1,"type":"string"},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true}},"required":["firstName","lastName"],"title":"Email Finding - DropLeads input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"description":"Normalized email result, or null when no email matched.","oneOf":[{"type":"null"},{"properties":{"companyDomain":{"description":"Matched company domain.","type":"string"},"companyName":{"description":"Matched company name.","type":"string"},"companySize":{"description":"Company size when available.","type":["integer","string"]},"email":{"description":"Matched email address.","format":"email","type":"string"},"firstName":{"description":"Matched first name.","type":"string"},"industry":{"description":"Company industry when available.","type":"string"},"lastName":{"description":"Matched last name.","type":"string"},"mxProvider":{"description":"Detected mail provider.","type":"string"},"mxRecord":{"description":"Selected mail exchange record.","type":"string"},"status":{"description":"Source validation status for the matched email.","type":"string"}},"required":["email","status"],"type":"object"}]},"found":{"description":"Whether a matching email was found.","type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"Email Finding - DropLeads output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"Email Finding - DropLeads","tags":["email-finding"],"x-mint":{"href":"/api-reference/email-finding/dropleads"},"x-payment-info":{"price":{"amount":"0.031200","currency":"USD","mode":"fixed"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"amount":"0.031200","currency":"USD","minimumUsd":"0.001000","mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"amount":"0.031200","currency":"USD","minimumUsd":null,"mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/email_finding.hunter_count":{"post":{"description":"Count how many contacts a company domain has, split by personal and generic mailboxes and broken down by department and seniority. Scope a domain for $1 per 1,000 requests before paying per contact.\n\n**Price:** \\$1.00 per 1,000 requests (flat per request - same cost regardless of results returned).\n\n**Routing:** one lane serves this API today, so a failed attempt has nowhere to fail over to. Payment outcome follows the selected rail's settlement policy.\n\n**Catalog:** [Email Finding - Hunter Email Count pricing and uptime](https://getanyapi.com/api/email-finding/hunter-count) - live USD price, lane routing, and measured 30-day uptime. [Every Email_finding endpoint](https://getanyapi.com/api/email-finding).","operationId":"email_finding_hunter_count","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"domain":"stripe.com"},"schema":{"additionalProperties":false,"example":{"domain":"stripe.com"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"domain":{"description":"Company domain without a scheme or path, e.g. stripe.com.","minLength":1,"type":"string"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"type":{"description":"Count only personal mailboxes belonging to a named person, or only generic ones such as info@ and support@.","enum":["personal","generic"],"type":"string"}},"required":["domain"],"title":"Email Finding - Hunter Email Count input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"oneOf":[{"type":"null"},{"properties":{"departmentCounts":{"description":"Contacts per department.","properties":{"administrative":{"description":"Contacts in the administrative department.","minimum":0,"type":"integer"},"communication":{"description":"Contacts in the communication department.","minimum":0,"type":"integer"},"consulting":{"description":"Contacts in the consulting department.","minimum":0,"type":"integer"},"design":{"description":"Contacts in the design department.","minimum":0,"type":"integer"},"education":{"description":"Contacts in the education department.","minimum":0,"type":"integer"},"executive":{"description":"Contacts in the executive department.","minimum":0,"type":"integer"},"finance":{"description":"Contacts in the finance department.","minimum":0,"type":"integer"},"health":{"description":"Contacts in the health department.","minimum":0,"type":"integer"},"hr":{"description":"Contacts in the HR department.","minimum":0,"type":"integer"},"it":{"description":"Contacts in the IT department.","minimum":0,"type":"integer"},"legal":{"description":"Contacts in the legal department.","minimum":0,"type":"integer"},"management":{"description":"Contacts in the management department.","minimum":0,"type":"integer"},"marketing":{"description":"Contacts in the marketing department.","minimum":0,"type":"integer"},"operation":{"description":"Contacts Hunter files under its separate operation department.","minimum":0,"type":"integer"},"operations":{"description":"Contacts in the operations department.","minimum":0,"type":"integer"},"procurement":{"description":"Contacts in the procurement department.","minimum":0,"type":"integer"},"product":{"description":"Contacts in the product department.","minimum":0,"type":"integer"},"research":{"description":"Contacts in the research department.","minimum":0,"type":"integer"},"sales":{"description":"Contacts in the sales department.","minimum":0,"type":"integer"},"support":{"description":"Contacts in the support department.","minimum":0,"type":"integer"}},"type":"object"},"domain":{"description":"The company domain the counts describe.","type":"string"},"genericEmails":{"description":"Contacts that are a shared inbox such as info@ or support@.","minimum":0,"type":"integer"},"personalEmails":{"description":"Contacts that are a named person's mailbox.","minimum":0,"type":"integer"},"seniorityCounts":{"description":"Contacts per seniority level.","properties":{"executive":{"description":"Contacts at executive level.","minimum":0,"type":"integer"},"junior":{"description":"Contacts at junior level.","minimum":0,"type":"integer"},"senior":{"description":"Contacts at senior level.","minimum":0,"type":"integer"}},"type":"object"},"total":{"description":"Contacts known for the domain.","minimum":0,"type":"integer"},"type":{"description":"Mailbox type the counts are limited to when the request filtered by type: personal or generic. Absent when the counts cover both.","type":"string"}},"required":["domain","total"],"type":"object"}]},"found":{"description":"False when the domain has no counted contacts.","type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"Email Finding - Hunter Email Count output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"Email Finding - Hunter Email Count","tags":["email-finding"],"x-mint":{"href":"/api-reference/email-finding/hunter-count"},"x-payment-info":{"price":{"amount":"0.001000","currency":"USD","mode":"fixed"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"amount":"0.001000","currency":"USD","minimumUsd":"0.001000","mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"amount":"0.001000","currency":"USD","minimumUsd":null,"mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/email_finding.hunter_domain":{"post":{"description":"Find named contacts and their work email addresses at a company domain, filtered by job title, seniority or department. Priced per returned contact, so limit is the cost control.\n\n**Price:** billed per result - \\$36.00 per 1,000 results, capped at \\$3,600.00 per 1,000 requests.\n\n**Routing:** one lane serves this API today, so a failed attempt has nowhere to fail over to. Payment outcome follows the selected rail's settlement policy.\n\n**Catalog:** [Email Finding - Hunter Domain Search pricing and uptime](https://getanyapi.com/api/email-finding/hunter-domain) - live USD price, lane routing, and measured 30-day uptime. [Every Email_finding endpoint](https://getanyapi.com/api/email-finding).","operationId":"email_finding_hunter_domain","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"domain":"stripe.com","limit":2,"type":"personal"},"schema":{"additionalProperties":false,"example":{"domain":"stripe.com","limit":2,"type":"personal"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"department":{"description":"Restrict to one department.","enum":["executive","it","finance","management","sales","legal","support","hr","marketing","communication","education","design","health","operations"],"type":"string"},"domain":{"description":"Company domain without a scheme or path, e.g. stripe.com.","minLength":1,"type":"string"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"jobTitle":{"description":"One job-title keyword to match, e.g. editor. A single keyword only: a comma-separated list is not supported and only its last entry would apply.","minLength":1,"type":"string"},"limit":{"default":3,"description":"Maximum contacts to return in this response. Every returned contact is billed, so this is the cost control.","maximum":100,"minimum":1,"type":"integer"},"offset":{"description":"Number of contacts to skip before this page begins.","minimum":0,"type":"integer"},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"requiredField":{"description":"Only return contacts that carry this field.","enum":["full_name","position","phone_number"],"type":"string"},"seniority":{"description":"Restrict to one seniority level.","enum":["junior","senior","executive"],"type":"string"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"type":{"description":"Restrict to personal mailboxes belonging to a named person, or to generic ones such as info@ and support@.","enum":["personal","generic"],"type":"string"}},"required":["domain"],"title":"Email Finding - Hunter Domain Search input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"oneOf":[{"type":"null"},{"additionalProperties":false,"properties":{"acceptAll":{"description":"True when the mail server accepts any address at this domain, so an address cannot be verified by delivery.","type":"boolean"},"disposable":{"description":"True when the domain belongs to a disposable-email service.","type":"boolean"},"domain":{"description":"The company domain the contacts belong to.","type":"string"},"emailPattern":{"description":"Address pattern the company uses, e.g. {first}{last}.","type":"string"},"emails":{"description":"Contacts returned by this page, one per billed result.","items":{"properties":{"confidence":{"description":"Upstream confidence in the address, 0 to 100.","maximum":100,"minimum":0,"type":"integer"},"decisionMaker":{"description":"True when the contact is judged a decision maker.","type":"boolean"},"department":{"description":"Department the contact works in.","type":"string"},"email":{"description":"The work email address.","type":"string"},"firstName":{"description":"Contact's first name.","type":"string"},"lastName":{"description":"Contact's last name.","type":"string"},"linkedinUrl":{"description":"Contact's LinkedIn profile URL.","format":"uri","type":"string"},"phone":{"description":"Contact's phone number.","type":"string"},"position":{"description":"Contact's job title.","type":"string"},"positionRaw":{"description":"Contact's job title exactly as written on the source page, before it was cleaned up.","type":"string"},"seniority":{"description":"Seniority level: junior, senior or executive.","type":"string"},"sourceType":{"description":"How the address was obtained: found when it was seen on a public page, generated when it was inferred from the company's address pattern.","type":"string"},"sources":{"description":"Public pages the address was found on.","items":{"properties":{"domain":{"description":"Domain of the page the address was found on.","type":"string"},"extractedUtc":{"description":"UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds.","type":"number"},"lastSeenUtc":{"description":"UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds.","type":"number"},"stillOnPage":{"description":"True when the address was still present at the last check.","type":"boolean"},"url":{"description":"URL of the page the address was found on.","format":"uri","type":"string"}},"required":["domain"],"type":"object"},"type":"array"},"twitter":{"description":"Contact's Twitter/X handle or profile URL, exactly as the source recorded it.","type":"string"},"type":{"description":"personal for a named person's mailbox, generic for a shared inbox.","type":"string"},"verificationStatus":{"description":"Deliverability verdict recorded for the address.","type":"string"},"verifiedUtc":{"description":"UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds.","type":"number"}},"required":["email"],"type":"object"},"type":"array"},"linkedDomains":{"description":"Other domains Hunter has linked to this company. Deliberately untyped: the field is empty in every response we have captured, so the value passes through without a shape guarantee."},"organization":{"description":"Company name registered against the domain.","type":"string"},"totalCount":{"description":"Contacts matching the filters across the whole domain, of which this response returns at most limit.","minimum":0,"type":"integer"},"webmail":{"description":"True when the domain is a webmail provider rather than a company.","type":"boolean"}},"required":["domain","totalCount","emails"],"type":"object"}]},"found":{"description":"False when the domain yielded no contacts for the requested filters.","type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"Email Finding - Hunter Domain Search output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"Email Finding - Hunter Domain Search","tags":["email-finding"],"x-mint":{"href":"/api-reference/email-finding/hunter-domain"},"x-payment-info":{"price":{"currency":"USD","max":"3.600000","min":"0.000000","mode":"dynamic"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"currency":"USD","max":"3.600000","min":"0.001000","minimumUsd":"0.001000","mode":"dynamic","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"currency":"USD","max":"3.600000","min":"0.000000","minimumUsd":null,"mode":"dynamic","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/email_finding.icypeas":{"post":{"description":"Find a professional email from a person and company through the durable Request lifecycle.\n\n**Price:** \\$16.80 per 1,000 requests (flat per request - same cost regardless of results returned).\n\n**Routing:** one lane serves this API today, so a failed attempt has nowhere to fail over to. Payment outcome follows the selected rail's settlement policy.\n\n**Catalog:** [Email Finding - Icypeas pricing and uptime](https://getanyapi.com/api/email-finding/icypeas) - live USD price, lane routing, and measured 30-day uptime. [Every Email_finding endpoint](https://getanyapi.com/api/email-finding).","operationId":"email_finding_icypeas","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Required. Owns one durable Request and provider dispatch. Active duplicates return the owning Request; completed successes replay without another charge; different semantics return 409.","in":"header","name":"Idempotency-Key","required":true,"schema":{"maxLength":255,"minLength":1,"type":"string"}},{"description":"Use respond-async for immediate acceptance or wait=N to wait up to 90 seconds. The default wait is 10 seconds.","in":"header","name":"Prefer","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"domainOrCompany":"apollo.io","firstname":"Tim","lastname":"Zheng"},"schema":{"additionalProperties":false,"anyOf":[{"required":["firstname"]},{"required":["lastname"]}],"example":{"domainOrCompany":"apollo.io","firstname":"Tim","lastname":"Zheng"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"domainOrCompany":{"minLength":1,"type":"string"},"firstname":{"minLength":1,"type":"string"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"lastname":{"minLength":1,"type":"string"},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true}},"required":["domainOrCompany"],"title":"Email Finding - Icypeas input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"description":"The matched person and email, or null when nothing was found.","oneOf":[{"type":"null"},{"properties":{"certainty":{"description":"Confidence label for the best matching address, e.g. ultra_sure.","type":"string"},"createdUtc":{"description":"UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds.","type":"number"},"email":{"description":"Best matching email address.","format":"email","type":"string"},"emails":{"description":"Every candidate address found for the person, best first. The top-level email is the first entry.","items":{"properties":{"certainty":{"description":"Confidence label for this address, e.g. ultra_sure.","type":"string"},"email":{"description":"Candidate email address.","format":"email","type":"string"},"mxProvider":{"description":"Mail provider behind this address's domain.","type":"string"},"mxRecords":{"description":"Mail exchange records for this address's domain.","items":{"type":"string"},"type":"array"}},"type":"object"},"type":"array"},"firstname":{"description":"Matched first name.","type":"string"},"fullname":{"description":"Matched full name.","type":"string"},"gender":{"description":"Gender recorded for the matched person. Absent when the source does not know it.","type":"string"},"lastname":{"description":"Matched last name.","type":"string"},"linkedinUrl":{"description":"LinkedIn profile URL for the matched person, when the source has one.","type":"string"},"modifiedUtc":{"description":"UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds.","type":"number"},"mxProvider":{"description":"Mail provider behind the domain, e.g. google.","type":"string"},"mxRecords":{"description":"Mail exchange records for the domain.","items":{"type":"string"},"type":"array"},"phones":{"description":"Phone numbers Icypeas returned alongside the address. Deliberately untyped: the field is empty in every response we have captured, so the value passes through without a shape guarantee."},"saasServices":{"description":"SaaS services Icypeas associates with the person. Deliberately untyped: the field is empty in every response we have captured, so the value passes through without a shape guarantee."},"scanId":{"description":"Icypeas' identifier for the search that produced this result.","type":"string"},"scanName":{"description":"Icypeas' internal label for the kind of search that ran, e.g. __icypeas__individual.","type":"string"},"scanOrder":{"description":"Position of this result inside the Icypeas search batch. It is 0 for the single-person search this SKU runs.","type":"integer"},"scanStatus":{"description":"Icypeas' terminal status for the search, FOUND or NOT_FOUND. It duplicates the envelope's found flag.","type":"string"},"scanUser":{"description":"Icypeas account that ran the search.","type":"string"}},"required":["email"],"type":"object"}]},"found":{"description":"False when no email was found for the person.","type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"Email Finding - Icypeas output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}}}},"202":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RequestSnapshot"}}},"description":"Accepted as a durable Request; poll Location after Retry-After.","headers":{"Location":{"schema":{"type":"string"}},"Preference-Applied":{"schema":{"enum":["respond-async"],"type":"string"}},"Retry-After":{"schema":{"type":"integer"}},"X-Anyapi-Request-Id":{"schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}}},"description":"Insufficient wallet balance or spend cap. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization."},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."},"504":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The durable Request reached its execution deadline; use X-Anyapi-Request-Id for status and support."}},"summary":"Email Finding - Icypeas","tags":["email-finding"],"x-anyapi-availability":"durable","x-mint":{"href":"/api-reference/email-finding/icypeas"}}},"/v1/run/email_finding.quickenrich":{"post":{"description":"Find a work email from a LinkedIn profile, or from a company domain plus a name. Coverage is strongest for small and local businesses and thin for large technology employers.\n\n**Price:** \\$7.20 per 1,000 requests (flat per request - same cost regardless of results returned).\n\n**Routing:** one lane serves this API today, so a failed attempt has nowhere to fail over to. Payment outcome follows the selected rail's settlement policy.\n\n**Catalog:** [Email Finding - QuickEnrich pricing and uptime](https://getanyapi.com/api/email-finding/quickenrich) - live USD price, lane routing, and measured 30-day uptime. [Every Email_finding endpoint](https://getanyapi.com/api/email-finding).","operationId":"email_finding_quickenrich","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"companyDomain":"southmemphisfence.com","firstName":"Warren","lastName":"Price"},"schema":{"additionalProperties":false,"anyOf":[{"required":["linkedinUrl"]},{"required":["companyDomain","firstName","lastName"]}],"example":{"companyDomain":"southmemphisfence.com","firstName":"Warren","lastName":"Price"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"companyDomain":{"description":"Company website domain, normalized upstream (example.com or https://example.com both work).","minLength":1,"type":"string"},"firstName":{"description":"Person's first name.","maxLength":255,"minLength":1,"type":"string"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"lastName":{"description":"Person's last name.","maxLength":255,"minLength":1,"type":"string"},"linkedinUrl":{"description":"LinkedIn profile URL. Provide this, or companyDomain with firstName and lastName.","format":"uri","type":"string"},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true}},"title":"Email Finding - QuickEnrich input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"description":"Normalized record, or null when the request matched nothing.","oneOf":[{"type":"null"},{"properties":{"address":{"description":"Street address on the employer record.","type":"string"},"city":{"description":"City on the employer record.","type":"string"},"companyDomain":{"description":"Employer website domain.","type":"string"},"companyEmployeeCount":{"description":"Employer headcount band, e.g. \"20 - 99\". Upstream band vocabulary; \"Not Available\" means the band is unknown.","type":"string"},"companyIndustry":{"description":"Employer industry label.","type":"string"},"companyLinkedinUrl":{"description":"Employer LinkedIn company URL.","type":"string"},"companyName":{"description":"Employer name.","type":"string"},"companyPhone":{"description":"Employer main phone line.","type":"string"},"companyRevenue":{"description":"Employer revenue band, e.g. \"1 - 2.5 Million\". Upstream band vocabulary; \"Not Available\" means the band is unknown.","type":"string"},"country":{"description":"ISO 3166-1 alpha-2 country code on the employer record.","type":"string"},"email":{"description":"Work email address.","type":"string"},"emailDomain":{"description":"Domain the work email resolves to.","type":"string"},"emailVerifiedUtc":{"description":"UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds.","type":"number"},"firstName":{"description":"Person's first name.","type":"string"},"lastName":{"description":"Person's last name.","type":"string"},"linkedinUrl":{"description":"Person's LinkedIn profile URL.","type":"string"},"phone":{"description":"Direct business phone line held for the person. Mostly desk lines; read phoneType before treating it as a mobile.","type":"string"},"phoneType":{"description":"Line type reported upstream, e.g. \"mobile\" or \"landline\".","type":"string"},"postalCode":{"description":"Postal code on the employer record.","type":"string"},"region":{"description":"State or region code on the employer record.","type":"string"},"title":{"description":"Person's job title.","type":"string"}},"required":["email"],"type":"object"}]},"found":{"description":"False when no email matched, including when the person was located but no address is held for them.","type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"Email Finding - QuickEnrich output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"Email Finding - QuickEnrich","tags":["email-finding"],"x-mint":{"href":"/api-reference/email-finding/quickenrich"},"x-payment-info":{"price":{"amount":"0.007200","currency":"USD","mode":"fixed"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"amount":"0.007200","currency":"USD","minimumUsd":"0.001000","mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"amount":"0.007200","currency":"USD","minimumUsd":null,"mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/email_finding.zerobounce":{"post":{"description":"Find a person's work email at a company domain from their name, with ZeroBounce's confidence in the guess.\n\n**Price:** \\$655.20 per 1,000 requests (flat per request - same cost regardless of results returned).\n\n**Routing:** one lane serves this API today, so a failed attempt has nowhere to fail over to. Payment outcome follows the selected rail's settlement policy.\n\n**Catalog:** [Email Finding - ZeroBounce pricing and uptime](https://getanyapi.com/api/email-finding/zerobounce) - live USD price, lane routing, and measured 30-day uptime. [Every Email_finding endpoint](https://getanyapi.com/api/email-finding).","operationId":"email_finding_zerobounce","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"domain":"hubspot.com","firstName":"Dharmesh","lastName":"Shah"},"schema":{"additionalProperties":false,"example":{"domain":"hubspot.com","firstName":"Dharmesh","lastName":"Shah"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"domain":{"description":"Company domain to search, e.g. hubspot.com.","minLength":1,"type":"string"},"firstName":{"description":"First name of the person to find.","type":"string"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"lastName":{"description":"Last name of the person to find.","type":"string"},"middleName":{"description":"Middle name, when the company's address format uses one.","type":"string"},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true}},"required":["domain"],"title":"Email Finding - ZeroBounce input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"description":"The address found, or null when ZeroBounce found none.","oneOf":[{"type":"null"},{"properties":{"companyName":{"description":"Company ZeroBounce associates with the domain.","type":"string"},"confidence":{"description":"ZeroBounce's confidence in the address: high, medium, low or undetermined.","type":"string"},"didYouMean":{"description":"Corrected domain when ZeroBounce spots a likely typo.","type":"string"},"domain":{"description":"Domain the address belongs to.","type":"string"},"email":{"description":"The email address ZeroBounce found.","type":"string"},"failureReason":{"description":"Why ZeroBounce could not answer with more confidence.","type":"string"}},"required":["email"],"type":"object"}]},"found":{"description":"False when ZeroBounce returned no answer for the request.","type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"Email Finding - ZeroBounce output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"Email Finding - ZeroBounce","tags":["email-finding"],"x-mint":{"href":"/api-reference/email-finding/zerobounce"},"x-payment-info":{"price":{"amount":"0.655200","currency":"USD","mode":"fixed"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"amount":"0.655200","currency":"USD","minimumUsd":"0.001000","mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"amount":"0.655200","currency":"USD","minimumUsd":null,"mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/email_finding.zerobounce_domain":{"post":{"description":"Read the email address format a company domain uses, with every alternative format ZeroBounce has seen and how confident it is in each. Use it to build addresses for a whole account at once.\n\n**Price:** \\$655.20 per 1,000 requests (flat per request - same cost regardless of results returned).\n\n**Routing:** one lane serves this API today, so a failed attempt has nowhere to fail over to. Payment outcome follows the selected rail's settlement policy.\n\n**Catalog:** [Email Pattern - ZeroBounce pricing and uptime](https://getanyapi.com/api/email-finding/zerobounce-domain) - live USD price, lane routing, and measured 30-day uptime. [Every Email_finding endpoint](https://getanyapi.com/api/email-finding).","operationId":"email_finding_zerobounce_domain","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"domain":"hubspot.com"},"schema":{"additionalProperties":false,"example":{"domain":"hubspot.com"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"domain":{"description":"Company domain to inspect, e.g. hubspot.com.","minLength":1,"type":"string"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true}},"required":["domain"],"title":"Email Pattern - ZeroBounce input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"description":"The domain's address formats, or null when ZeroBounce holds none.","oneOf":[{"type":"null"},{"properties":{"companyName":{"description":"Company ZeroBounce associates with the domain.","type":"string"},"confidence":{"description":"Confidence in that format: high, medium or low.","type":"string"},"didYouMean":{"description":"Corrected domain when ZeroBounce spots a likely typo.","type":"string"},"domain":{"description":"The domain that was inspected.","type":"string"},"failureReason":{"description":"Why ZeroBounce could not answer with more confidence.","type":"string"},"format":{"description":"The address format ZeroBounce is most confident the domain uses, e.g. first.last or flast.","type":"string"},"otherFormats":{"description":"Every other address format ZeroBounce has seen on this domain, most confident first.","items":{"properties":{"confidence":{"description":"Confidence in that format: high, medium or low.","type":"string"},"format":{"description":"Address format, e.g. last.first.","type":"string"}},"required":["format"],"type":"object"},"type":"array"}},"required":["domain","format"],"type":"object"}]},"found":{"description":"False when ZeroBounce returned no answer for the request.","type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"Email Pattern - ZeroBounce output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"Email Pattern - ZeroBounce","tags":["email-finding"],"x-mint":{"href":"/api-reference/email-finding/zerobounce-domain"},"x-payment-info":{"price":{"amount":"0.655200","currency":"USD","mode":"fixed"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"amount":"0.655200","currency":"USD","minimumUsd":"0.001000","mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"amount":"0.655200","currency":"USD","minimumUsd":null,"mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/email_verification.allegrow":{"post":{"description":"Validate an email address and return its deliverability verdict and mailbox signals.\n\n**Price:** \\$14.40 per 1,000 requests (flat per request - same cost regardless of results returned).\n\n**Routing:** one lane serves this API today, so a failed attempt has nowhere to fail over to. Payment outcome follows the selected rail's settlement policy.\n\n**Catalog:** [Email Verification - Allegrow pricing and uptime](https://getanyapi.com/api/email-verification/allegrow) - live USD price, lane routing, and measured 30-day uptime. [Every Email_verification endpoint](https://getanyapi.com/api/email-verification).","operationId":"email_verification_allegrow","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"email":"tim@apollo.io"},"schema":{"additionalProperties":false,"example":{"email":"tim@apollo.io"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"email":{"description":"Email address to validate.","format":"email","type":"string"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true}},"required":["email"],"title":"Email Verification - Allegrow input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"description":"Normalized validation result.","oneOf":[{"type":"null"},{"properties":{"allegrowStatus":{"description":"The Allegrow dataset's own verdict field, returned verbatim as the source spells it (safe in the captured response). It duplicates status in the same response and is not remapped into the good/risky/bad vocabulary email.verify uses.","type":"string"},"domain":{"description":"Email domain.","type":"string"},"email":{"description":"Validated email address.","format":"email","type":"string"},"isCatchAll":{"description":"Whether the domain accepts mail for arbitrary recipients.","type":"boolean"},"isRoleAccount":{"description":"Whether the mailbox appears to be a role account.","type":"boolean"},"mxProvider":{"description":"Detected mail provider.","type":"string"},"mxRecords":{"description":"MX record hosts published by the email domain.","items":{"type":"string"},"type":"array"},"providerRequestId":{"description":"The source's own identifier for this validation, surfaced so a result can be traced back to the record the source created.","type":"string"},"status":{"description":"Deliverability verdict; negative verdicts are successful billable results.","enum":["safe","do_not_mail_abuse","some_risk","block_bounce_risk","dead_email","spamtrap","more_time_required","missing_email"],"type":"string"},"subStatus":{"description":"More specific validation result when available.","type":"string"},"validatedUtc":{"description":"UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds.","type":"number"}},"required":["email","status"],"type":"object"}]},"found":{"description":"Whether the source returned a completed validation result, including negative verdicts.","type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"Email Verification - Allegrow output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"Email Verification - Allegrow","tags":["email-verification"],"x-mint":{"href":"/api-reference/email-verification/allegrow"},"x-payment-info":{"price":{"amount":"0.014400","currency":"USD","mode":"fixed"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"amount":"0.014400","currency":"USD","minimumUsd":"0.001000","mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"amount":"0.014400","currency":"USD","minimumUsd":null,"mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/email_verification.bounceban":{"post":{"description":"Verify an email address, including catch-all handling. Completion uses the durable Request lifecycle; a negative verdict is a successful result.\n\n**Price:** \\$7.20 per 1,000 requests (flat per request - same cost regardless of results returned).\n\n**Routing:** one lane serves this API today, so a failed attempt has nowhere to fail over to. Payment outcome follows the selected rail's settlement policy.\n\n**Catalog:** [Email Verification - BounceBan pricing and uptime](https://getanyapi.com/api/email-verification/bounceban) - live USD price, lane routing, and measured 30-day uptime. [Every Email_verification endpoint](https://getanyapi.com/api/email-verification).","operationId":"email_verification_bounceban","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Required. Owns one durable Request and provider dispatch. Active duplicates return the owning Request; completed successes replay without another charge; different semantics return 409.","in":"header","name":"Idempotency-Key","required":true,"schema":{"maxLength":255,"minLength":1,"type":"string"}},{"description":"Use respond-async for immediate acceptance or wait=N to wait up to 90 seconds. The default wait is 10 seconds.","in":"header","name":"Prefer","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"email":"tim@apollo.io","mode":"regular"},"schema":{"additionalProperties":false,"example":{"email":"tim@apollo.io","mode":"regular"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"disableCatchallVerify":{"type":"boolean"},"email":{"format":"email","type":"string"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"mode":{"enum":["regular","deepverify"],"type":"string"},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true}},"required":["email"],"title":"Email Verification - BounceBan input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"oneOf":[{"type":"null"},{"properties":{"email":{"type":"string"},"isCatchAll":{"type":"boolean"},"isDisposable":{"type":"boolean"},"isFree":{"type":"boolean"},"isRole":{"type":"boolean"},"mode":{"type":"string"},"mxRecords":{"items":{"type":"string"},"type":"array"},"reason":{"type":"string"},"result":{"description":"Deliverability verdict; negative verdicts are successful results.","type":"string"},"score":{"type":"number"},"smtpProvider":{"type":"string"},"verifiedAt":{"type":"string"}},"required":["email","result"],"type":"object"}]},"found":{"type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"Email Verification - BounceBan output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}}}},"202":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RequestSnapshot"}}},"description":"Accepted as a durable Request; poll Location after Retry-After.","headers":{"Location":{"schema":{"type":"string"}},"Preference-Applied":{"schema":{"enum":["respond-async"],"type":"string"}},"Retry-After":{"schema":{"type":"integer"}},"X-Anyapi-Request-Id":{"schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}}},"description":"Insufficient wallet balance or spend cap. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization."},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."},"504":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The durable Request reached its execution deadline; use X-Anyapi-Request-Id for status and support."}},"summary":"Email Verification - BounceBan","tags":["email-verification"],"x-anyapi-availability":"durable","x-mint":{"href":"/api-reference/email-verification/bounceban"}}},"/v1/run/email_verification.icypeas":{"post":{"description":"Verify an email address. A valid negative verdict is a successful, billable result.\n\n**Price:** \\$2.40 per 1,000 requests (flat per request - same cost regardless of results returned).\n\n**Routing:** one lane serves this API today, so a failed attempt has nowhere to fail over to. Payment outcome follows the selected rail's settlement policy.\n\n**Catalog:** [Email Verification - Icypeas pricing and uptime](https://getanyapi.com/api/email-verification/icypeas) - live USD price, lane routing, and measured 30-day uptime. [Every Email_verification endpoint](https://getanyapi.com/api/email-verification).","operationId":"email_verification_icypeas","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"email":"support@stripe.com"},"schema":{"additionalProperties":false,"example":{"email":"support@stripe.com"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"email":{"format":"email","type":"string"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true}},"required":["email"],"title":"Email Verification - Icypeas input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"description":"Normalized verification result.","oneOf":[{"type":"null"},{"properties":{"certainty":{"description":"Confidence rating for the address, returned verbatim as the source spells it (ultra_sure in the captured response). It is not remapped to another verdict vocabulary.","type":"string"},"createdUtc":{"description":"UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds.","type":"number"},"email":{"description":"The verified email address as the source returned it.","format":"email","type":"string"},"firstname":{"description":"First name carried by the source's scan record. Present only when that record holds identity data, which the verification path usually does not.","type":"string"},"fullname":{"description":"Full name carried by the source's scan record. Present only when that record holds identity data, which the verification path usually does not.","type":"string"},"gender":{"description":"Gender carried by the source's scan record, returned verbatim. Present only when that record holds identity data, which the verification path usually does not; the source's UNKNOWN sentinel is reported as absent.","type":"string"},"lastname":{"description":"Last name carried by the source's scan record. Present only when that record holds identity data, which the verification path usually does not.","type":"string"},"linkedinUrl":{"description":"LinkedIn profile URL carried by the source's scan record. Present only when that record holds identity data, which the verification path usually does not.","type":"string"},"modifiedUtc":{"description":"UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds.","type":"number"},"mxProvider":{"description":"Mail provider detected from the address domain's MX records.","type":"string"},"mxRecords":{"description":"MX record hosts published by the address domain.","items":{"type":"string"},"type":"array"},"phones":{"description":"Phone numbers carried by the source's scan record, passed through in whatever shape the source returns them. Empty in the captured response and absent when the source holds none, so this field is not type-constrained."},"saasServices":{"description":"SaaS services carried by the source's scan record, passed through in whatever shape the source returns them. Empty in the captured response and absent when the source holds none, so this field is not type-constrained."},"scanId":{"description":"The source's own identifier for the scan record behind this verification, surfaced so a result can be traced back to it at the source.","type":"string"},"scanName":{"description":"The source's own label for the kind of scan record it created, returned verbatim (__icypeas__individual in the captured response). It is not a person's name.","type":"string"},"scanOrder":{"description":"Position the source assigned to this record within the scan it belongs to; 0 for a single-address verification.","type":"integer"},"scanUser":{"description":"The source's own identifier for the account that ran the scan.","type":"string"},"status":{"description":"Scan outcome for the address, returned verbatim as the source spells it (FOUND in the captured response; the scan also reports NOT_FOUND). This is not the good/risky/bad vocabulary used by email.verify.","type":"string"}},"required":["status"],"type":"object"}]},"found":{"description":"Whether the source returned a completed verification. A negative verdict is a successful, billable result.","type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"Email Verification - Icypeas output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"Email Verification - Icypeas","tags":["email-verification"],"x-mint":{"href":"/api-reference/email-verification/icypeas"},"x-payment-info":{"price":{"amount":"0.002400","currency":"USD","mode":"fixed"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"amount":"0.002400","currency":"USD","minimumUsd":"0.001000","mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"amount":"0.002400","currency":"USD","minimumUsd":null,"mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/email_verification.zerobounce":{"post":{"description":"Validate one email address against ZeroBounce, with the deliverability verdict, why it was reached, the mailbox provider, and any owner details ZeroBounce holds. A negative verdict is a successful, billable result.\n\n**Price:** \\$33.60 per 1,000 requests (flat per request - same cost regardless of results returned).\n\n**Routing:** one lane serves this API today, so a failed attempt has nowhere to fail over to. Payment outcome follows the selected rail's settlement policy.\n\n**Catalog:** [Email Verification - ZeroBounce pricing and uptime](https://getanyapi.com/api/email-verification/zerobounce) - live USD price, lane routing, and measured 30-day uptime. [Every Email_verification endpoint](https://getanyapi.com/api/email-verification).","operationId":"email_verification_zerobounce","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"email":"tim@apollo.io"},"schema":{"additionalProperties":false,"example":{"email":"tim@apollo.io"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"email":{"description":"Email address to validate.","format":"email","type":"string"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"ipAddress":{"description":"IP address the address signed up from. ZeroBounce uses it to add the geographic fields to the answer.","type":"string"},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true}},"required":["email"],"title":"Email Verification - ZeroBounce input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"description":"The verdict for the address, or null when ZeroBounce returned no answer.","oneOf":[{"type":"null"},{"properties":{"account":{"description":"Local part of the address, before the @.","type":"string"},"catchallDomain":{"description":"True when the domain accepts mail to any local part, so no address on it can be individually confirmed.","type":"boolean"},"city":{"description":"City from the supplied signup IP.","type":"string"},"country":{"description":"Country from the supplied signup IP.","type":"string"},"didYouMean":{"description":"Corrected address when ZeroBounce spots a likely typo.","type":"string"},"domain":{"description":"Domain part of the address.","type":"string"},"domainAgeDays":{"description":"How long the domain has been registered, in days.","type":"integer"},"email":{"description":"The address that was validated.","type":"string"},"firstName":{"description":"First name ZeroBounce associates with the address.","type":"string"},"freeEmail":{"description":"True for a free consumer mailbox such as gmail.com.","type":"boolean"},"gender":{"description":"Gender ZeroBounce associates with the address.","type":"string"},"lastName":{"description":"Last name ZeroBounce associates with the address.","type":"string"},"mxFound":{"description":"True when the domain publishes MX records.","type":"boolean"},"mxRecord":{"description":"The domain's primary MX host.","type":"string"},"processedUtc":{"description":"UTC epoch timestamp in seconds (Unix time) ZeroBounce ran the check. Multiply by 1000 for a JS Date in milliseconds.","type":"number"},"region":{"description":"Region from the supplied signup IP.","type":"string"},"smtpProvider":{"description":"Mailbox provider behind the domain, e.g. g-suite.","type":"string"},"status":{"description":"Deliverability verdict: valid, invalid, catch-all, unknown, spamtrap, abuse or do_not_mail.","type":"string"},"subStatus":{"description":"Why that verdict was reached, e.g. mailbox_not_found, role_based, disposable.","type":"string"},"zipcode":{"description":"Postal code from the supplied signup IP.","type":"string"}},"required":["email","status"],"type":"object"}]},"found":{"description":"False when ZeroBounce returned no answer for the request.","type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"Email Verification - ZeroBounce output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"Email Verification - ZeroBounce","tags":["email-verification"],"x-mint":{"href":"/api-reference/email-verification/zerobounce"},"x-payment-info":{"price":{"amount":"0.033600","currency":"USD","mode":"fixed"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"amount":"0.033600","currency":"USD","minimumUsd":"0.001000","mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"amount":"0.033600","currency":"USD","minimumUsd":null,"mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/email_verification.zerobounce_activity":{"post":{"description":"Check whether an email address has shown recent activity across ZeroBounce's engagement network before you re-engage it. A no-activity answer is a successful, billable result.\n\n**Price:** \\$33.60 per 1,000 requests (flat per request - same cost regardless of results returned).\n\n**Routing:** one lane serves this API today, so a failed attempt has nowhere to fail over to. Payment outcome follows the selected rail's settlement policy.\n\n**Catalog:** [Email Activity - ZeroBounce pricing and uptime](https://getanyapi.com/api/email-verification/zerobounce-activity) - live USD price, lane routing, and measured 30-day uptime. [Every Email_verification endpoint](https://getanyapi.com/api/email-verification).","operationId":"email_verification_zerobounce_activity","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"email":"dshah@hubspot.com"},"schema":{"additionalProperties":false,"example":{"email":"dshah@hubspot.com"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"email":{"description":"Email address to check for activity.","format":"email","type":"string"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true}},"required":["email"],"title":"Email Activity - ZeroBounce input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"description":"The activity answer for the address, or null when ZeroBounce returned none.","oneOf":[{"type":"null"},{"properties":{"activeInDays":{"description":"How recently the address was active, in days. ZeroBounce buckets this rather than giving an exact figure.","type":"integer"},"email":{"description":"The address that was checked.","type":"string"},"firstSeenUtc":{"description":"UTC epoch timestamp in seconds (Unix time) ZeroBounce first saw activity from the address. Multiply by 1000 for a JS Date in milliseconds.","type":"number"},"hasActivity":{"description":"True when ZeroBounce has seen engagement from this address.","type":"boolean"}},"required":["email","hasActivity"],"type":"object"}]},"found":{"description":"False when ZeroBounce returned no answer for the request.","type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"Email Activity - ZeroBounce output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"Email Activity - ZeroBounce","tags":["email-verification"],"x-mint":{"href":"/api-reference/email-verification/zerobounce-activity"},"x-payment-info":{"price":{"amount":"0.033600","currency":"USD","mode":"fixed"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"amount":"0.033600","currency":"USD","minimumUsd":"0.001000","mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"amount":"0.033600","currency":"USD","minimumUsd":null,"mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/facebook.ad_details":{"post":{"description":"Look up a single Meta Ad Library ad by ID or URL and get the advertiser, creative text, call-to-action, platforms, and run dates as clean JSON.\n\n**Price:** \\$1.20 per 1,000 requests (flat per request - same cost regardless of results returned).\n\n**Routing:** one lane serves this API today, so a failed attempt has nowhere to fail over to. Payment outcome follows the selected rail's settlement policy.\n\n**Catalog:** [Facebook Ad Details pricing and uptime](https://getanyapi.com/api/facebook/ad-details) - live USD price, lane routing, and measured 30-day uptime. [Every Facebook endpoint](https://getanyapi.com/api/facebook).","operationId":"facebook_ad_details","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"id":"962050096457659"},"schema":{"additionalProperties":false,"example":{"id":"962050096457659"},"oneOf":[{"not":{"required":["url"]},"required":["id"]},{"not":{"required":["id"]},"required":["url"]}],"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"id":{"description":"Meta Ad Library ad ID (e.g. \"702369045530963\"). Provide either id or url.","type":"string"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"url":{"description":"Meta Ad Library ad URL (e.g. \"https://www.facebook.com/ads/library?id=1185617869915074\"). Provide either id or url.","type":"string"}},"title":"Facebook ad details input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"oneOf":[{"type":"null"},{"properties":{"active":{"description":"Whether the ad is currently running.","type":["boolean","null"]},"adArchiveId":{"description":"Ad Library archive ID (stable identity). Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"caption":{"description":"Caption line of the ad creative, usually the advertiser's display domain.","type":"string"},"categories":{"description":"Ad Library categories the ad is filed under.","items":{"type":"string"},"type":"array"},"ctaText":{"description":"Call-to-action label. Populated whenever the provider has data for the entity.","type":["string","null"],"x-anyapi-must-populate":true},"currency":{"description":"Spend currency, may be empty.","type":["string","null"]},"displayFormat":{"description":"Ad creative format. Populated whenever the provider has data for the entity.","type":["string","null"],"x-anyapi-must-populate":true},"endDate":{"description":"Run end, epoch seconds.","type":["integer","null"]},"isReshared":{"description":"Whether the ad creative is a reshare of another post.","type":"boolean"},"linkDescription":{"description":"Description text shown under the ad's link.","type":"string"},"linkUrl":{"description":"Creative destination URL. Populated whenever the provider has data for the entity.","type":["string","null"],"x-anyapi-must-populate":true},"media":{"description":"Creative attached to the ad: one element per image, video, or carousel card, in the order the ad presents them. Empty when the ad has none.","items":{"properties":{"height":{"description":"Pixel height of the media item, when the lane reports it.","type":"integer"},"type":{"description":"One of photo, video, or gif.","type":"string"},"url":{"description":"Image URL. For a video or GIF this is the poster/thumbnail frame.","format":"uri","type":"string"},"videoUrl":{"description":"Playable video file URL. Present only for video and gif items.","format":"uri","type":"string"},"width":{"description":"Pixel width of the media item, when the lane reports it.","type":"integer"}},"required":["type","url"],"type":"object"},"type":"array"},"pageCategories":{"description":"Categories Facebook lists the advertising page under.","items":{"type":"string"},"type":"array"},"pageDeleted":{"description":"Whether the advertising page has been deleted.","type":"boolean"},"pageId":{"description":"Advertiser page ID (stable identity). Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"pageLikes":{"description":"Like count of the advertising page.","type":"integer"},"pageName":{"description":"Advertiser page name. Populated whenever the provider has data for the entity.","type":["string","null"],"x-anyapi-must-populate":true},"pageProfilePicture":{"description":"Profile picture of the advertising page. This is the advertiser's identity image, not ad creative.","format":"uri","type":"string"},"pageUrl":{"description":"Canonical Facebook URL of the advertising page.","type":"string"},"platforms":{"description":"Publisher platforms the ad runs on. Populated whenever the provider has data for the entity.","items":{"type":"string"},"type":["array","null"],"x-anyapi-must-populate":true},"sourceUrl":{"description":"Inspectable Meta Ad Library URL for this ad. Populated whenever the provider has data for the entity.","format":"uri","type":"string","x-anyapi-must-populate":true},"startDate":{"description":"Run start, epoch seconds. Populated whenever the provider has data for the entity.","type":["integer","null"],"x-anyapi-must-populate":true},"text":{"description":"Ad body text. Populated whenever the provider has data for the entity.","type":["string","null"],"x-anyapi-must-populate":true},"title":{"description":"Creative title. Populated whenever the provider has data for the entity.","type":["string","null"],"x-anyapi-must-populate":true}},"required":["adArchiveId","sourceUrl","pageId"],"type":"object"}]},"found":{"type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"Facebook ad details output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"Facebook Ad Details","tags":["facebook"],"x-mint":{"href":"/api-reference/facebook/ad-details"},"x-payment-info":{"price":{"amount":"0.001200","currency":"USD","mode":"fixed"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"amount":"0.001200","currency":"USD","minimumUsd":"0.001000","mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"amount":"0.001200","currency":"USD","minimumUsd":null,"mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/facebook.ad_details_full":{"post":{"description":"Pull one Meta Ad Library ad with its creative: every carousel variant, image and video URL, headline, body, and call to action.\n\n**Price:** billed per result - \\$4.62 per 1,000 requests base + \\$0.00 per 1,000 results, capped at \\$4.62 per 1,000 requests.\n\n**Routing:** one lane serves this API today, so a failed attempt has nowhere to fail over to. Payment outcome follows the selected rail's settlement policy.\n\n**Catalog:** [Facebook Ad Creative Details pricing and uptime](https://getanyapi.com/api/facebook/ad-details-full) - live USD price, lane routing, and measured 30-day uptime. [Every Facebook endpoint](https://getanyapi.com/api/facebook).","operationId":"facebook_ad_details_full","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"id":"962050096457659"},"schema":{"additionalProperties":false,"example":{"id":"962050096457659"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"id":{"description":"Meta Ad Library ad ID - the numeric id in an Ad Library URL (e.g. \"962050096457659\" from https://www.facebook.com/ads/library/?id=962050096457659).","minLength":1,"type":"string"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true}},"required":["id"],"title":"Facebook ad creative details input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"oneOf":[{"type":"null"},{"properties":{"active":{"description":"Whether the ad is currently running.","type":"boolean"},"adArchiveId":{"description":"Ad Library archive ID (stable identity). Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"body":{"description":"Ad body text. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"caption":{"description":"Display caption, usually the destination domain.","type":"string"},"categories":{"description":"Ad Library categories the ad is filed under.","items":{"type":"string"},"type":"array"},"creatives":{"description":"One entry per creative variant of a carousel or dynamic ad, in the order Meta returns them. Single-creative ads return an empty array and carry their media in images/videos. Meta CDN media URLs are signed and expire, so fetch what you need at read time.","items":{"properties":{"body":{"description":"Variant body text.","type":"string"},"caption":{"description":"Variant display caption.","type":"string"},"ctaText":{"description":"Variant call-to-action label.","type":"string"},"ctaType":{"description":"Variant call-to-action type.","type":"string"},"image":{"description":"Original creative image URL.","type":"string"},"imageResized":{"description":"Resized creative image URL.","type":"string"},"linkDescription":{"description":"Variant secondary description.","type":"string"},"linkUrl":{"description":"Variant destination URL.","type":"string"},"title":{"description":"Variant headline.","type":"string"},"videoPreviewImage":{"description":"Poster frame for the creative video.","type":"string"},"videoUrl":{"description":"Creative video URL (HD when supplied, otherwise SD).","type":"string"}},"type":"object"},"type":"array"},"ctaText":{"description":"Call-to-action label (e.g. \"Shop now\").","type":"string"},"ctaType":{"description":"Call-to-action type (e.g. \"SHOP_NOW\").","type":"string"},"displayFormat":{"description":"Ad creative format (e.g. \"DPA\", \"VIDEO\", \"IMAGE\"). Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"endedUtc":{"description":"Run end, or last-seen date while the ad is still running. UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds.","type":"number"},"images":{"description":"Standalone creative images for a single-image ad. Meta CDN media URLs are signed and expire.","items":{"properties":{"image":{"description":"Original creative image URL.","type":"string"},"imageResized":{"description":"Resized creative image URL.","type":"string"}},"type":"object"},"type":"array"},"isReshared":{"description":"Whether the ad creative is a reshare of another post.","type":"boolean"},"linkDescription":{"description":"Secondary link description line.","type":"string"},"linkUrl":{"description":"Creative destination URL.","type":"string"},"pageCategories":{"description":"Categories Facebook lists the advertising page under.","items":{"type":"string"},"type":"array"},"pageDeleted":{"description":"Whether the advertising page has been deleted.","type":"boolean"},"pageId":{"description":"Advertiser page ID (stable identity). Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"pageImage":{"description":"Advertiser page profile picture URL. Meta CDN URLs are signed and expire.","type":"string"},"pageLikes":{"description":"Like count of the advertising page.","type":"integer"},"pageName":{"description":"Advertiser page name. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"pageUrl":{"description":"Advertiser page URL.","type":"string"},"platforms":{"description":"Publisher platforms the ad runs on.","items":{"type":"string"},"type":"array"},"sourceUrl":{"description":"Inspectable Meta Ad Library URL for this ad. Populated whenever the provider has data for the entity.","format":"uri","type":"string","x-anyapi-must-populate":true},"startedUtc":{"description":"Run start. UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds.","type":"number"},"title":{"description":"Creative headline. Dynamic-product ads return a template such as \"{{product.name}}\".","type":"string"},"videos":{"description":"Standalone creative videos for a single-video ad. Meta CDN media URLs are signed and expire.","items":{"properties":{"videoPreviewImage":{"description":"Poster frame for the creative video.","type":"string"},"videoUrl":{"description":"Creative video URL (HD when supplied, otherwise SD).","type":"string"}},"type":"object"},"type":"array"}},"required":["adArchiveId","sourceUrl","pageId"],"type":"object"}]},"found":{"type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"Facebook ad creative details output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"Facebook Ad Creative Details","tags":["facebook"],"x-mint":{"href":"/api-reference/facebook/ad-details-full"},"x-payment-info":{"price":{"currency":"USD","max":"0.004620","min":"0.004620","mode":"dynamic"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"currency":"USD","max":"0.004620","min":"0.004620","minimumUsd":"0.001000","mode":"dynamic","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"currency":"USD","max":"0.004620","min":"0.004620","minimumUsd":null,"mode":"dynamic","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/facebook.ad_transcript":{"post":{"description":"Get the spoken-word transcript of a Meta Ad Library video ad by ad ID or URL.\n\n**Price:** \\$1.20 per 1,000 requests (flat per request - same cost regardless of results returned).\n\n**Routing:** 2 independent lanes are available in execution order. A failed attempt uses the next lane only when the request's payment authorizes that lane's price; the normalized schema stays the same.\n\n**Catalog:** [Facebook Ad Transcript pricing and uptime](https://getanyapi.com/api/facebook/ad-transcript) - live USD price, lane routing, and measured 30-day uptime. [Every Facebook endpoint](https://getanyapi.com/api/facebook).","operationId":"facebook_ad_transcript","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"id":"931919822778200"},"schema":{"additionalProperties":false,"example":{"id":"931919822778200"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"id":{"description":"Meta Ad Library ad ID (e.g. \"1020359190509080\"). Provide either id or url.","type":"string"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"url":{"description":"Meta Ad Library ad URL (e.g. \"https://www.facebook.com/ads/library?id=1020359190509080\"). Provide either id or url.","type":"string"}},"title":"Facebook ad transcript input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"oneOf":[{"type":"null"},{"properties":{"adId":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"transcript":{"description":"Transcribed ad audio text.","type":"string"},"transcriptAvailable":{"type":"boolean"},"url":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true}},"required":["adId","url","transcript","transcriptAvailable"],"type":"object"}]},"found":{"type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"Facebook ad transcript output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"Facebook Ad Transcript","tags":["facebook"],"x-mint":{"href":"/api-reference/facebook/ad-transcript"},"x-payment-info":{"price":{"amount":"0.001200","currency":"USD","mode":"fixed"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"amount":"0.001200","currency":"USD","minimumUsd":"0.001000","mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"amount":"0.001200","currency":"USD","minimumUsd":null,"mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/facebook.ads_search":{"post":{"description":"Search the Meta Ad Library by keyword and get matching ads (advertiser, creative text, CTA, platforms, and run dates) with cursor pagination.\n\n**Price:** \\$1.20 per 1,000 requests (flat per request - same cost regardless of results returned).\n\n**Routing:** 2 independent lanes are available in execution order. A failed attempt uses the next lane only when the request's payment authorizes that lane's price; the normalized schema stays the same.\n\n**Catalog:** [Facebook Ad Search pricing and uptime](https://getanyapi.com/api/facebook/ads-search) - live USD price, lane routing, and measured 30-day uptime. [Every Facebook endpoint](https://getanyapi.com/api/facebook).","operationId":"facebook_ads_search","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"country":"US","query":"nike","searchType":"keyword_exact_phrase"},"schema":{"additionalProperties":false,"example":{"country":"US","query":"nike","searchType":"keyword_exact_phrase"},"properties":{"adType":{"description":"Restrict to all ads (default) or only political and issue ads.","enum":["all","political_and_issue_ads"],"type":"string"},"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"country":{"description":"Two-letter country code to scope results. Omit for all countries.","type":"string"},"cursor":{"description":"Opaque pagination cursor from a previous response's nextCursor.","type":"string"},"endDate":{"description":"Filter to ads with impressions on or before this date, in YYYY-MM-DD format.","type":"string"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"mediaType":{"description":"Creative media type filter.","enum":["ALL","IMAGE","VIDEO","MEME","IMAGE_AND_MEME","NONE"],"type":"string"},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"query":{"description":"Keyword to search the Meta Ad Library for (e.g. \"protein powder\").","type":"string"},"searchType":{"description":"Match mode for the query: loose keyword match (keyword_unordered, the default) or exact phrase (keyword_exact_phrase).","enum":["keyword_unordered","keyword_exact_phrase"],"type":"string"},"sortBy":{"description":"Sort order: impressions (highest first, the default) or recent (most recent).","enum":["impressions","recent"],"type":"string"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"startDate":{"description":"Filter to ads with impressions on or after this date, in YYYY-MM-DD format.","type":"string"},"status":{"default":"ACTIVE","description":"Ad status filter.","enum":["ALL","ACTIVE","INACTIVE"],"type":"string"}},"required":["query"],"title":"Facebook ad search input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"oneOf":[{"type":"null"},{"additionalProperties":false,"properties":{"ads":{"items":{"properties":{"active":{"type":"boolean"},"adCount":{"description":"Number of ads in this campaign (collation count).","type":"integer"},"caption":{"description":"Caption line of the ad creative, usually the advertiser's display domain.","type":"string"},"categories":{"description":"Ad Library categories the ad is filed under.","items":{"type":"string"},"type":"array"},"ctaText":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"ctaType":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"displayFormat":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"endDate":{"description":"Epoch seconds.","type":"integer"},"id":{"description":"Ad Library archive ID. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"isReshared":{"description":"Whether the ad creative is a reshare of another post.","type":"boolean"},"linkDescription":{"description":"Description text shown under the ad's link.","type":"string"},"linkUrl":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"media":{"description":"Creative attached to the ad: one element per image, video, or carousel card, in the order the ad presents them. Empty when the ad has none.","items":{"properties":{"height":{"description":"Pixel height of the media item, when the lane reports it.","type":"integer"},"type":{"description":"One of photo, video, or gif.","type":"string"},"url":{"description":"Image URL. For a video or GIF this is the poster/thumbnail frame.","format":"uri","type":"string"},"videoUrl":{"description":"Playable video file URL. Present only for video and gif items.","format":"uri","type":"string"},"width":{"description":"Pixel width of the media item, when the lane reports it.","type":"integer"}},"required":["type","url"],"type":"object"},"type":"array"},"pageCategories":{"description":"Categories Facebook lists the advertising page under.","items":{"type":"string"},"type":"array"},"pageDeleted":{"description":"Whether the advertising page has been deleted.","type":"boolean"},"pageId":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"pageLikes":{"description":"Like count of the advertising page.","type":"integer"},"pageName":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"pageProfilePicture":{"description":"Profile picture of the advertising page. This is the advertiser's identity image, not ad creative.","format":"uri","type":"string"},"pageUrl":{"description":"Canonical Facebook URL of the advertising page.","type":"string"},"platforms":{"description":"Populated whenever the provider has data for the entity.","items":{"type":"string"},"type":"array","x-anyapi-must-populate":true},"sourceUrl":{"description":"Inspectable Meta Ad Library URL for this ad. Populated whenever the provider has data for the entity.","format":"uri","type":"string","x-anyapi-must-populate":true},"startDate":{"description":"Epoch seconds. Populated whenever the provider has data for the entity.","type":"integer","x-anyapi-must-populate":true},"text":{"description":"Ad body text. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"title":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true}},"required":["id","sourceUrl","pageId","pageName","active","startDate","endDate","text","title","ctaText","ctaType","linkUrl","displayFormat","platforms","adCount"],"type":"object"},"type":"array"},"nextCursor":{"description":"Opaque cursor for the next page of ads, or null when this lane has no more. Pass it back as cursor to continue.","type":["string","null"]},"totalResults":{"type":"integer"}},"required":["totalResults","nextCursor","ads"],"type":"object"}]},"found":{"type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"Facebook ad search output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"Facebook Ad Search","tags":["facebook"],"x-mint":{"href":"/api-reference/facebook/ads-search"},"x-payment-info":{"price":{"amount":"0.001200","currency":"USD","mode":"fixed"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"amount":"0.001200","currency":"USD","minimumUsd":"0.001000","mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"amount":"0.001200","currency":"USD","minimumUsd":null,"mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/facebook.comment_replies":{"post":{"description":"List the replies to a Facebook post comment (text, author, reactions, and timestamps) as normalized JSON.\n\n**Price:** \\$1.20 per 1,000 requests (flat per request - same cost regardless of results returned).\n\n**Routing:** one lane serves this API today, so a failed attempt has nowhere to fail over to. Payment outcome follows the selected rail's settlement policy.\n\n**Catalog:** [Facebook Comment Replies pricing and uptime](https://getanyapi.com/api/facebook/comment-replies) - live USD price, lane routing, and measured 30-day uptime. [Every Facebook endpoint](https://getanyapi.com/api/facebook).","operationId":"facebook_comment_replies","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"expansionToken":"MjoxNzgzMjI4OTY4OgF_o5zrjDnpemv4bwPtpsShXutqvKIw2bKs2YuJksL1Ak8n8YG-_KPSQGkIks5oW6wdRfhb_cRv9q5OX0NHjFJwEupYNZi9pcMV-FYLWLp47u-eusMkZFOMwbkISsTln7gtSvQrOzlffyavOTIL85PECYzGfunU2IAEkd13CIikxu06Mw10UJ1ShcFAmz8175R1uJfYy_iOixWZukqfrWhUfVOXApXznxx7qXvUxPwct76qe6p7-nVWQrPC_SZc2xh9Z8ggL3WMjgTzSq4oWFSsyZuuVsyVVjSgdjRQiDqtJSeEUlSjTr6vOnKsvKV-GpnBRaeA0BCaNRhqpB4xDZoduBuO5ZYrFvWLJdJLryDhCPI2Ss-Z33cEM2Vz7pLf1wJzE7TuizXPwICSn1DA_Prca-BItTbOUjAjfiySap1LXYkGuuDC2ziUdiEsmE5XhevMP8XtF_2WQlMNcGbXMEQyAWDUawtPAxXgMeRrCO9YGSweFQ4OZumoIlSGa3Vfjy-euUOHT1IAsNbV2A8rAq4HJNU3jCXQTn0vfW9xvbVQhL-53Mhw2YPjhlvUj6QpnGA25N8","feedbackId":"ZmVlZGJhY2s6MTM5MzQ2MTExNTQ4MTkyN18yMDgyNjUzMjQ1ODA5Mzg2"},"schema":{"additionalProperties":false,"example":{"expansionToken":"MjoxNzgzMjI4OTY4OgF_o5zrjDnpemv4bwPtpsShXutqvKIw2bKs2YuJksL1Ak8n8YG-_KPSQGkIks5oW6wdRfhb_cRv9q5OX0NHjFJwEupYNZi9pcMV-FYLWLp47u-eusMkZFOMwbkISsTln7gtSvQrOzlffyavOTIL85PECYzGfunU2IAEkd13CIikxu06Mw10UJ1ShcFAmz8175R1uJfYy_iOixWZukqfrWhUfVOXApXznxx7qXvUxPwct76qe6p7-nVWQrPC_SZc2xh9Z8ggL3WMjgTzSq4oWFSsyZuuVsyVVjSgdjRQiDqtJSeEUlSjTr6vOnKsvKV-GpnBRaeA0BCaNRhqpB4xDZoduBuO5ZYrFvWLJdJLryDhCPI2Ss-Z33cEM2Vz7pLf1wJzE7TuizXPwICSn1DA_Prca-BItTbOUjAjfiySap1LXYkGuuDC2ziUdiEsmE5XhevMP8XtF_2WQlMNcGbXMEQyAWDUawtPAxXgMeRrCO9YGSweFQ4OZumoIlSGa3Vfjy-euUOHT1IAsNbV2A8rAq4HJNU3jCXQTn0vfW9xvbVQhL-53Mhw2YPjhlvUj6QpnGA25N8","feedbackId":"ZmVlZGJhY2s6MTM5MzQ2MTExNTQ4MTkyN18yMDgyNjUzMjQ1ODA5Mzg2"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"cursor":{"description":"Pagination cursor from a previous response.","type":"string"},"expansionToken":{"description":"The expansion_token of the comment, from the post comments endpoint.","type":"string"},"feedbackId":{"description":"The feedback_id of the comment (not the comment id).","type":"string"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true}},"required":["feedbackId","expansionToken"],"title":"Facebook Comment Replies input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"description":"Wrapper holding the replies array plus pagination, or null when nothing was found.","oneOf":[{"type":"null"},{"additionalProperties":false,"properties":{"hasNextPage":{"description":"True when more replies are available beyond this page.","type":"boolean"},"nextCursor":{"description":"Opaque cursor for the next page of replies, or null when this lane has no more. Pass it back as cursor to continue.","type":["string","null"]},"replies":{"description":"Replies to the comment. Populated whenever the provider has data for the entity.","items":{"properties":{"authorId":{"description":"Identifier of the reply author. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"authorName":{"description":"Display name of the reply author. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"authorProfilePicture":{"description":"URL of the author's profile picture.","type":"string"},"createdUtc":{"description":"UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds. Populated whenever the provider has data for the entity.","type":"number","x-anyapi-must-populate":true},"expansionToken":{"description":"Token used to expand nested replies, when present.","type":"string"},"feedbackId":{"description":"Facebook feedback identifier for the reply. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"id":{"description":"Reply identifier. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"reactionCount":{"description":"Number of reactions on the reply.","type":"integer"},"replyCount":{"description":"Number of replies nested under this reply.","type":"integer"},"text":{"description":"Reply text content. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true}},"required":["id","text","createdUtc","replyCount","reactionCount","authorName","authorId","authorProfilePicture","feedbackId"],"type":"object"},"type":"array","x-anyapi-must-populate":true}},"required":["nextCursor","hasNextPage","replies"],"type":"object"}]},"found":{"description":"True when replies were found; false when the lookup returned nothing.","type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"Facebook Comment Replies output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"Facebook Comment Replies","tags":["facebook"],"x-mint":{"href":"/api-reference/facebook/comment-replies"},"x-payment-info":{"price":{"amount":"0.001200","currency":"USD","mode":"fixed"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"amount":"0.001200","currency":"USD","minimumUsd":"0.001000","mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"amount":"0.001200","currency":"USD","minimumUsd":null,"mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/facebook.company_ads":{"post":{"description":"List the Meta Ad Library ads a company is running by page ID or company name (creative text, format, platforms, and run dates) with cursor pagination.\n\n**Price:** \\$1.20 per 1,000 requests (flat per request - same cost regardless of results returned).\n\n**Routing:** one lane serves this API today, so a failed attempt has nowhere to fail over to. Payment outcome follows the selected rail's settlement policy.\n\n**Catalog:** [Facebook Company Ads pricing and uptime](https://getanyapi.com/api/facebook/company-ads) - live USD price, lane routing, and measured 30-day uptime. [Every Facebook endpoint](https://getanyapi.com/api/facebook).","operationId":"facebook_company_ads","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"companyName":"nike","sortBy":"recent"},"schema":{"additionalProperties":false,"anyOf":[{"required":["pageId"]},{"required":["companyName"]}],"example":{"companyName":"nike","sortBy":"recent"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"companyName":{"description":"Company name to search (e.g. \"nike\"). Exact-match and case-sensitive against the Meta Ad Library index; an advertiser with no indexed page returns found:false.","minLength":1,"type":"string"},"country":{"description":"Two-letter country code to scope results. Defaults to all countries.","type":"string"},"cursor":{"description":"Opaque pagination cursor from a previous response's nextCursor.","type":"string"},"endDate":{"description":"Filter to ads with impressions on or before this date, in YYYY-MM-DD format.","type":"string"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"language":{"description":"Two-letter language code to filter ads (e.g. \"EN\", \"ES\", \"FR\").","type":"string"},"mediaType":{"description":"Creative media type filter.","enum":["ALL","IMAGE","VIDEO","MEME","IMAGE_AND_MEME","NONE"],"type":"string"},"pageId":{"description":"Company's Ad Library page ID. Provide either pageId or companyName.","minLength":1,"type":"string"},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"sortBy":{"description":"Sort order: impressions (highest first, the default) or recent (most recent).","enum":["impressions","recent"],"type":"string"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"startDate":{"description":"Filter to ads with impressions on or after this date, in YYYY-MM-DD format.","type":"string"},"status":{"description":"Ad status filter. Defaults to ACTIVE.","enum":["ALL","ACTIVE","INACTIVE"],"type":"string"}},"title":"Facebook company ads input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"oneOf":[{"type":"null"},{"additionalProperties":false,"properties":{"ads":{"items":{"properties":{"active":{"type":"boolean"},"adCount":{"description":"Number of ads in this campaign (collation count).","type":"integer"},"caption":{"description":"Caption line of the ad creative, usually the advertiser's display domain.","type":"string"},"categories":{"description":"Ad Library categories the ad is filed under.","items":{"type":"string"},"type":"array"},"ctaText":{"description":"Call-to-action button label on the ad.","type":"string"},"ctaType":{"description":"Call-to-action button type on the ad, e.g. \"SHOP_NOW\".","type":"string"},"currency":{"type":"string"},"displayFormat":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"endDate":{"description":"Epoch seconds.","type":"integer"},"id":{"description":"Ad Library archive ID. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"isReshared":{"description":"Whether the ad creative is a reshare of another post.","type":"boolean"},"linkDescription":{"description":"Description text shown under the ad's link.","type":"string"},"linkUrl":{"description":"Destination URL the ad links to.","type":"string"},"media":{"description":"Creative attached to the ad: one element per image, video, or carousel card, in the order the ad presents them. Empty when the ad has none.","items":{"properties":{"height":{"description":"Pixel height of the media item, when the lane reports it.","type":"integer"},"type":{"description":"One of photo, video, or gif.","type":"string"},"url":{"description":"Image URL. For a video or GIF this is the poster/thumbnail frame.","format":"uri","type":"string"},"videoUrl":{"description":"Playable video file URL. Present only for video and gif items.","format":"uri","type":"string"},"width":{"description":"Pixel width of the media item, when the lane reports it.","type":"integer"}},"required":["type","url"],"type":"object"},"type":"array"},"pageCategories":{"description":"Categories Facebook lists the advertising page under.","items":{"type":"string"},"type":"array"},"pageDeleted":{"description":"Whether the advertising page has been deleted.","type":"boolean"},"pageId":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"pageLikes":{"description":"Like count of the advertising page.","type":"integer"},"pageName":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"pageProfilePicture":{"description":"Profile picture of the advertising page. This is the advertiser's identity image, not ad creative.","format":"uri","type":"string"},"pageUrl":{"description":"Canonical Facebook URL of the advertising page.","type":"string"},"platforms":{"description":"Populated whenever the provider has data for the entity.","items":{"type":"string"},"type":"array","x-anyapi-must-populate":true},"startDate":{"description":"Epoch seconds. Populated whenever the provider has data for the entity.","type":"integer","x-anyapi-must-populate":true},"text":{"description":"Ad body text. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"title":{"description":"Headline of the ad creative.","type":"string"}},"required":["id","pageId","pageName","active","startDate","endDate","currency","text","displayFormat","platforms","adCount"],"type":"object"},"type":"array"},"nextCursor":{"description":"Opaque cursor for the next page of ads, or null when this lane has no more. Pass it back as cursor to continue.","type":["string","null"]},"totalResults":{"description":"Total number of ads Facebook reports for the page.","type":"integer"}},"required":["nextCursor","ads"],"type":"object"}]},"found":{"type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"Facebook company ads output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"Facebook Company Ads","tags":["facebook"],"x-mint":{"href":"/api-reference/facebook/company-ads"},"x-payment-info":{"price":{"amount":"0.001200","currency":"USD","mode":"fixed"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"amount":"0.001200","currency":"USD","minimumUsd":"0.001000","mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"amount":"0.001200","currency":"USD","minimumUsd":null,"mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/facebook.event_details":{"post":{"description":"Fetch full details for a single Facebook event by ID or URL (name, schedule, venue, hosts, and attendance) as normalized JSON.\n\n**Price:** \\$1.20 per 1,000 requests (flat per request - same cost regardless of results returned).\n\n**Routing:** one lane serves this API today, so a failed attempt has nowhere to fail over to. Payment outcome follows the selected rail's settlement policy.\n\n**Catalog:** [Facebook Event Details pricing and uptime](https://getanyapi.com/api/facebook/event-details) - live USD price, lane routing, and measured 30-day uptime. [Every Facebook endpoint](https://getanyapi.com/api/facebook).","operationId":"facebook_event_details","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"id":"4045709448982422"},"schema":{"additionalProperties":false,"example":{"id":"4045709448982422"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"id":{"description":"The event's numeric identifier.","type":"string"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"url":{"description":"The event's Facebook URL.","type":"string"}},"title":"Facebook Event Details input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"oneOf":[{"type":"null"},{"properties":{"address":{"description":"Street address of the event venue.","type":"string"},"attendanceCount":{"description":"Number of people Facebook reports as attending.","type":"integer"},"canViewMembers":{"description":"Whether the event's member list is publicly viewable.","type":"boolean"},"city":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"cityId":{"description":"Numeric Facebook id of the event's city page, as a string.","type":"string"},"coverPhotoUrl":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"creatorId":{"description":"Numeric Facebook id of the event's creator, as a string.","type":"string"},"creatorName":{"description":"Display name of the event's creator.","type":"string"},"dayTimeSentence":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"description":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"duration":{"description":"Human-readable event duration, e.g. \"2 days\".","type":"string"},"endTime":{"type":"string"},"eventKind":{"description":"Event kind Facebook reports, e.g. \"PUBLIC_TYPE\".","type":"string"},"goingCount":{"type":"integer"},"hostContextText":{"description":"Host line Facebook shows for the event, e.g. \"Event by Kansas Comic Con\".","type":"string"},"hostNames":{"description":"Names of the event's hosts.","items":{"type":"string"},"type":"array"},"hosts":{"description":"Pages or profiles hosting the event.","items":{"properties":{"id":{"description":"Numeric Facebook id of the host, as a string.","type":"string"},"image":{"description":"Profile picture URL of the host.","type":"string"},"name":{"description":"Display name of the host.","type":"string"},"type":{"description":"Kind of Facebook entity the host is, e.g. \"User\" or \"Page\".","type":"string"},"url":{"description":"Canonical Facebook URL of the host.","type":"string"},"verified":{"description":"Whether the host carries a Facebook verification badge.","type":"boolean"}},"type":"object"},"type":"array"},"id":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"interestedCount":{"type":"integer"},"isCanceled":{"type":"boolean"},"isOnline":{"type":"boolean"},"isPast":{"description":"Whether the event has already finished.","type":"boolean"},"latitude":{"description":"Latitude of the event venue.","type":"number"},"locationName":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"longitude":{"description":"Longitude of the event venue.","type":"number"},"name":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"placeId":{"description":"Numeric Facebook id of the event's place, as a string.","type":"string"},"privacy":{"description":"Privacy setting of the event, e.g. \"public\".","type":"string"},"rsvpStyle":{"description":"RSVP style of the event, e.g. \"PUBLIC_RSVP_STYLE\".","type":"string"},"startTime":{"type":"string"},"startTimeFormatted":{"description":"Human-readable start time Facebook shows, e.g. \"Sat, Oct 31 - Nov 1\".","type":"string"},"startTimestamp":{"description":"UTC epoch timestamp in seconds (Unix time) the event starts. Multiply by 1000 for a JS Date in milliseconds.","type":"integer"},"url":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true}},"required":["id","url","name","description","dayTimeSentence","startTime","endTime","locationName","city","interestedCount","goingCount","coverPhotoUrl","isOnline","isCanceled"],"type":"object"}]},"found":{"type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"Facebook Event Details output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"Facebook Event Details","tags":["facebook"],"x-mint":{"href":"/api-reference/facebook/event-details"},"x-payment-info":{"price":{"amount":"0.001200","currency":"USD","mode":"fixed"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"amount":"0.001200","currency":"USD","minimumUsd":"0.001000","mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"amount":"0.001200","currency":"USD","minimumUsd":null,"mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/facebook.events":{"post":{"description":"List public Facebook events for a city or place by its events-page URL (event name, date, venue, and attendance) as normalized JSON.\n\n**Price:** \\$1.20 per 1,000 requests (flat per request - same cost regardless of results returned).\n\n**Routing:** one lane serves this API today, so a failed attempt has nowhere to fail over to. Payment outcome follows the selected rail's settlement policy.\n\n**Catalog:** [Facebook Events pricing and uptime](https://getanyapi.com/api/facebook/events) - live USD price, lane routing, and measured 30-day uptime. [Every Facebook endpoint](https://getanyapi.com/api/facebook).","operationId":"facebook_events","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"url":"https://www.facebook.com/events/explore/saint-petersburg-florida/111326725552547"},"schema":{"additionalProperties":false,"example":{"url":"https://www.facebook.com/events/explore/saint-petersburg-florida/111326725552547"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"cursor":{"description":"Pagination cursor from a previous response to fetch the next page.","type":"string"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"time":{"description":"Timeframe filter for the returned events. Defaults to all time.","enum":["today","this_week","next_week"],"type":"string"},"url":{"description":"URL of a city's or place's Facebook Events page (e.g. https://www.facebook.com/events/explore/saint-petersburg-florida/111326725552547).","type":"string"}},"required":["url"],"title":"Facebook Events input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"oneOf":[{"type":"null"},{"additionalProperties":false,"properties":{"events":{"items":{"properties":{"coverImage":{"description":"Cover photo image URL of the event.","type":"string"},"dayTimeSentence":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"eventKind":{"description":"Event kind Facebook reports, e.g. \"PUBLIC_TYPE\".","type":"string"},"goingCount":{"type":"integer"},"id":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"interestedCount":{"type":"integer"},"isHappeningNow":{"description":"Whether the event is happening right now.","type":"boolean"},"isOnline":{"type":"boolean"},"isPast":{"description":"Whether the event has already finished.","type":"boolean"},"name":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"placeId":{"description":"Numeric Facebook id of the event's place, as a string.","type":"string"},"placeName":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"startTimestamp":{"description":"Populated whenever the provider has data for the entity.","type":"integer","x-anyapi-must-populate":true},"url":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true}},"required":["id","name","url","dayTimeSentence","startTimestamp","isOnline","placeName","interestedCount","goingCount"],"type":"object"},"type":"array"},"nextCursor":{"description":"Opaque cursor for the next page of events, or null when this lane has no more. Pass it back as cursor to continue.","type":["string","null"]}},"required":["nextCursor","events"],"type":"object"}]},"found":{"type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"Facebook Events output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"Facebook Events","tags":["facebook"],"x-mint":{"href":"/api-reference/facebook/events"},"x-payment-info":{"price":{"amount":"0.001200","currency":"USD","mode":"fixed"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"amount":"0.001200","currency":"USD","minimumUsd":"0.001000","mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"amount":"0.001200","currency":"USD","minimumUsd":null,"mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/facebook.events_search":{"post":{"description":"Search public Facebook events by keyword and get structured event records (name, schedule, venue, pricing, and attendance) as normalized JSON.\n\n**Price:** \\$1.20 per 1,000 requests (flat per request - same cost regardless of results returned).\n\n**Routing:** 2 independent lanes are available in execution order. A failed attempt uses the next lane only when the request's payment authorizes that lane's price; the normalized schema stays the same.\n\n**Catalog:** [Facebook Events Search pricing and uptime](https://getanyapi.com/api/facebook/events-search) - live USD price, lane routing, and measured 30-day uptime. [Every Facebook endpoint](https://getanyapi.com/api/facebook).","operationId":"facebook_events_search","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"query":"music festival"},"schema":{"additionalProperties":false,"example":{"query":"music festival"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"cursor":{"description":"Pagination cursor from a previous response.","type":"string"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"query":{"description":"The query to search events for.","type":"string"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true}},"required":["query"],"title":"Facebook Events Search input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"oneOf":[{"type":"null"},{"additionalProperties":false,"properties":{"events":{"items":{"properties":{"coverImage":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"dayTimeSentence":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"eventKind":{"description":"Event kind Facebook reports, e.g. \"PUBLIC_TYPE\".","type":"string"},"goingCount":{"type":"integer"},"id":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"interestedCount":{"type":"integer"},"isOnline":{"type":"boolean"},"isPast":{"type":"boolean"},"name":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"placeId":{"description":"Numeric Facebook id of the event's place, as a string.","type":"string"},"placeName":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"priceRangeText":{"type":"string"},"startTimestamp":{"description":"Populated whenever the provider has data for the entity.","type":"integer","x-anyapi-must-populate":true},"type":{"description":"Entity type of the record, e.g. \"Event\".","type":"string"},"url":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true}},"required":["id","name","url","dayTimeSentence","startTimestamp","placeName","priceRangeText","coverImage","interestedCount","goingCount","isOnline","isPast"],"type":"object"},"type":"array"},"nextCursor":{"description":"Opaque cursor for the next page of events, or null when this lane has no more. Pass it back as cursor to continue.","type":["string","null"]}},"required":["nextCursor","events"],"type":"object"}]},"found":{"type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"Facebook Events Search output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"Facebook Events Search","tags":["facebook"],"x-mint":{"href":"/api-reference/facebook/events-search"},"x-payment-info":{"price":{"amount":"0.001200","currency":"USD","mode":"fixed"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"amount":"0.001200","currency":"USD","minimumUsd":"0.001000","mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"amount":"0.001200","currency":"USD","minimumUsd":null,"mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/facebook.followers":{"post":{"description":"List the public followers (or accounts followed) of any Facebook page or profile URL as normalized JSON records.\n\n**Price:** billed per result - \\$6.60 per 1,000 results, capped at \\$132.00 per 1,000 requests.\n\n**Routing:** one lane serves this API today, so a failed attempt has nowhere to fail over to. Payment outcome follows the selected rail's settlement policy.\n\n**Catalog:** [Facebook Followers pricing and uptime](https://getanyapi.com/api/facebook/followers) - live USD price, lane routing, and measured 30-day uptime. [Every Facebook endpoint](https://getanyapi.com/api/facebook).","operationId":"facebook_followers","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"limit":3,"url":"https://www.facebook.com/nike"},"schema":{"additionalProperties":false,"example":{"limit":3,"url":"https://www.facebook.com/nike"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"followType":{"default":"follower","description":"Which relation to fetch: 'follower' or 'following' (e.g. follower).","type":"string"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"limit":{"description":"Maximum number of results to return (1-20, default 20). You are billed per result returned, so a lower limit costs less.","maximum":20,"minimum":1,"type":"integer"},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"url":{"description":"Facebook page or profile URL to list follows for (e.g. https://www.facebook.com/nasa).","type":"string"}},"required":["url"],"title":"Facebook followers input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"oneOf":[{"type":"null"},{"additionalProperties":false,"properties":{"items":{"description":"Follower or following records for the target page/profile. Populated whenever the provider has data for the entity.","items":{"properties":{"id":{"description":"The account's numeric Facebook ID, as a string. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"image":{"description":"URL of the account's profile picture, with tracking query params stripped. Empty when the upstream omits it.","type":"string"},"name":{"description":"The account's public display name. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"type":{"description":"Kind of Facebook entity the record is, e.g. \"User\" or \"Page\".","type":"string"},"url":{"description":"Canonical URL of the account's Facebook profile, with tracking query params stripped. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true}},"required":["id","name","url"],"type":"object"},"type":"array","x-anyapi-must-populate":true}},"required":["items"],"type":"object"}]},"found":{"description":"Whether the page/profile was found and returned follower or following records.","type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"Facebook followers output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"Facebook Followers","tags":["facebook"],"x-mint":{"href":"/api-reference/facebook/followers"},"x-payment-info":{"price":{"currency":"USD","max":"0.132000","min":"0.000000","mode":"dynamic"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"currency":"USD","max":"0.132000","min":"0.001000","minimumUsd":"0.001000","mode":"dynamic","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"currency":"USD","max":"0.132000","min":"0.000000","minimumUsd":null,"mode":"dynamic","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/facebook.group_posts":{"post":{"description":"Fetch recent posts from any public Facebook group by URL: text, author, reactions, and comment counts.\n\n**Price:** \\$1.20 per 1,000 requests (flat per request - same cost regardless of results returned).\n\n**Routing:** 2 independent lanes are available in execution order. A failed attempt uses the next lane only when the request's payment authorizes that lane's price; the normalized schema stays the same.\n\n**Catalog:** [Facebook Group Posts pricing and uptime](https://getanyapi.com/api/facebook/group-posts) - live USD price, lane routing, and measured 30-day uptime. [Every Facebook endpoint](https://getanyapi.com/api/facebook).","operationId":"facebook_group_posts","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"url":"https://www.facebook.com/groups/instantpotcommunity/"},"schema":{"additionalProperties":false,"example":{"url":"https://www.facebook.com/groups/instantpotcommunity/"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"cursor":{"description":"Pagination cursor from a previous response to fetch the next page.","type":"string"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"sort":{"description":"Ordering for the returned posts (e.g. TOP_POSTS).","enum":["TOP_POSTS","RECENT_ACTIVITY","CHRONOLOGICAL","CHRONOLOGICAL_LISTINGS"],"type":"string"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"url":{"description":"The URL of a public Facebook group to fetch posts from (e.g. https://www.facebook.com/groups/instantpotcommunity/).","type":"string"}},"required":["url"],"title":"Facebook Group Posts input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"oneOf":[{"type":"null"},{"additionalProperties":false,"properties":{"nextCursor":{"description":"Opaque cursor for the next page of posts, or null when this lane has no more. Pass it back as cursor to continue.","type":["string","null"]},"posts":{"description":"Populated whenever the provider has data for the entity.","items":{"properties":{"authorId":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"authorName":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"commentCount":{"type":"integer"},"id":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"publishTime":{"description":"Populated whenever the provider has data for the entity.","type":"integer","x-anyapi-must-populate":true},"reactionCount":{"type":"integer"},"text":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"url":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true}},"required":["id","text","url","publishTime","reactionCount","commentCount","authorName","authorId"],"type":"object"},"type":"array","x-anyapi-must-populate":true}},"required":["nextCursor","posts"],"type":"object"}]},"found":{"type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"Facebook Group Posts output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"Facebook Group Posts","tags":["facebook"],"x-mint":{"href":"/api-reference/facebook/group-posts"},"x-payment-info":{"price":{"amount":"0.001200","currency":"USD","mode":"fixed"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"amount":"0.001200","currency":"USD","minimumUsd":"0.001000","mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"amount":"0.001200","currency":"USD","minimumUsd":null,"mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/facebook.marketplace":{"post":{"description":"Search Facebook Marketplace listings by keyword near a location, filter by price, condition, delivery, recency, and availability, and get title, price, location, and image as normalized JSON.\n\n**Price:** \\$1.20 per 1,000 requests (flat per request - same cost regardless of results returned).\n\n**Routing:** 2 independent lanes are available in execution order. A failed attempt uses the next lane only when the request's payment authorizes that lane's price; the normalized schema stays the same.\n\n**Catalog:** [Facebook Marketplace pricing and uptime](https://getanyapi.com/api/facebook/marketplace) - live USD price, lane routing, and measured 30-day uptime. [Every Facebook endpoint](https://getanyapi.com/api/facebook).","operationId":"facebook_marketplace","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"lat":"30.2677","lng":"-97.7475","priceMax":500,"priceMin":100,"query":"bike"},"schema":{"additionalProperties":false,"example":{"lat":"30.2677","lng":"-97.7475","priceMax":500,"priceMin":100,"query":"bike"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"availability":{"description":"Filter by availability: available (default), sold, or all (e.g. sold).","enum":["available","sold","all"],"type":"string"},"condition":{"description":"Only return listings in this condition (e.g. used_good).","enum":["new","used_like_new","used_good","used_fair"],"type":"string"},"cursor":{"description":"Pagination cursor from a previous response to fetch the next page.","type":"string"},"dateListed":{"description":"Only return listings posted within this window (e.g. last_7_days).","enum":["all","last_24_hours","last_7_days","last_30_days"],"type":"string"},"deliveryMethod":{"description":"Only return listings offering this delivery method (e.g. shipping).","enum":["all","local_pickup","shipping"],"type":"string"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"lat":{"description":"Latitude of the search location (e.g. '30.2677').","type":"string"},"lng":{"description":"Longitude of the search location (e.g. '-97.7475').","type":"string"},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"priceMax":{"description":"Maximum listing price in whole currency units, e.g. 500 for $500. Facebook may mix in a few suggested listings outside the range.","minimum":0,"type":"integer"},"priceMin":{"description":"Minimum listing price in whole currency units, e.g. 100 for $100. Facebook may mix in a few suggested listings outside the range.","minimum":0,"type":"integer"},"query":{"description":"Search keyword for Marketplace listings (e.g. 'bike').","type":"string"},"sort":{"description":"Sort order for the returned listings (e.g. price_ascend).","enum":["suggested","distance_ascend","creation_time_descend","price_ascend","price_descend"],"type":"string"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true}},"required":["query","lat","lng"],"title":"Facebook Marketplace input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"oneOf":[{"type":"null"},{"additionalProperties":false,"properties":{"hasNextPage":{"type":"boolean"},"listings":{"items":{"properties":{"categoryId":{"description":"Numeric Facebook Marketplace category id, as a string.","type":"string"},"city":{"description":"City the listing is located in.","type":"string"},"cityPageId":{"description":"Numeric Facebook id of the city page, as a string.","type":"string"},"createdUtc":{"description":"UTC epoch timestamp in seconds (Unix time) the listing was created. Multiply by 1000 for a JS Date in milliseconds.","type":"number"},"deliveryTypes":{"description":"Delivery options the seller offers, e.g. \"IN_PERSON\" or \"SHIPPING\".","items":{"type":"string"},"type":"array"},"id":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"isHidden":{"description":"Whether the listing is hidden.","type":"boolean"},"isLive":{"description":"Whether the listing is currently live.","type":"boolean"},"isPending":{"description":"Whether the listing is marked pending.","type":"boolean"},"isSold":{"type":"boolean"},"listingDateText":{"description":"Human-readable listing age Facebook shows, e.g. \"Listed 2 weeks ago\".","type":"string"},"locationName":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"photoId":{"description":"Numeric Facebook id of the listing's primary photo, as a string.","type":"string"},"photoUrl":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"priceAmount":{"description":"Populated whenever the provider has data for the entity.","type":"number","x-anyapi-must-populate":true},"priceFormatted":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"state":{"description":"State or region the listing is located in.","type":"string"},"title":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"url":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true}},"required":["id","url","title","priceFormatted","priceAmount","locationName","photoUrl","isSold"],"type":"object"},"type":"array"},"nextCursor":{"description":"Opaque cursor for the next page of listings, or null when this lane has no more. Pass it back as cursor to continue.","type":["string","null"]}},"required":["nextCursor","hasNextPage","listings"],"type":"object"}]},"found":{"type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"Facebook Marketplace output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"Facebook Marketplace","tags":["facebook"],"x-mint":{"href":"/api-reference/facebook/marketplace"},"x-payment-info":{"price":{"amount":"0.001200","currency":"USD","mode":"fixed"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"amount":"0.001200","currency":"USD","minimumUsd":"0.001000","mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"amount":"0.001200","currency":"USD","minimumUsd":null,"mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/facebook.marketplace_item":{"post":{"description":"Fetch full details for a single Facebook Marketplace listing by ID or URL (title, price, location, photos, and attributes) as normalized JSON.\n\n**Price:** \\$1.20 per 1,000 requests (flat per request - same cost regardless of results returned).\n\n**Routing:** one lane serves this API today, so a failed attempt has nowhere to fail over to. Payment outcome follows the selected rail's settlement policy.\n\n**Catalog:** [Facebook Marketplace Item pricing and uptime](https://getanyapi.com/api/facebook/marketplace-item) - live USD price, lane routing, and measured 30-day uptime. [Every Facebook endpoint](https://getanyapi.com/api/facebook).","operationId":"facebook_marketplace_item","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"url":"https://www.facebook.com/marketplace/item/1656586118821988/"},"schema":{"additionalProperties":false,"example":{"url":"https://www.facebook.com/marketplace/item/1656586118821988/"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"id":{"description":"Facebook Marketplace item ID.","type":"string"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"url":{"description":"Facebook Marketplace item URL.","type":"string"}},"title":"Facebook Marketplace Item input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"oneOf":[{"type":"null"},{"properties":{"attributes":{"description":"Item specifics Facebook publishes for the listing.","items":{"properties":{"label":{"description":"Display label for the value, e.g. \"Used - Good\".","type":"string"},"name":{"description":"Attribute name, e.g. \"Condition\".","type":"string"},"value":{"description":"Raw attribute value, e.g. \"used_good\".","type":"string"}},"type":"object"},"type":"array"},"categoryId":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"creationTime":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"currency":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"deliveryTypes":{"description":"Delivery options the seller offers, e.g. \"IN_PERSON\" or \"SHIPPING\".","items":{"type":"string"},"type":"array"},"description":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"id":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"isBuyNowEnabled":{"description":"Whether buy-now checkout is enabled on the listing.","type":"boolean"},"isHidden":{"description":"Whether the listing is hidden.","type":"boolean"},"isLive":{"type":"boolean"},"isPending":{"description":"Whether the listing is marked pending.","type":"boolean"},"isShippingOffered":{"description":"Whether the seller offers shipping.","type":"boolean"},"isSold":{"type":"boolean"},"latitude":{"description":"Latitude of the listing's location.","type":"number"},"listingDateText":{"description":"Human-readable listing age Facebook shows, e.g. \"Listed 4 months ago\".","type":"string"},"locationText":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"longitude":{"description":"Longitude of the listing's location.","type":"number"},"messagingEnabled":{"description":"Whether buyers can message the seller about the listing.","type":"boolean"},"photos":{"description":"Photos attached to the listing.","items":{"properties":{"caption":{"description":"Accessibility caption Facebook generated for the photo.","type":"string"},"height":{"description":"Pixel height of the photo.","type":"integer"},"id":{"description":"Numeric Facebook id of the photo, as a string.","type":"string"},"url":{"description":"Image URL of the photo.","type":"string"},"width":{"description":"Pixel width of the photo.","type":"integer"}},"type":"object"},"type":"array"},"priceAmount":{"description":"Populated whenever the provider has data for the entity.","type":"number","x-anyapi-must-populate":true},"priceFormatted":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"shareUrl":{"description":"Canonical shareable Marketplace URL of the listing.","type":"string"},"strikethroughPriceFormatted":{"description":"Previous price shown struck through, formatted for display.","type":"string"},"title":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"url":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true}},"required":["id","url","title","description","creationTime","locationText","priceFormatted","priceAmount","currency","categoryId","isSold","isLive"],"type":"object"}]},"found":{"type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"Facebook Marketplace Item output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"Facebook Marketplace Item","tags":["facebook"],"x-mint":{"href":"/api-reference/facebook/marketplace-item"},"x-payment-info":{"price":{"amount":"0.001200","currency":"USD","mode":"fixed"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"amount":"0.001200","currency":"USD","minimumUsd":"0.001000","mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"amount":"0.001200","currency":"USD","minimumUsd":null,"mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/facebook.marketplace_location_search":{"post":{"description":"Resolve a place name to Facebook Marketplace locations with coordinates and metadata as normalized JSON.\n\n**Price:** \\$1.20 per 1,000 requests (flat per request - same cost regardless of results returned).\n\n**Routing:** 2 independent lanes are available in execution order. A failed attempt uses the next lane only when the request's payment authorizes that lane's price; the normalized schema stays the same.\n\n**Catalog:** [Facebook Marketplace Location Search pricing and uptime](https://getanyapi.com/api/facebook/marketplace-location-search) - live USD price, lane routing, and measured 30-day uptime. [Every Facebook endpoint](https://getanyapi.com/api/facebook).","operationId":"facebook_marketplace_location_search","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"query":"Austin"},"schema":{"additionalProperties":false,"example":{"query":"Austin"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"query":{"description":"Location search query (e.g. a city name).","type":"string"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true}},"required":["query"],"title":"Facebook Marketplace Location Search input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"oneOf":[{"type":"null"},{"additionalProperties":false,"properties":{"locations":{"items":{"properties":{"city":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"latitude":{"description":"Populated whenever the provider has data for the entity.","type":"number","x-anyapi-must-populate":true},"longitude":{"description":"Populated whenever the provider has data for the entity.","type":"number","x-anyapi-must-populate":true},"name":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"pageId":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"postalCode":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"subtitle":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true}},"required":["name","subtitle","pageId","city","postalCode","latitude","longitude"],"type":"object"},"type":"array"}},"required":["locations"],"type":"object"}]},"found":{"type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"Facebook Marketplace Location Search output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"Facebook Marketplace Location Search","tags":["facebook"],"x-mint":{"href":"/api-reference/facebook/marketplace-location-search"},"x-payment-info":{"price":{"amount":"0.001200","currency":"USD","mode":"fixed"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"amount":"0.001200","currency":"USD","minimumUsd":"0.001000","mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"amount":"0.001200","currency":"USD","minimumUsd":null,"mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/facebook.page_contact":{"post":{"description":"Look up a Facebook Page's public contact details (email, phone, website, and address) by page URL or ID.\n\n**Price:** \\$1.20 per 1,000 requests (flat per request - same cost regardless of results returned).\n\n**Routing:** 2 independent lanes are available in execution order. A failed attempt uses the next lane only when the request's payment authorizes that lane's price; the normalized schema stays the same.\n\n**Catalog:** [Facebook Page Contact Info pricing and uptime](https://getanyapi.com/api/facebook/page-contact) - live USD price, lane routing, and measured 30-day uptime. [Every Facebook endpoint](https://getanyapi.com/api/facebook).","operationId":"facebook_page_contact","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"page":"https://www.facebook.com/joesstonecrab"},"schema":{"additionalProperties":false,"example":{"page":"https://www.facebook.com/joesstonecrab"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"language":{"default":"en-US","description":"Locale code for the returned data (e.g. en-US).","type":"string"},"page":{"description":"Facebook Page URL or page ID to look up (e.g. https://www.facebook.com/nasa).","type":"string"},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true}},"required":["page"],"title":"Facebook page contact info input","type":"object","x-aliases":{"url":"page"}}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"oneOf":[{"type":"null"},{"additionalProperties":false,"properties":{"about":{"description":"The page's intro text.","type":"string"},"adStatus":{"description":"Facebook Ad Library status sentence for the page.","type":"string"},"coverPhotoUrl":{"description":"Cover photo image URL of the page.","type":"string"},"createdUtc":{"description":"UTC epoch timestamp in seconds (Unix time) the page was created. Multiply by 1000 for a JS Date in milliseconds.","type":"number"},"id":{"description":"Numeric Facebook id of the page, as a string.","type":"string"},"items":{"description":"Contact record for the requested Facebook Page (one item). Populated whenever the provider has data for the entity.","items":{"properties":{"address":{"description":"The page's public physical address. Empty when the page lists none.","type":"string"},"category":{"description":"The page's primary category (e.g. \"Seafood Restaurant\"). Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"email":{"description":"The page's public contact email. Empty when the page lists none.","type":"string"},"followers":{"description":"The page's follower count.","type":"integer"},"image":{"description":"URL of the page's profile picture, with tracking query params stripped. Empty when the upstream omits it.","type":"string"},"phone":{"description":"The page's public phone number. Empty when the page lists none.","type":"string"},"title":{"description":"The page's public name. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"url":{"description":"Canonical URL of the Facebook Page, with tracking query params stripped. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"website":{"description":"The page's public website URL. Empty when the page lists none.","type":"string"}},"required":["title","url"],"type":"object"},"type":"array","x-anyapi-must-populate":true},"priceRange":{"description":"Price range the page advertises, e.g. \"$$\".","type":"string"},"rating":{"description":"Recommendation summary Facebook shows for the page, e.g. \"94% recommend (14,553 reviews)\".","type":"string"},"services":{"description":"Services the page lists, e.g. dine-in or online booking.","type":"string"}},"required":["items"],"type":"object"}]},"found":{"description":"Whether the page was found and returned contact records.","type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"Facebook page contact info output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"Facebook Page Contact Info","tags":["facebook"],"x-mint":{"href":"/api-reference/facebook/page-contact"},"x-payment-info":{"price":{"amount":"0.001200","currency":"USD","mode":"fixed"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"amount":"0.001200","currency":"USD","minimumUsd":"0.001000","mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"amount":"0.001200","currency":"USD","minimumUsd":null,"mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/facebook.photos":{"post":{"description":"Fetch recent photos posted by any public Facebook page or profile (image URLs, captions, and dimensions) as normalized JSON.\n\n**Price:** \\$1.20 per 1,000 requests (flat per request - same cost regardless of results returned).\n\n**Routing:** 2 independent lanes are available in execution order. A failed attempt uses the next lane only when the request's payment authorizes that lane's price; the normalized schema stays the same.\n\n**Catalog:** [Facebook Page Photos pricing and uptime](https://getanyapi.com/api/facebook/photos) - live USD price, lane routing, and measured 30-day uptime. [Every Facebook endpoint](https://getanyapi.com/api/facebook).","operationId":"facebook_photos","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"url":"https://www.facebook.com/Spurs"},"schema":{"additionalProperties":false,"example":{"url":"https://www.facebook.com/Spurs"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"cursor":{"description":"Pagination cursor from a previous response to fetch the next page.","type":"string"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"url":{"description":"URL of the public Facebook page or profile to fetch photos from (e.g. https://www.facebook.com/Spurs).","type":"string"}},"required":["url"],"title":"Facebook Page Photos input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"oneOf":[{"type":"null"},{"additionalProperties":false,"properties":{"nextCursor":{"description":"Opaque cursor for the next page of photos, or null when this lane has no more. Pass it back as cursor to continue.","type":["string","null"]},"nextPageId":{"type":"string"},"photos":{"description":"Populated whenever the provider has data for the entity.","items":{"properties":{"caption":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"id":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"imageHeight":{"type":"integer"},"imageUrl":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"imageWidth":{"type":"integer"},"photoId":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"thumbnail":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"url":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true}},"required":["id","photoId","caption","url","thumbnail","imageUrl","imageWidth","imageHeight"],"type":"object"},"type":"array","x-anyapi-must-populate":true}},"required":["nextCursor","nextPageId","photos"],"type":"object"}]},"found":{"type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"Facebook Page Photos output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"Facebook Page Photos","tags":["facebook"],"x-mint":{"href":"/api-reference/facebook/photos"},"x-payment-info":{"price":{"amount":"0.001200","currency":"USD","mode":"fixed"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"amount":"0.001200","currency":"USD","minimumUsd":"0.001000","mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"amount":"0.001200","currency":"USD","minimumUsd":null,"mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/facebook.post":{"post":{"description":"Fetch a single Facebook post by URL with its text and engagement counts (likes, comments, shares, views).\n\n**Price:** \\$1.20 per 1,000 requests (flat per request - same cost regardless of results returned).\n\n**Routing:** 2 independent lanes are available in execution order. A failed attempt uses the next lane only when the request's payment authorizes that lane's price; the normalized schema stays the same.\n\n**Catalog:** [Facebook Post pricing and uptime](https://getanyapi.com/api/facebook/post) - live USD price, lane routing, and measured 30-day uptime. [Every Facebook endpoint](https://getanyapi.com/api/facebook).","operationId":"facebook_post","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"url":"https://www.facebook.com/reel/2166091230582141/"},"schema":{"additionalProperties":false,"example":{"url":"https://www.facebook.com/reel/2166091230582141/"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"requireFields":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Name the output fields this request must be able to return, for example `videoId` or `authorId`, and it is served only by a source that returns every one of them. Fields you do not name are still returned whenever the serving source has them. This can raise your price: when the cheapest source cannot return a named field, a dearer source serves, and you are quoted and charged its price. A named field can still be absent on a post that genuinely lacks it. Naming a combination that no single source returns together is refused as invalid input, with no charge.","items":{"enum":["authorId","authorImage","authorName","authorVerified","comments","createdUtc","durationSeconds","image","likes","shares","url","videoId","views"],"type":"string"},"type":"array","uniqueItems":true},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"url":{"description":"Full Facebook post URL.","type":"string"}},"required":["url"],"title":"Facebook post input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"oneOf":[{"type":"null"},{"properties":{"authorId":{"description":"Numeric Facebook id of the page or profile that posted.","type":"string"},"authorImage":{"description":"Profile picture URL of the page or profile that posted.","type":"string"},"authorName":{"description":"Display name of the page or profile that posted.","type":"string"},"authorVerified":{"description":"Whether the posting page or profile carries a Facebook verification badge.","type":"boolean"},"comments":{"type":"integer"},"createdUtc":{"description":"UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds.","type":"number"},"durationSeconds":{"description":"Length of the post's video in seconds, 0 when the post carries no video.","type":"number"},"id":{"description":"Facebook post id. For a reel or video post this is NOT the id in the /reel/ URL; that one is videoId. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"image":{"description":"Preview image or video thumbnail URL for the post.","type":"string"},"likes":{"type":"integer"},"shares":{"type":"integer"},"text":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"url":{"description":"Canonical Facebook URL of the post.","type":"string"},"videoId":{"description":"Facebook video id of the post's reel or video, the id that appears in its /reel/\u003cid\u003e URL. Null when the post carries no video or this lane cannot read it.","type":["string","null"]},"views":{"type":"integer"}},"required":["id","text","likes","comments","shares","views"],"type":"object"}]},"found":{"type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"Facebook post output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"Facebook Post","tags":["facebook"],"x-mint":{"href":"/api-reference/facebook/post"},"x-payment-info":{"price":{"amount":"0.001200","currency":"USD","mode":"fixed"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"amount":"0.001200","currency":"USD","minimumUsd":"0.001000","mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"amount":"0.001200","currency":"USD","minimumUsd":null,"mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/facebook.post_comments":{"post":{"description":"List the comments on a Facebook post by URL with cursor pagination (text, author, reactions, reply count).\n\n**Price:** \\$1.20 per 1,000 requests (flat per request - same cost regardless of results returned).\n\n**Routing:** 2 independent lanes are available in execution order. A failed attempt uses the next lane only when the request's payment authorizes that lane's price; the normalized schema stays the same.\n\n**Catalog:** [Facebook Post Comments pricing and uptime](https://getanyapi.com/api/facebook/post-comments) - live USD price, lane routing, and measured 30-day uptime. [Every Facebook endpoint](https://getanyapi.com/api/facebook).","operationId":"facebook_post_comments","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"url":"https://www.facebook.com/reel/2166091230582141/"},"schema":{"additionalProperties":false,"anyOf":[{"required":["url"]},{"required":["feedbackId"]}],"example":{"url":"https://www.facebook.com/reel/2166091230582141/"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"cursor":{"description":"Pagination cursor from a previous response's nextCursor.","type":"string"},"feedbackId":{"description":"Facebook feedback id for the post (alternative to url).","type":"string"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"url":{"description":"Full Facebook post URL.","type":"string"}},"title":"Facebook post comments input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"description":"Wrapper holding the comments array plus pagination, or null when nothing was found.","oneOf":[{"type":"null"},{"additionalProperties":false,"properties":{"comments":{"description":"Comments on the post. Populated whenever the provider has data for the entity.","items":{"properties":{"author":{"description":"Display name of the comment author. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"authorId":{"description":"Facebook id of the commenter, as a string.","type":"string"},"authorImage":{"description":"Profile picture URL of the commenter.","type":"string"},"createdUtc":{"description":"UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds. Populated whenever the provider has data for the entity.","type":"number","x-anyapi-must-populate":true},"expansionToken":{"description":"Facebook expansion token for paging the comment's replies.","type":"string"},"feedbackId":{"description":"Facebook feedback id of the comment, used to fetch its replies.","type":"string"},"id":{"description":"Comment identifier. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"reactions":{"description":"Number of reactions on the comment.","type":"integer"},"replies":{"description":"Number of replies to the comment.","type":"integer"},"text":{"description":"Comment text content. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true}},"required":["id","text","author","reactions","replies","createdUtc"],"type":"object"},"type":"array","x-anyapi-must-populate":true},"hasNextPage":{"description":"Whether more comments are available after this page.","type":"boolean"},"nextCursor":{"description":"Opaque cursor for the next page of comments, or null when this lane has no more. Pass it back as cursor to continue.","type":["string","null"]}},"required":["comments","nextCursor"],"type":"object"}]},"found":{"description":"True when comments were found; false when the lookup returned nothing.","type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"Facebook post comments output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"Facebook Post Comments","tags":["facebook"],"x-mint":{"href":"/api-reference/facebook/post-comments"},"x-payment-info":{"price":{"amount":"0.001200","currency":"USD","mode":"fixed"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"amount":"0.001200","currency":"USD","minimumUsd":"0.001000","mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"amount":"0.001200","currency":"USD","minimumUsd":null,"mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/facebook.post_transcript":{"post":{"description":"Get the spoken-word transcript of any public Facebook video post by URL as normalized JSON.\n\n**Price:** \\$1.20 per 1,000 requests (flat per request - same cost regardless of results returned).\n\n**Routing:** 2 independent lanes are available in execution order. A failed attempt uses the next lane only when the request's payment authorizes that lane's price; the normalized schema stays the same.\n\n**Catalog:** [Facebook Post Transcript pricing and uptime](https://getanyapi.com/api/facebook/post-transcript) - live USD price, lane routing, and measured 30-day uptime. [Every Facebook endpoint](https://getanyapi.com/api/facebook).","operationId":"facebook_post_transcript","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"url":"https://www.facebook.com/reel/2166091230582141/"},"schema":{"additionalProperties":false,"example":{"url":"https://www.facebook.com/reel/2166091230582141/"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"url":{"description":"The Facebook post or video URL.","type":"string"}},"required":["url"],"title":"Facebook Post Transcript input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"oneOf":[{"type":"null"},{"properties":{"postId":{"description":"Numeric Facebook id of the transcribed post, as a string.","type":"string"},"transcript":{"type":"string"}},"required":["transcript"],"type":"object"}]},"found":{"type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"Facebook Post Transcript output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"Facebook Post Transcript","tags":["facebook"],"x-mint":{"href":"/api-reference/facebook/post-transcript"},"x-payment-info":{"price":{"amount":"0.001200","currency":"USD","mode":"fixed"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"amount":"0.001200","currency":"USD","minimumUsd":"0.001000","mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"amount":"0.001200","currency":"USD","minimumUsd":null,"mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/facebook.profile":{"post":{"description":"Fetch a Facebook page's public profile (likes, followers, category, about) by URL or handle.\n\n**Price:** \\$1.20 per 1,000 requests (flat per request - same cost regardless of results returned).\n\n**Routing:** 2 independent lanes are available in execution order. A failed attempt uses the next lane only when the request's payment authorizes that lane's price; the normalized schema stays the same.\n\n**Catalog:** [Facebook Profile pricing and uptime](https://getanyapi.com/api/facebook/profile) - live USD price, lane routing, and measured 30-day uptime. [Every Facebook endpoint](https://getanyapi.com/api/facebook).","operationId":"facebook_profile","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"url":"https://www.facebook.com/nike"},"schema":{"additionalProperties":false,"anyOf":[{"required":["url"]},{"required":["handle"]}],"example":{"url":"https://www.facebook.com/nike"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"handle":{"description":"Facebook page handle/username.","type":"string"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"url":{"description":"Full Facebook page URL.","type":"string"}},"title":"Facebook profile input","type":"object","x-aliases":{"username":"handle"}}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"oneOf":[{"type":"null"},{"properties":{"about":{"type":"string"},"avatarUrl":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"category":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"coverPhotoUrl":{"description":"Cover photo image URL of the page or profile.","type":"string"},"createdUtc":{"description":"UTC epoch timestamp in seconds (Unix time) the page was created. Multiply by 1000 for a JS Date in milliseconds.","type":"number"},"followers":{"type":"integer"},"id":{"description":"Numeric Facebook id of the page or profile.","type":"string"},"likes":{"type":"integer"},"name":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"pageActive":{"description":"Whether the page is an active business page.","type":"boolean"},"phone":{"description":"Public phone number listed on the page.","type":"string"},"talkingAboutCount":{"description":"Number of people talking about the page.","type":"integer"},"url":{"description":"Canonical Facebook URL of the page or profile.","type":"string"},"website":{"description":"Website listed on the page.","type":"string"}},"required":["name","category","likes","followers","about","avatarUrl"],"type":"object"}]},"found":{"type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"Facebook profile output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"Facebook Profile","tags":["facebook"],"x-mint":{"href":"/api-reference/facebook/profile"},"x-payment-info":{"price":{"amount":"0.001200","currency":"USD","mode":"fixed"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"amount":"0.001200","currency":"USD","minimumUsd":"0.001000","mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"amount":"0.001200","currency":"USD","minimumUsd":null,"mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/facebook.profile_events":{"post":{"description":"List upcoming and past events hosted by any public Facebook page by URL (name, schedule, venue, and host) as normalized JSON.\n\n**Price:** \\$1.20 per 1,000 requests (flat per request - same cost regardless of results returned).\n\n**Routing:** 2 independent lanes are available in execution order. A failed attempt uses the next lane only when the request's payment authorizes that lane's price; the normalized schema stays the same.\n\n**Catalog:** [Facebook Page Events pricing and uptime](https://getanyapi.com/api/facebook/profile-events) - live USD price, lane routing, and measured 30-day uptime. [Every Facebook endpoint](https://getanyapi.com/api/facebook).","operationId":"facebook_profile_events","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"url":"https://www.facebook.com/brickyardoldtown"},"schema":{"additionalProperties":false,"example":{"url":"https://www.facebook.com/brickyardoldtown"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"cursor":{"description":"Pagination cursor from a previous response.","type":"string"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"url":{"description":"The Facebook page URL.","type":"string"}},"required":["url"],"title":"Facebook Page Events input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"oneOf":[{"type":"null"},{"additionalProperties":false,"properties":{"events":{"description":"Populated whenever the provider has data for the entity.","items":{"properties":{"city":{"type":"string"},"creatorName":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"dayTimeSentence":{"type":"string"},"id":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"isCanceled":{"type":"boolean"},"isOnline":{"type":"boolean"},"isPast":{"type":"boolean"},"name":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"placeName":{"type":"string"},"startTimestamp":{"type":"integer"},"url":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true}},"required":["id","name","url","dayTimeSentence","startTimestamp","placeName","city","creatorName","isOnline","isPast","isCanceled"],"type":"object"},"type":"array","x-anyapi-must-populate":true},"hasNextPage":{"type":"boolean"},"nextCursor":{"description":"Opaque cursor for the next page of events, or null when this lane has no more. Pass it back as cursor to continue.","type":["string","null"]},"totalCount":{"type":"integer"}},"required":["nextCursor","hasNextPage","totalCount","events"],"type":"object"}]},"found":{"type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"Facebook Page Events output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"Facebook Page Events","tags":["facebook"],"x-mint":{"href":"/api-reference/facebook/profile-events"},"x-payment-info":{"price":{"amount":"0.001200","currency":"USD","mode":"fixed"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"amount":"0.001200","currency":"USD","minimumUsd":"0.001000","mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"amount":"0.001200","currency":"USD","minimumUsd":null,"mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/facebook.profile_posts":{"post":{"description":"List a Facebook page's recent posts by URL or page id with cursor pagination (text, author, publication time, permalink).\n\n**Price:** \\$1.20 per 1,000 requests (flat per request - same cost regardless of results returned).\n\n**Routing:** 2 independent lanes are available in execution order. A failed attempt uses the next lane only when the request's payment authorizes that lane's price; the normalized schema stays the same.\n\n**Catalog:** [Facebook Profile Posts pricing and uptime](https://getanyapi.com/api/facebook/profile-posts) - live USD price, lane routing, and measured 30-day uptime. [Every Facebook endpoint](https://getanyapi.com/api/facebook).","operationId":"facebook_profile_posts","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"url":"https://www.facebook.com/nike"},"schema":{"additionalProperties":false,"anyOf":[{"required":["url"]},{"required":["pageId"]}],"example":{"url":"https://www.facebook.com/nike"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"cursor":{"description":"Pagination cursor from a previous response.","type":"string"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"pageId":{"description":"Facebook page id.","type":"string"},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"url":{"description":"Full Facebook page/profile URL.","type":"string"}},"title":"Facebook profile posts input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"oneOf":[{"type":"null"},{"additionalProperties":false,"properties":{"nextCursor":{"description":"Opaque cursor for the next page of posts, or null when this lane has no more. Pass it back as cursor to continue.","type":["string","null"]},"posts":{"description":"Populated whenever the provider has data for the entity.","items":{"properties":{"author":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"authorId":{"description":"Numeric Facebook id of the page or profile that posted, as a string.","type":"string"},"comments":{"description":"Comment count on the post.","type":"integer"},"createdUtc":{"description":"UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds. Populated whenever the provider has data for the entity.","type":"number","x-anyapi-must-populate":true},"id":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"image":{"description":"Preview image or video thumbnail URL for the post.","type":"string"},"likes":{"description":"Total reaction count on the post.","type":"integer"},"media":{"description":"Photo, video, and GIF attachments on the post. Empty when the post has none.","items":{"properties":{"height":{"description":"Pixel height of the media item, when the lane reports it.","type":"integer"},"type":{"description":"One of photo, video, or gif.","type":"string"},"url":{"description":"Image URL. For a video or GIF this is the poster/thumbnail frame.","format":"uri","type":"string"},"videoUrl":{"description":"Playable video file URL. Present only for video and gif items.","format":"uri","type":"string"},"width":{"description":"Pixel width of the media item, when the lane reports it.","type":"integer"}},"required":["type","url"],"type":"object"},"type":"array"},"text":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"url":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true}},"required":["id","text","url","author","createdUtc"],"type":"object"},"type":"array","x-anyapi-must-populate":true}},"required":["posts","nextCursor"],"type":"object"}]},"found":{"type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"Facebook profile posts output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"Facebook Profile Posts","tags":["facebook"],"x-mint":{"href":"/api-reference/facebook/profile-posts"},"x-payment-info":{"price":{"amount":"0.001200","currency":"USD","mode":"fixed"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"amount":"0.001200","currency":"USD","minimumUsd":"0.001000","mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"amount":"0.001200","currency":"USD","minimumUsd":null,"mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/facebook.profile_reels":{"post":{"description":"List a Facebook page's reels by URL with cursor pagination (caption, view count, permalink, thumbnail).\n\n**Price:** \\$1.20 per 1,000 requests (flat per request - same cost regardless of results returned).\n\n**Routing:** 2 independent lanes are available in execution order. A failed attempt uses the next lane only when the request's payment authorizes that lane's price; the normalized schema stays the same.\n\n**Catalog:** [Facebook Profile Reels pricing and uptime](https://getanyapi.com/api/facebook/profile-reels) - live USD price, lane routing, and measured 30-day uptime. [Every Facebook endpoint](https://getanyapi.com/api/facebook).","operationId":"facebook_profile_reels","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"url":"https://www.facebook.com/nike"},"schema":{"additionalProperties":false,"example":{"url":"https://www.facebook.com/nike"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"cursor":{"description":"Pagination cursor from a previous response.","type":"string"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"url":{"description":"Full Facebook page/profile URL.","type":"string"}},"required":["url"],"title":"Facebook profile reels input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"description":"Wrapper holding the reels array, or null when nothing was found.","oneOf":[{"type":"null"},{"additionalProperties":false,"properties":{"nextCursor":{"description":"Opaque cursor for the next page of reels, or null when this lane has no more. Pass it back as cursor to continue.","type":["string","null"]},"reels":{"description":"The profile's reels. Populated whenever the provider has data for the entity.","items":{"properties":{"authorId":{"description":"Numeric Facebook id of the page or profile that posted the reel, as a string.","type":"string"},"authorImage":{"description":"Profile picture URL of the page or profile that posted the reel.","type":"string"},"authorName":{"description":"Display name of the page or profile that posted the reel.","type":"string"},"authorVerified":{"description":"Whether the posting page or profile carries a Facebook verification badge.","type":"boolean"},"caption":{"description":"Reel caption text. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"createdUtc":{"description":"UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds. Populated whenever the provider has data for the entity.","type":"number","x-anyapi-must-populate":true},"durationSeconds":{"description":"Length of the reel in seconds.","type":"number"},"feedbackId":{"description":"Facebook feedback id of the reel, used to fetch its comments.","type":"string"},"id":{"description":"Reel identifier. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"thumbnail":{"description":"URL of the reel thumbnail image. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"url":{"description":"Canonical URL of the reel. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"views":{"description":"Number of views on the reel.","type":"integer"}},"required":["id","url","caption","views","thumbnail","createdUtc"],"type":"object"},"type":"array","x-anyapi-must-populate":true}},"required":["reels"],"type":"object"}]},"found":{"description":"True when reels were found; false when the lookup returned nothing.","type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"Facebook profile reels output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"Facebook Profile Reels","tags":["facebook"],"x-mint":{"href":"/api-reference/facebook/profile-reels"},"x-payment-info":{"price":{"amount":"0.001200","currency":"USD","mode":"fixed"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"amount":"0.001200","currency":"USD","minimumUsd":"0.001000","mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"amount":"0.001200","currency":"USD","minimumUsd":null,"mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/facebook.search_companies":{"post":{"description":"Search the Meta Ad Library for advertisers by keyword and get matching pages: page ID, category, verification, follower counts, and linked Instagram.\n\n**Price:** \\$1.20 per 1,000 requests (flat per request - same cost regardless of results returned).\n\n**Routing:** one lane serves this API today, so a failed attempt has nowhere to fail over to. Payment outcome follows the selected rail's settlement policy.\n\n**Catalog:** [Facebook Company Search pricing and uptime](https://getanyapi.com/api/facebook/search-companies) - live USD price, lane routing, and measured 30-day uptime. [Every Facebook endpoint](https://getanyapi.com/api/facebook).","operationId":"facebook_search_companies","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"query":"nike"},"schema":{"additionalProperties":false,"example":{"query":"nike"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"query":{"description":"Keyword to search advertiser pages for (e.g. \"nike\").","type":"string"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true}},"required":["query"],"title":"Facebook company search input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"oneOf":[{"type":"null"},{"additionalProperties":false,"properties":{"companies":{"items":{"properties":{"category":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"country":{"type":"string"},"entityType":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"igFollowers":{"description":"Populated whenever the provider has data for the entity.","type":"integer","x-anyapi-must-populate":true},"igUsername":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"igVerified":{"description":"Whether the page's linked Instagram account is verified.","type":"boolean"},"imageUrl":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"likes":{"type":"integer"},"name":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"pageAlias":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"pageDeleted":{"description":"Whether the Facebook Page has been deleted.","type":"boolean"},"pageId":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"verification":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true}},"required":["pageId","name","category","imageUrl","likes","verification","country","entityType","igUsername","igFollowers","pageAlias"],"type":"object"},"type":"array"}},"required":["companies"],"type":"object"}]},"found":{"type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"Facebook company search output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"Facebook Company Search","tags":["facebook"],"x-mint":{"href":"/api-reference/facebook/search-companies"},"x-payment-info":{"price":{"amount":"0.001200","currency":"USD","mode":"fixed"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"amount":"0.001200","currency":"USD","minimumUsd":"0.001000","mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"amount":"0.001200","currency":"USD","minimumUsd":null,"mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/facebook.search_pages":{"post":{"description":"Search Facebook Pages by keyword, optionally narrowed to a location, and get structured page profiles (name, category, followers, contact details).\n\n**Price:** billed per result - \\$1.10 per 1,000 requests base + \\$12.10 per 1,000 results, capped at \\$123.00 per 1,000 requests.\n\n**Routing:** one lane serves this API today, so a failed attempt has nowhere to fail over to. Payment outcome follows the selected rail's settlement policy.\n\n**Catalog:** [Facebook Page Search pricing and uptime](https://getanyapi.com/api/facebook/search-pages) - live USD price, lane routing, and measured 30-day uptime. [Every Facebook endpoint](https://getanyapi.com/api/facebook).","operationId":"facebook_search_pages","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"limit":3,"query":"nike"},"schema":{"additionalProperties":false,"example":{"limit":3,"query":"nike"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"limit":{"description":"Maximum number of results to return (1-10, default 10). You are billed per result returned, so a lower limit costs less.","maximum":10,"minimum":1,"type":"integer"},"location":{"description":"Optional free-text location to narrow the search: a city, province, or country (e.g. 'Berlin').","type":"string"},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"query":{"description":"Keyword to search Facebook Pages for (e.g. 'coffee roasters').","type":"string"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true}},"required":["query"],"title":"Facebook page search input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"oneOf":[{"type":"null"},{"additionalProperties":false,"properties":{"items":{"description":"Matching Facebook Page records for the query. Populated whenever the provider has data for the entity.","items":{"properties":{"about":{"description":"The page's intro text.","type":"string"},"adStatus":{"description":"Facebook Ad Library status sentence for the page, e.g. whether it is currently running ads.","type":"string"},"categories":{"description":"Categories Facebook lists the page under.","items":{"type":"string"},"type":"array"},"category":{"description":"The page's primary category (e.g. \"Sportswear Store\"). Empty when the upstream omits it.","type":"string"},"coverPhotoUrl":{"description":"Cover photo image URL of the page.","type":"string"},"createdUtc":{"description":"UTC epoch timestamp in seconds (Unix time) the page was created. Multiply by 1000 for a JS Date in milliseconds.","type":"number"},"followers":{"description":"The page's follower count.","type":"integer"},"id":{"description":"The page's numeric Facebook ID, as a string. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"image":{"description":"URL of the page's profile picture, with tracking query params stripped. Empty when the upstream omits it.","type":"string"},"likes":{"description":"The page's like count.","type":"integer"},"owner":{"description":"Confirmed owner of the page, when Facebook publishes one.","type":"string"},"pageAlias":{"description":"The page's vanity URL alias, e.g. \"nikesportswear\".","type":"string"},"phone":{"description":"The page's public phone number. Empty when the upstream omits it.","type":"string"},"title":{"description":"The page's public name. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"url":{"description":"Canonical URL of the Facebook Page, with tracking query params stripped. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"website":{"description":"The page's public website URL. Empty when the upstream omits it.","type":"string"}},"required":["id","title","url"],"type":"object"},"type":"array","x-anyapi-must-populate":true}},"required":["items"],"type":"object"}]},"found":{"description":"Whether any matching pages were returned for the query.","type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"Facebook page search output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"Facebook Page Search","tags":["facebook"],"x-mint":{"href":"/api-reference/facebook/search-pages"},"x-payment-info":{"price":{"currency":"USD","max":"0.123000","min":"0.001100","mode":"dynamic"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"currency":"USD","max":"0.123000","min":"0.001100","minimumUsd":"0.001000","mode":"dynamic","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"currency":"USD","max":"0.123000","min":"0.001100","minimumUsd":null,"mode":"dynamic","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/facebook.search_posts":{"post":{"description":"Search public Facebook posts by keyword, optionally filtered by location, and get structured post records (text, author, engagement).\n\n**Price:** billed per result - \\$0.06 per 1,000 requests base + \\$3.30 per 1,000 results, capped at \\$66.10 per 1,000 requests.\n\n**Routing:** one lane serves this API today, so a failed attempt has nowhere to fail over to. Payment outcome follows the selected rail's settlement policy.\n\n**Catalog:** [Facebook Post Search pricing and uptime](https://getanyapi.com/api/facebook/search-posts) - live USD price, lane routing, and measured 30-day uptime. [Every Facebook endpoint](https://getanyapi.com/api/facebook).","operationId":"facebook_search_posts","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"limit":3,"query":"nike"},"schema":{"additionalProperties":false,"example":{"limit":3,"query":"nike"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"endDate":{"description":"Only return posts published on or before this date, format YYYY-MM-DD (e.g. 2024-12-31).","type":"string"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"limit":{"description":"Maximum number of results to return (1-20, default 20). You are billed per result returned, so a lower limit costs less.","maximum":20,"minimum":1,"type":"integer"},"location":{"description":"Optional location to narrow results; include both city and country for best matches (e.g. 'Paris, France').","type":"string"},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"query":{"description":"Keyword or phrase to search Facebook posts for (e.g. 'product launch').","type":"string"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"startDate":{"description":"Only return posts published on or after this date, format YYYY-MM-DD (e.g. 2024-01-01).","type":"string"}},"required":["query"],"title":"Facebook post search input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"oneOf":[{"type":"null"},{"additionalProperties":false,"properties":{"albumPreview":{"description":"Preview of the photos attached to the post.","items":{"properties":{"id":{"description":"Numeric Facebook id of the photo, as a string.","type":"string"},"image":{"description":"Image URL of the photo.","type":"string"},"type":{"description":"Kind of attachment, e.g. \"photo\".","type":"string"},"url":{"description":"Canonical Facebook URL of the photo.","type":"string"}},"type":"object"},"type":"array"},"authorId":{"description":"Numeric Facebook id of the page or profile that posted, as a string.","type":"string"},"authorImage":{"description":"Profile picture URL of the page or profile that posted.","type":"string"},"imagesCount":{"description":"Number of images attached to the post.","type":"integer"},"items":{"description":"Matching public Facebook post records for the query. Populated whenever the provider has data for the entity.","items":{"properties":{"authorName":{"description":"Display name of the post's author. Empty when the upstream omits it.","type":"string"},"authorUrl":{"description":"Canonical profile URL of the post's author, with tracking query params stripped. Empty when the upstream omits it.","type":"string"},"commentCount":{"description":"Total number of comments on the post.","type":"integer"},"createdUtc":{"description":"UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds.","type":"number"},"id":{"description":"The post's numeric Facebook ID, as a string. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"image":{"description":"URL of the post's primary image, with tracking query params stripped. Empty for text-only or video posts.","type":"string"},"reactionCount":{"description":"Total number of reactions on the post.","type":"integer"},"shareCount":{"description":"Total number of shares/reshares of the post.","type":"integer"},"text":{"description":"The post's text/message. Empty for media-only posts with no caption.","type":"string"},"url":{"description":"Canonical URL of the post, with tracking query params stripped. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true}},"required":["id","url","text","createdUtc"],"type":"object"},"type":"array","x-anyapi-must-populate":true},"reactions":{"description":"Reaction counts on the post, broken down by reaction type.","properties":{"angry":{"description":"Angry reactions.","type":"integer"},"care":{"description":"Care reactions.","type":"integer"},"haha":{"description":"Haha reactions.","type":"integer"},"like":{"description":"Like reactions.","type":"integer"},"love":{"description":"Love reactions.","type":"integer"},"sad":{"description":"Sad reactions.","type":"integer"},"wow":{"description":"Wow reactions.","type":"integer"}},"type":"object"},"type":{"description":"Kind of record Facebook returned, e.g. \"post\".","type":"string"}},"required":["items"],"type":"object"}]},"found":{"description":"Whether any matching posts were returned for the query.","type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"Facebook post search output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"Facebook Post Search","tags":["facebook"],"x-mint":{"href":"/api-reference/facebook/search-posts"},"x-payment-info":{"price":{"currency":"USD","max":"0.066100","min":"0.000060","mode":"dynamic"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"currency":"USD","max":"0.066100","min":"0.001000","minimumUsd":"0.001000","mode":"dynamic","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"currency":"USD","max":"0.066100","min":"0.000060","minimumUsd":null,"mode":"dynamic","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/fiverr.search":{"post":{"description":"Extract Fiverr gig listings from any search or category URL: titles, sellers, ratings, and pricing as structured JSON.\n\n**Price:** billed per result - \\$1.65 per 1,000 results, capped at \\$33.00 per 1,000 requests.\n\n**Routing:** one lane serves this API today, so a failed attempt has nowhere to fail over to. Payment outcome follows the selected rail's settlement policy.\n\n**Catalog:** [Fiverr Gig Search pricing and uptime](https://getanyapi.com/api/fiverr/search) - live USD price, lane routing, and measured 30-day uptime. [Every Fiverr endpoint](https://getanyapi.com/api/fiverr).","operationId":"fiverr_search","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"limit":3,"url":"https://www.fiverr.com/search/gigs?query=logo%20design"},"schema":{"additionalProperties":false,"example":{"limit":3,"url":"https://www.fiverr.com/search/gigs?query=logo%20design"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"limit":{"description":"Maximum number of results to return (1-20, default 20). You are billed per result returned, so a lower limit costs less.","maximum":20,"minimum":1,"type":"integer"},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"url":{"description":"Fiverr search or category page URL to extract gigs from.","type":"string"}},"required":["url"],"title":"Fiverr gig search input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"oneOf":[{"type":"null"},{"additionalProperties":false,"properties":{"items":{"description":"Gig records from the search or category URL. Operators may return additional fields beyond those documented here. Populated whenever the provider has data for the entity.","items":{"properties":{"categoryId":{"description":"Fiverr's numeric top-level category id for the gig, as a string.","type":"string"},"duration":{"description":"Delivery time in days.","type":"integer"},"gigId":{"description":"Stable Fiverr gig identifier. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"gigUrl":{"description":"Canonical Fiverr URL for the gig. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"image":{"description":"Primary gig thumbnail URL.","type":"string"},"price":{"description":"Starting price in USD.","type":"number"},"sellerCountry":{"description":"Seller country code.","type":"string"},"sellerDisplayName":{"description":"Seller display name.","type":"string"},"sellerLevel":{"description":"Fiverr seller level.","type":"string"},"sellerName":{"description":"Seller username.","type":"string"},"sellerRatingCount":{"description":"Number of seller ratings.","type":"integer"},"sellerRatingScore":{"description":"Average seller rating.","type":"number"},"sellerUrl":{"description":"Seller profile URL.","type":"string"},"title":{"description":"Gig headline. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true}},"required":["gigId","title","gigUrl"],"type":"object"},"type":"array","x-anyapi-must-populate":true}},"required":["items"],"type":"object"}]},"found":{"type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"Fiverr gig search output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"Fiverr Gig Search","tags":["fiverr"],"x-mint":{"href":"/api-reference/fiverr/search"},"x-payment-info":{"price":{"currency":"USD","max":"0.033000","min":"0.000000","mode":"dynamic"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"currency":"USD","max":"0.033000","min":"0.001000","minimumUsd":"0.001000","mode":"dynamic","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"currency":"USD","max":"0.033000","min":"0.000000","minimumUsd":null,"mode":"dynamic","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/g2.reviews":{"post":{"description":"Pull G2 software reviews for any product: star rating, what reviewers like and dislike, problems solved, market segment, and G2's rating rubric as clean JSON.\n\n**Price:** billed per result - \\$0.06 per 1,000 requests base + \\$0.05 per 1,000 results, capped at \\$4.46 per 1,000 requests.\n\n**Routing:** 2 independent lanes are available in execution order. A failed attempt uses the next lane only when the request's payment authorizes that lane's price; the normalized schema stays the same.\n\n**Catalog:** [G2 Reviews pricing and uptime](https://getanyapi.com/api/g2/reviews) - live USD price, lane routing, and measured 30-day uptime. [Every G2 endpoint](https://getanyapi.com/api/g2).","operationId":"g2_reviews","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"limit":50,"product":"hubspot-marketing-hub","sortBy":"recent"},"schema":{"additionalProperties":false,"example":{"limit":50,"product":"hubspot-marketing-hub","sortBy":"recent"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"limit":{"default":50,"description":"Maximum number of reviews to return. The minimum is 50 because G2 review sources will not serve a smaller page. You are billed per returned result, so a lower limit costs less.","maximum":100,"minimum":50,"type":"integer"},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"product":{"description":"G2 product slug, for example hubspot-marketing-hub. A full G2 product URL is also accepted and reduced to its slug.","maxLength":200,"minLength":2,"type":"string"},"requireFields":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Name the output fields this request must be able to return, for example `productSlug`, and it is served only by a source that returns every one of them. Fields you do not name are still returned whenever the serving source has them. This can raise your price: when the cheapest source cannot return a named field, a dearer source serves, and you are quoted and charged its price. A named field can still be absent on a review that genuinely lacks it. Naming a combination that no single source returns together is refused as invalid input, with no charge.","items":{"enum":["authorCountry","helpfulVotes","productId","productSlug","ratings","responseType","reviewSource","sourceType","status","switchedFrom"],"type":"string"},"type":"array","uniqueItems":true},"sortBy":{"default":"recent","description":"Sort order for the returned reviews: newest first, most helpful first, highest or lowest rated first, or G2's own default ordering.","enum":["recent","helpful","highest","lowest","default"],"type":"string"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true}},"required":["product"],"title":"G2 Reviews input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"oneOf":[{"type":"null"},{"additionalProperties":false,"properties":{"items":{"description":"G2 reviews for the requested product. Populated whenever the provider has data for the entity.","items":{"properties":{"author":{"description":"Reviewer's display name. G2 abbreviates most reviewers, for example Michael D. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"authorCountry":{"description":"Country the reviewer is based in.","type":"string"},"createdUtc":{"description":"UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds. Populated whenever the provider has data for the entity.","type":"number","x-anyapi-must-populate":true},"dislikes":{"description":"The reviewer's answer to G2's question about what they dislike. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"helpfulVotes":{"description":"Number of readers who marked the review helpful.","type":"integer"},"id":{"description":"G2 identifier for the review. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"likes":{"description":"The reviewer's answer to G2's question about what they like best. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"marketSegment":{"description":"G2 market segment of the reviewer's company: Small-Business, Mid-Market, or Enterprise. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"nps":{"description":"Likelihood the reviewer would recommend the product, on a 0 to 10 scale. Populated whenever the provider has data for the entity.","type":"integer","x-anyapi-must-populate":true},"problemsSolved":{"description":"The reviewer's answer to G2's question about what problems the product solves and how that benefits them. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"productId":{"description":"G2's numeric product id, as a string.","type":"string"},"productName":{"description":"Name of the product the review is about. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"productSlug":{"description":"G2 slug of the product the review is about.","type":"string"},"rating":{"description":"Star rating the reviewer gave, on a 0.5 to 5 scale in half-star steps. Populated whenever the provider has data for the entity.","type":"number","x-anyapi-must-populate":true},"ratings":{"description":"G2's rating rubric, each on a 0 to 10 scale. A reviewer may skip any of them, and the last two are asked far less often.","properties":{"easeOfAdmin":{"description":"Rating for how easy the product is to administer.","type":"integer"},"easeOfDoingBusinessWith":{"description":"Rating for how easy the vendor is to do business with.","type":"integer"},"easeOfSetup":{"description":"Rating for how easy the product is to set up.","type":"integer"},"easeOfUse":{"description":"Rating for how easy the product is to use.","type":"integer"},"meetsRequirements":{"description":"Rating for how well the product meets the reviewer's requirements.","type":"integer"},"qualityOfSupport":{"description":"Rating for the quality of the vendor's support.","type":"integer"}},"type":"object"},"responseType":{"description":"Form the review was submitted in, for example text or video.","type":"string"},"reviewSource":{"description":"How G2 collected the review, for example organic or vendor.","type":"string"},"sourceType":{"description":"How G2 collected the review (e.g. vendor, organic).","type":"string"},"status":{"description":"Moderation status of the review on G2 (e.g. approved).","type":"string"},"switchedFrom":{"description":"Whether the reviewer switched from another product. Null when G2 does not record an answer.","type":["boolean","null"]},"title":{"description":"Headline the reviewer gave the review. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"url":{"description":"Canonical G2 URL for the review. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true}},"required":["id","rating"],"type":"object"},"type":"array","x-anyapi-must-populate":true}},"required":["items"],"type":"object"}]},"found":{"type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"G2 Reviews output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"G2 Reviews","tags":["g2"],"x-mint":{"href":"/api-reference/g2/reviews"},"x-payment-info":{"price":{"currency":"USD","max":"0.004460","min":"0.000060","mode":"dynamic"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"currency":"USD","max":"0.004460","min":"0.001000","minimumUsd":"0.001000","mode":"dynamic","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"currency":"USD","max":"0.004460","min":"0.000060","minimumUsd":null,"mode":"dynamic","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/gemini.search":{"post":{"description":"Ask Gemini a web-grounded question and receive an answer with source citations.\n\n**Price:** \\$4.80 per 1,000 requests (flat per request - same cost regardless of results returned).\n\n**Routing:** one lane serves this API today, so a failed attempt has nowhere to fail over to. Payment outcome follows the selected rail's settlement policy.\n\n**Catalog:** [Gemini Search pricing and uptime](https://getanyapi.com/api/gemini/search) - live USD price, lane routing, and measured 30-day uptime. [Every Gemini endpoint](https://getanyapi.com/api/gemini).","operationId":"gemini_search","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"prompt":"What is AnyAPI at getanyapi.com, and what does it offer?"},"schema":{"additionalProperties":false,"example":{"prompt":"What is AnyAPI at getanyapi.com, and what does it offer?"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"prompt":{"description":"Question or research prompt for Gemini to answer using web search.","maxLength":2000,"minLength":1,"type":"string"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true}},"required":["prompt"],"title":"Gemini Search input","type":"object","x-aliases":{"query":"prompt"}}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"description":"The normalized answer and citations, or null when no answer was found.","oneOf":[{"type":"null"},{"additionalProperties":false,"properties":{"answer":{"description":"The web-grounded answer as text. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"answerMarkdown":{"description":"The answer in Markdown when the engine returns a Markdown rendering, otherwise the same text as answer. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"citations":{"description":"Sources cited by the answer. Populated whenever the provider has data for the entity.","items":{"properties":{"title":{"description":"Source page title when supplied by the search engine.","type":"string"},"url":{"description":"Source page URL.","format":"uri","type":"string"}},"required":["title","url"],"type":"object"},"type":"array","x-anyapi-must-populate":true},"prompt":{"description":"The prompt answered by Gemini.","type":"string"}},"required":["prompt","answer","answerMarkdown","citations"],"type":"object"}]},"found":{"description":"Whether Gemini returned a web-grounded answer.","type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"Gemini Search output","type":"object","x-anyapi-empty-fails-over":true},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"Gemini Search","tags":["gemini"],"x-mint":{"href":"/api-reference/gemini/search"},"x-payment-info":{"price":{"amount":"0.004800","currency":"USD","mode":"fixed"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"amount":"0.004800","currency":"USD","minimumUsd":"0.001000","mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"amount":"0.004800","currency":"USD","minimumUsd":null,"mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/github.repository":{"post":{"description":"Fetch a GitHub repository's metadata by URL (stars, forks, language, topics, license, and timestamps).\n\n**Price:** \\$1.20 per 1,000 requests (flat per request - same cost regardless of results returned).\n\n**Routing:** one lane serves this API today, so a failed attempt has nowhere to fail over to. Payment outcome follows the selected rail's settlement policy.\n\n**Catalog:** [GitHub Repository pricing and uptime](https://getanyapi.com/api/github/repository) - live USD price, lane routing, and measured 30-day uptime. [Every Github endpoint](https://getanyapi.com/api/github).","operationId":"github_repository","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"url":"https://github.com/facebook/react"},"schema":{"additionalProperties":false,"example":{"url":"https://github.com/facebook/react"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"url":{"description":"GitHub repository URL (e.g. https://github.com/facebook/react).","type":"string"}},"required":["url"],"title":"GitHub repository input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"description":"The repository record, or null when not found.","oneOf":[{"type":"null"},{"properties":{"archived":{"description":"Whether the repository is archived.","type":"boolean"},"avatarUrl":{"description":"Avatar image URL of the repository owner.","type":"string"},"createdUtc":{"description":"UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds. Populated whenever the provider has data for the entity.","type":"number","x-anyapi-must-populate":true},"defaultBranch":{"description":"Name of the default branch. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"description":{"description":"Short repository description, or null if none.","type":["string","null"]},"fork":{"description":"Whether the repository is a fork.","type":"boolean"},"forks":{"description":"Number of forks.","type":"integer"},"fullName":{"description":"Full repository name in owner/name form. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"homepage":{"description":"Project homepage URL, or null if none.","type":["string","null"]},"id":{"description":"GitHub's numeric repository id, as a string.","type":"string"},"language":{"description":"Primary programming language, or null if undetected.","type":["string","null"]},"license":{"description":"License name, or null if unlicensed.","type":["string","null"]},"name":{"description":"Repository short name (without owner). Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"openIssues":{"description":"Count of open issues and pull requests.","type":"integer"},"owner":{"description":"Login of the repository owner (user or organization). Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"private":{"description":"Whether the repository is private.","type":"boolean"},"profileUrl":{"description":"GitHub profile URL of the repository owner.","type":"string"},"pushedAt":{"description":"Last push timestamp (ISO 8601). Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"size":{"description":"Repository size in kilobytes as reported by GitHub.","type":"integer"},"stars":{"description":"Number of stargazers.","type":"integer"},"topics":{"description":"Repository topic tags.","items":{"type":"string"},"type":"array"},"updatedAt":{"description":"Last metadata update timestamp (ISO 8601). Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"url":{"description":"Canonical URL of the repository. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"watchers":{"description":"Number of watchers.","type":"integer"}},"required":["name","fullName","url"],"type":"object"}]},"found":{"description":"Whether a repository was found for the requested URL.","type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"GitHub repository output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"GitHub Repository","tags":["github"],"x-mint":{"href":"/api-reference/github/repository"},"x-payment-info":{"price":{"amount":"0.001200","currency":"USD","mode":"fixed"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"amount":"0.001200","currency":"USD","minimumUsd":"0.001000","mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"amount":"0.001200","currency":"USD","minimumUsd":null,"mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/github.trending_developers":{"post":{"description":"List trending GitHub developers (rank, username, name, avatar, and their most popular repository), optionally filtered by programming language and time range.\n\n**Price:** \\$1.20 per 1,000 requests (flat per request - same cost regardless of results returned).\n\n**Routing:** one lane serves this API today, so a failed attempt has nowhere to fail over to. Payment outcome follows the selected rail's settlement policy.\n\n**Catalog:** [GitHub Trending Developers pricing and uptime](https://getanyapi.com/api/github/trending-developers) - live USD price, lane routing, and measured 30-day uptime. [Every Github endpoint](https://getanyapi.com/api/github).","operationId":"github_trending_developers","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"language":"go","since":"weekly"},"schema":{"additionalProperties":false,"example":{"language":"go","since":"weekly"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"language":{"description":"Programming language to filter trending developers (e.g. javascript, python, go).","type":"string"},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"since":{"description":"Trending range: daily, weekly, or monthly (defaults to daily).","enum":["daily","weekly","monthly"],"type":"string"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true}},"required":[],"title":"GitHub Trending Developers input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"oneOf":[{"type":"null"},{"additionalProperties":false,"properties":{"developers":{"description":"Populated whenever the provider has data for the entity.","items":{"properties":{"avatarUrl":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"name":{"type":"string"},"popularRepo":{"type":"string"},"popularRepoDescription":{"type":"string"},"popularRepoUrl":{"type":"string"},"rank":{"type":"integer"},"url":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"username":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true}},"required":["rank","username","name","url","avatarUrl","popularRepo","popularRepoUrl","popularRepoDescription"],"type":"object"},"type":"array","x-anyapi-must-populate":true},"language":{"type":"string"},"since":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true}},"required":["since","language","developers"],"type":"object"}]},"found":{"type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"GitHub Trending Developers output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"GitHub Trending Developers","tags":["github"],"x-mint":{"href":"/api-reference/github/trending-developers"},"x-payment-info":{"price":{"amount":"0.001200","currency":"USD","mode":"fixed"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"amount":"0.001200","currency":"USD","minimumUsd":"0.001000","mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"amount":"0.001200","currency":"USD","minimumUsd":null,"mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/github.trending_repositories":{"post":{"description":"List GitHub Trending repositories (rank, stars, stars gained today, language, and description), filterable by language and time window.\n\n**Price:** \\$1.20 per 1,000 requests (flat per request - same cost regardless of results returned).\n\n**Routing:** one lane serves this API today, so a failed attempt has nowhere to fail over to. Payment outcome follows the selected rail's settlement policy.\n\n**Catalog:** [GitHub Trending Repositories pricing and uptime](https://getanyapi.com/api/github/trending-repositories) - live USD price, lane routing, and measured 30-day uptime. [Every Github endpoint](https://getanyapi.com/api/github).","operationId":"github_trending_repositories","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"language":"python","since":"daily"},"schema":{"additionalProperties":false,"example":{"language":"python","since":"daily"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"language":{"description":"Filter by programming language (e.g. \"go\", \"typescript\"). Omit for all languages.","type":"string"},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"since":{"default":"daily","description":"Trending window.","enum":["daily","weekly","monthly"],"type":"string"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true}},"title":"GitHub trending repositories input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"oneOf":[{"type":"null"},{"additionalProperties":false,"properties":{"repos":{"description":"Populated whenever the provider has data for the entity.","items":{"properties":{"description":{"type":"string"},"forks":{"type":"integer"},"fullName":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"language":{"type":"string"},"name":{"description":"Repository short name (without owner).","type":"string"},"owner":{"description":"Login of the repository owner (user or organization).","type":"string"},"rank":{"type":"integer"},"stars":{"type":"integer"},"starsToday":{"type":"integer"},"url":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true}},"required":["rank","fullName","url","description","language","stars","forks","starsToday"],"type":"object"},"type":"array","x-anyapi-must-populate":true},"since":{"description":"Trending window the listing was read for (daily, weekly, or monthly).","type":"string"}},"required":["repos"],"type":"object"}]},"found":{"type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"GitHub trending repositories output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"GitHub Trending Repositories","tags":["github"],"x-mint":{"href":"/api-reference/github/trending-repositories"},"x-payment-info":{"price":{"amount":"0.001200","currency":"USD","mode":"fixed"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"amount":"0.001200","currency":"USD","minimumUsd":"0.001000","mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"amount":"0.001200","currency":"USD","minimumUsd":null,"mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/github.user":{"post":{"description":"Fetch a GitHub user's public profile by handle (name, bio, company, location, followers, and repo counts).\n\n**Price:** \\$1.20 per 1,000 requests (flat per request - same cost regardless of results returned).\n\n**Routing:** 2 independent lanes are available in execution order. A failed attempt uses the next lane only when the request's payment authorizes that lane's price; the normalized schema stays the same.\n\n**Catalog:** [GitHub User pricing and uptime](https://getanyapi.com/api/github/user) - live USD price, lane routing, and measured 30-day uptime. [Every Github endpoint](https://getanyapi.com/api/github).","operationId":"github_user","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"handle":"torvalds"},"schema":{"additionalProperties":false,"example":{"handle":"torvalds"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"handle":{"description":"GitHub username.","type":"string"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true}},"required":["handle"],"title":"GitHub user input","type":"object","x-aliases":{"username":"handle"}}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"description":"The user profile record, or null when not found.","oneOf":[{"type":"null"},{"description":"GitHub user identity and basic public stats; richer profile fields (company, blog, location, twitterUsername, type, publicGists, createdUtc) are returned when available.","properties":{"avatarUrl":{"description":"URL of the profile avatar image. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"bio":{"description":"Profile bio text.","type":"string"},"blog":{"description":"Blog or website URL from the profile.","type":"string"},"company":{"description":"Company listed on the profile.","type":"string"},"createdUtc":{"description":"UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds. Populated whenever the provider has data for the entity.","type":"number","x-anyapi-must-populate":true},"followers":{"description":"Number of followers.","type":"integer"},"following":{"description":"Number of accounts the user follows.","type":"integer"},"id":{"description":"GitHub's numeric user id, as a string.","type":"string"},"location":{"description":"Location listed on the profile.","type":"string"},"login":{"description":"GitHub username (handle). Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"name":{"description":"Display name, or empty string if unset. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"profileUrl":{"description":"Canonical GitHub profile URL.","type":"string"},"publicGists":{"description":"Count of public gists.","type":"integer"},"publicRepos":{"description":"Count of public repositories.","type":"integer"},"twitterUsername":{"description":"Linked X/Twitter username.","type":"string"},"type":{"description":"\"User\" or \"Organization\".","type":"string"}},"required":["login","name","bio","avatarUrl","publicRepos","followers","following"],"type":"object"}]},"found":{"description":"Whether a user was found for the requested handle.","type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"GitHub user output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"GitHub User","tags":["github"],"x-mint":{"href":"/api-reference/github/user"},"x-payment-info":{"price":{"amount":"0.001200","currency":"USD","mode":"fixed"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"amount":"0.001200","currency":"USD","minimumUsd":"0.001000","mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"amount":"0.001200","currency":"USD","minimumUsd":null,"mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/github.user_activity":{"post":{"description":"List a GitHub user's public contribution activity by handle (grouped monthly summaries of commits, pull requests, and issues with repository links) for a given year.\n\n**Price:** \\$1.20 per 1,000 requests (flat per request - same cost regardless of results returned).\n\n**Routing:** one lane serves this API today, so a failed attempt has nowhere to fail over to. Payment outcome follows the selected rail's settlement policy.\n\n**Catalog:** [GitHub User Activity pricing and uptime](https://getanyapi.com/api/github/user-activity) - live USD price, lane routing, and measured 30-day uptime. [Every Github endpoint](https://getanyapi.com/api/github).","operationId":"github_user_activity","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"handle":"kentcdodds"},"schema":{"additionalProperties":false,"example":{"handle":"kentcdodds"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"cursor":{"description":"Pagination cursor from a previous response (pages backward by month).","type":"string"},"handle":{"description":"GitHub username.","type":"string"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"year":{"description":"Year of contribution activity to return (defaults to the current year).","type":"string"}},"required":["handle"],"title":"GitHub User Activity input","type":"object","x-aliases":{"username":"handle"}}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"oneOf":[{"type":"null"},{"additionalProperties":false,"properties":{"activity":{"description":"Populated whenever the provider has data for the entity.","items":{"properties":{"items":{"description":"The individual entries behind this activity summary. Empty when the upstream published no breakdown.","items":{"properties":{"repo":{"description":"Full repository name in owner/name form for this entry.","type":"string"},"text":{"description":"The entry as GitHub renders it, e.g. \"owner/repo 353 commits\".","type":"string"},"url":{"description":"Canonical URL of the repository for this entry.","type":"string"}},"type":"object"},"type":"array"},"summary":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true}},"required":["summary"],"type":"object"},"type":"array","x-anyapi-must-populate":true},"month":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"nextCursor":{"description":"Opaque cursor for the next page of activity, or null when this lane has no more. Pass it back as cursor to continue.","type":["string","null"]},"noActivity":{"type":"boolean"},"username":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"year":{"type":"integer"}},"required":["username","year","month","noActivity","nextCursor","activity"],"type":"object"}]},"found":{"type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"GitHub User Activity output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"GitHub User Activity","tags":["github"],"x-mint":{"href":"/api-reference/github/user-activity"},"x-payment-info":{"price":{"amount":"0.001200","currency":"USD","mode":"fixed"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"amount":"0.001200","currency":"USD","minimumUsd":"0.001000","mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"amount":"0.001200","currency":"USD","minimumUsd":null,"mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/github.user_contributions":{"post":{"description":"Fetch a GitHub user's contribution graph for a year (total contributions plus per-day counts and heatmap intensity).\n\n**Price:** \\$1.20 per 1,000 requests (flat per request - same cost regardless of results returned).\n\n**Routing:** one lane serves this API today, so a failed attempt has nowhere to fail over to. Payment outcome follows the selected rail's settlement policy.\n\n**Catalog:** [GitHub User Contributions pricing and uptime](https://getanyapi.com/api/github/user-contributions) - live USD price, lane routing, and measured 30-day uptime. [Every Github endpoint](https://getanyapi.com/api/github).","operationId":"github_user_contributions","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"handle":"torvalds","year":2024},"schema":{"additionalProperties":false,"example":{"handle":"torvalds","year":2024},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"handle":{"description":"GitHub username.","type":"string"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"year":{"description":"Calendar year of the contribution graph. Defaults to the current year.","type":"integer"}},"required":["handle"],"title":"GitHub user contributions input","type":"object","x-aliases":{"username":"handle"}}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"description":"The contribution graph record, or null when not found.","oneOf":[{"type":"null"},{"additionalProperties":false,"properties":{"days":{"description":"Per-day contribution buckets for the year. Populated whenever the provider has data for the entity.","items":{"properties":{"count":{"description":"Number of contributions on this day.","type":"integer"},"dateUtc":{"description":"UTC epoch seconds at 00:00 UTC of the contribution day. Populated whenever the provider has data for the entity.","type":"number","x-anyapi-must-populate":true},"intensity":{"description":"Heatmap level 0-4.","type":"integer"}},"required":["dateUtc","count","intensity"],"type":"object"},"type":"array","x-anyapi-must-populate":true},"total":{"description":"Total contributions across the year.","type":"integer"},"username":{"description":"GitHub username the contribution graph belongs to. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"year":{"description":"Calendar year of the contribution graph.","type":"integer"}},"required":["username","year","total","days"],"type":"object"}]},"found":{"description":"Whether contribution data was found for the requested handle.","type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"GitHub user contributions output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"GitHub User Contributions","tags":["github"],"x-mint":{"href":"/api-reference/github/user-contributions"},"x-payment-info":{"price":{"amount":"0.001200","currency":"USD","mode":"fixed"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"amount":"0.001200","currency":"USD","minimumUsd":"0.001000","mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"amount":"0.001200","currency":"USD","minimumUsd":null,"mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/github.user_followers":{"post":{"description":"List a GitHub user's followers by handle (each follower's login, type, avatar, and profile URL) with pagination.\n\n**Price:** \\$1.20 per 1,000 requests (flat per request - same cost regardless of results returned).\n\n**Routing:** one lane serves this API today, so a failed attempt has nowhere to fail over to. Payment outcome follows the selected rail's settlement policy.\n\n**Catalog:** [GitHub User Followers pricing and uptime](https://getanyapi.com/api/github/user-followers) - live USD price, lane routing, and measured 30-day uptime. [Every Github endpoint](https://getanyapi.com/api/github).","operationId":"github_user_followers","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"handle":"torvalds"},"schema":{"additionalProperties":false,"example":{"handle":"torvalds"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"cursor":{"description":"Pagination cursor from a previous response (page number, defaults to 1).","type":"string"},"handle":{"description":"GitHub username.","type":"string"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true}},"required":["handle"],"title":"GitHub User Followers input","type":"object","x-aliases":{"username":"handle"}}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"oneOf":[{"type":"null"},{"additionalProperties":false,"properties":{"followers":{"description":"Populated whenever the provider has data for the entity.","items":{"properties":{"avatarUrl":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"id":{"type":"integer"},"login":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"siteAdmin":{"type":"boolean"},"type":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"url":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true}},"required":["id","login","type","avatarUrl","url","siteAdmin"],"type":"object"},"type":"array","x-anyapi-must-populate":true},"nextCursor":{"description":"Opaque cursor for the next page of followers, or null when this lane has no more. Pass it back as cursor to continue.","type":["string","null"]}},"required":["nextCursor","followers"],"type":"object"}]},"found":{"type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"GitHub User Followers output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"GitHub User Followers","tags":["github"],"x-mint":{"href":"/api-reference/github/user-followers"},"x-payment-info":{"price":{"amount":"0.001200","currency":"USD","mode":"fixed"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"amount":"0.001200","currency":"USD","minimumUsd":"0.001000","mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"amount":"0.001200","currency":"USD","minimumUsd":null,"mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/github.user_following":{"post":{"description":"List the GitHub users a given user follows by handle (each account's login, type, avatar, and profile URL) with pagination.\n\n**Price:** \\$1.20 per 1,000 requests (flat per request - same cost regardless of results returned).\n\n**Routing:** one lane serves this API today, so a failed attempt has nowhere to fail over to. Payment outcome follows the selected rail's settlement policy.\n\n**Catalog:** [GitHub User Following pricing and uptime](https://getanyapi.com/api/github/user-following) - live USD price, lane routing, and measured 30-day uptime. [Every Github endpoint](https://getanyapi.com/api/github).","operationId":"github_user_following","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"handle":"kentcdodds"},"schema":{"additionalProperties":false,"example":{"handle":"kentcdodds"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"cursor":{"description":"Pagination cursor from a previous response (page number, defaults to 1).","type":"string"},"handle":{"description":"GitHub username.","type":"string"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true}},"required":["handle"],"title":"GitHub User Following input","type":"object","x-aliases":{"username":"handle"}}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"oneOf":[{"type":"null"},{"additionalProperties":false,"properties":{"following":{"description":"Populated whenever the provider has data for the entity.","items":{"properties":{"avatarUrl":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"id":{"type":"integer"},"login":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"siteAdmin":{"type":"boolean"},"type":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"url":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true}},"required":["id","login","type","avatarUrl","url","siteAdmin"],"type":"object"},"type":"array","x-anyapi-must-populate":true},"nextCursor":{"description":"Opaque cursor for the next page of followed accounts, or null when this lane has no more. Pass it back as cursor to continue.","type":["string","null"]}},"required":["nextCursor","following"],"type":"object"}]},"found":{"type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"GitHub User Following output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"GitHub User Following","tags":["github"],"x-mint":{"href":"/api-reference/github/user-following"},"x-payment-info":{"price":{"amount":"0.001200","currency":"USD","mode":"fixed"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"amount":"0.001200","currency":"USD","minimumUsd":"0.001000","mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"amount":"0.001200","currency":"USD","minimumUsd":null,"mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/github.user_pull_requests":{"post":{"description":"List a GitHub user's public pull requests by handle (title, repository, state, creation date, and URL) with optional date filtering and pagination.\n\n**Price:** \\$1.20 per 1,000 requests (flat per request - same cost regardless of results returned).\n\n**Routing:** one lane serves this API today, so a failed attempt has nowhere to fail over to. Payment outcome follows the selected rail's settlement policy.\n\n**Catalog:** [GitHub User Pull Requests pricing and uptime](https://getanyapi.com/api/github/user-pull-requests) - live USD price, lane routing, and measured 30-day uptime. [Every Github endpoint](https://getanyapi.com/api/github).","operationId":"github_user_pull_requests","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"handle":"torvalds"},"schema":{"additionalProperties":false,"example":{"handle":"torvalds"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"cursor":{"description":"Pagination cursor from a previous response (page number, defaults to 1).","type":"string"},"handle":{"description":"GitHub username.","type":"string"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"since":{"description":"Only include pull requests created on or after this date (YYYY-MM-DD).","type":"string"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"until":{"description":"Only include pull requests created on or before this date (YYYY-MM-DD).","type":"string"}},"required":["handle"],"title":"GitHub User Pull Requests input","type":"object","x-aliases":{"username":"handle"}}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"description":"The pull request listing record, or null when not found.","oneOf":[{"type":"null"},{"additionalProperties":false,"properties":{"hasMore":{"description":"Whether more pull requests are available beyond this page.","type":"boolean"},"nextCursor":{"description":"Opaque cursor for the next page of pull requests, or null when this lane has no more. Pass it back as cursor to continue.","type":["string","null"]},"pullRequests":{"description":"The user's public pull requests for this page. Populated whenever the provider has data for the entity.","items":{"properties":{"createdUtc":{"description":"UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds. Populated whenever the provider has data for the entity.","type":"number","x-anyapi-must-populate":true},"repo":{"description":"Repository the pull request targets, in owner/name form. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"state":{"description":"Pull request state (e.g. open, closed, merged). Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"title":{"description":"Pull request title. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"url":{"description":"Canonical URL of the pull request. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true}},"required":["title","repo","state","createdUtc","url"],"type":"object"},"type":"array","x-anyapi-must-populate":true}},"required":["nextCursor","hasMore","pullRequests"],"type":"object"}]},"found":{"description":"Whether pull request data was found for the requested handle.","type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"GitHub User Pull Requests output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"GitHub User Pull Requests","tags":["github"],"x-mint":{"href":"/api-reference/github/user-pull-requests"},"x-payment-info":{"price":{"amount":"0.001200","currency":"USD","mode":"fixed"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"amount":"0.001200","currency":"USD","minimumUsd":"0.001000","mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"amount":"0.001200","currency":"USD","minimumUsd":null,"mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/github.user_repositories":{"post":{"description":"List a GitHub user's public repositories (name, description, language, stars, and forks) with sorting and cursor pagination.\n\n**Price:** \\$1.20 per 1,000 requests (flat per request - same cost regardless of results returned).\n\n**Routing:** one lane serves this API today, so a failed attempt has nowhere to fail over to. Payment outcome follows the selected rail's settlement policy.\n\n**Catalog:** [GitHub User Repositories pricing and uptime](https://getanyapi.com/api/github/user-repositories) - live USD price, lane routing, and measured 30-day uptime. [Every Github endpoint](https://getanyapi.com/api/github).","operationId":"github_user_repositories","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"handle":"torvalds"},"schema":{"additionalProperties":false,"example":{"handle":"torvalds"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"cursor":{"description":"Opaque pagination cursor from a previous response's nextCursor. Omit for the first page; pass it back to fetch the next page.","type":"string"},"direction":{"description":"Sort direction, ascending or descending, paired with sort.","enum":["asc","desc"],"type":"string"},"handle":{"description":"GitHub username.","type":"string"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"sort":{"default":"updated","description":"Repository ordering.","enum":["created","updated","pushed","full_name"],"type":"string"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"type":{"description":"Which repositories to include: owner (default), all, or member.","enum":["owner","all","member"],"type":"string"}},"required":["handle"],"title":"GitHub user repositories input","type":"object","x-aliases":{"username":"handle"}}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"oneOf":[{"type":"null"},{"additionalProperties":false,"properties":{"hasMore":{"type":"boolean"},"nextCursor":{"description":"Opaque cursor for the next page of repositories, or null when this lane has no more. Pass it back as cursor to continue.","type":["string","null"]},"repos":{"description":"Populated whenever the provider has data for the entity.","items":{"properties":{"archived":{"type":"boolean"},"avatarUrl":{"description":"URL of the repository owner's avatar image.","type":"string"},"createdUtc":{"description":"UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds.","type":"number"},"defaultBranch":{"description":"Name of the default branch.","type":"string"},"description":{"type":"string"},"fork":{"type":"boolean"},"forks":{"type":"integer"},"fullName":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"homepage":{"description":"Project homepage URL, or empty string if none.","type":"string"},"id":{"description":"GitHub's numeric repository id, as a string.","type":"string"},"language":{"type":"string"},"license":{"description":"License name, or empty string if unlicensed.","type":"string"},"name":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"openIssues":{"description":"Count of open issues and pull requests.","type":"integer"},"owner":{"description":"Login of the repository owner (user or organization).","type":"string"},"private":{"description":"Whether the repository is private.","type":"boolean"},"profileUrl":{"description":"GitHub profile URL of the repository owner.","type":"string"},"pushedAt":{"type":"string"},"size":{"description":"Repository size in kilobytes as reported by GitHub.","type":"integer"},"stars":{"type":"integer"},"topics":{"description":"Repository topic tags.","items":{"type":"string"},"type":"array"},"updatedAt":{"type":"string"},"url":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"watchers":{"description":"Number of watchers.","type":"integer"}},"required":["name","fullName","description","url","language","stars","forks","fork","archived","updatedAt","pushedAt"],"type":"object"},"type":"array","x-anyapi-must-populate":true}},"required":["nextCursor","hasMore","repos"],"type":"object"}]},"found":{"type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"GitHub user repositories output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"GitHub User Repositories","tags":["github"],"x-mint":{"href":"/api-reference/github/user-repositories"},"x-payment-info":{"price":{"amount":"0.001200","currency":"USD","mode":"fixed"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"amount":"0.001200","currency":"USD","minimumUsd":"0.001000","mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"amount":"0.001200","currency":"USD","minimumUsd":null,"mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/glassdoor.jobs":{"post":{"description":"Search Glassdoor job listings by keyword and location, or scrape any Glassdoor company or job search page URL - up to 20 normalized job records per request.\n\n**Price:** billed per result - \\$5.50 per 1,000 requests base + \\$5.23 per 1,000 results, capped at \\$110.00 per 1,000 requests.\n\n**Routing:** one lane serves this API today, so a failed attempt has nowhere to fail over to. Payment outcome follows the selected rail's settlement policy.\n\n**Catalog:** [Glassdoor Jobs pricing and uptime](https://getanyapi.com/api/glassdoor/jobs) - live USD price, lane routing, and measured 30-day uptime. [Every Glassdoor endpoint](https://getanyapi.com/api/glassdoor).","operationId":"glassdoor_jobs","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"limit":3,"location":"United States","postedLimit":"month","query":"software engineer"},"schema":{"additionalProperties":false,"anyOf":[{"required":["query"]},{"required":["url"]}],"example":{"limit":3,"location":"United States","postedLimit":"month","query":"software engineer"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"easyApply":{"description":"When true, only return jobs offering Easy Apply. Keyword mode only.","type":"boolean"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"limit":{"description":"Maximum number of results to return (1-20, default 20). You are billed per result returned, so a lower limit costs less.","maximum":20,"minimum":1,"type":"integer"},"location":{"description":"City, region, or country to search within (keyword mode; e.g. United States, New York).","type":"string"},"postedLimit":{"description":"Only jobs posted within this window (past 24 hours, week, or month). Keyword mode only.","enum":["24h","week","month"],"type":"string"},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"query":{"description":"Job title or keywords to search (keyword mode). Provide this or a url.","type":"string"},"sortBy":{"description":"Sort order: most recent (date) or best match (relevance). Keyword mode only.","enum":["date","relevance"],"type":"string"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"url":{"description":"Alternatively, a Glassdoor company or job search page URL to scrape (e.g. https://www.glassdoor.com/Jobs/Google-Jobs-E9079.htm). The filters below apply in keyword (query) mode.","type":"string"},"workplaceType":{"description":"Filter by workplace type (remote, hybrid, or onsite). Keyword mode only.","enum":["remote","hybrid","onsite"],"type":"string"}},"title":"Glassdoor Jobs input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"description":"The results wrapper, or null when nothing was found.","oneOf":[{"type":"null"},{"additionalProperties":false,"properties":{"items":{"description":"Job listing records for the search or company page. Populated whenever the provider has data for the entity.","items":{"description":"A Glassdoor job listing: title, employer, location, salary estimate, rating, and the listing URL.","properties":{"ageInDays":{"description":"Days since the listing was posted.","type":"integer"},"applyUrl":{"description":"Absolute Glassdoor URL that starts the application.","type":"string"},"company":{"description":"Hiring employer name. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"companyId":{"description":"Glassdoor's numeric employer id, as a string.","type":"string"},"companyIndustry":{"description":"Primary industry of the hiring employer.","type":"string"},"companyRevenue":{"description":"Employer revenue band as Glassdoor words it.","type":"string"},"companySize":{"description":"Employer headcount band as Glassdoor words it (e.g. \"1001 to 5000 Employees\").","type":"string"},"companyType":{"description":"Employer ownership type (e.g. \"Company - Private\").","type":"string"},"description":{"description":"Full job description (may contain HTML).","type":"string"},"easyApply":{"description":"Whether the listing supports Glassdoor Easy Apply.","type":"boolean"},"expired":{"description":"Whether Glassdoor reports the listing as expired.","type":"boolean"},"id":{"description":"Glassdoor job listing id. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"isSponsored":{"description":"Whether the listing is a paid placement.","type":"boolean"},"location":{"description":"Job location (city, region).","type":"string"},"logoUrl":{"description":"Employer square logo image URL.","type":"string"},"normalizedTitle":{"description":"Glassdoor's normalized occupation title for the listing.","type":"string"},"rating":{"description":"Employer Glassdoor star rating (0 when not rated).","type":"number"},"salary":{"description":"Estimated salary range for the listing.","properties":{"currency":{"description":"ISO currency code for the salary figures.","type":"string"},"max":{"description":"High end of the estimated salary range.","type":"number"},"median":{"description":"Median of the estimated salary range.","type":"number"},"min":{"description":"Low end of the estimated salary range.","type":"number"},"period":{"description":"Pay period the figures cover (e.g. ANNUAL, HOURLY).","type":"string"}},"type":"object"},"sector":{"description":"Sector of the hiring employer.","type":"string"},"title":{"description":"Job title. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"url":{"description":"Absolute Glassdoor job listing URL. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true}},"required":["id","title","url"],"type":"object"},"type":"array","x-anyapi-must-populate":true}},"required":["items"],"type":"object"}]},"found":{"description":"True when at least one job listing was returned.","type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"Glassdoor Jobs output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"Glassdoor Jobs","tags":["glassdoor"],"x-mint":{"href":"/api-reference/glassdoor/jobs"},"x-payment-info":{"price":{"currency":"USD","max":"0.110000","min":"0.005500","mode":"dynamic"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"currency":"USD","max":"0.110000","min":"0.005500","minimumUsd":"0.001000","mode":"dynamic","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"currency":"USD","max":"0.110000","min":"0.005500","minimumUsd":null,"mode":"dynamic","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/google.ai_mode":{"post":{"description":"Ask Google AI Mode a prompt and receive the cited answer it generates. AI Mode composes the answer at search time, so repeat calls on one prompt can differ in wording and in which sources are cited.\n\n**Price:** billed per result - \\$0.06 per 1,000 requests base + \\$3.30 per 1,000 results, capped at \\$3.36 per 1,000 requests.\n\n**Routing:** one lane serves this API today, so a failed attempt has nowhere to fail over to. Payment outcome follows the selected rail's settlement policy.\n\n**Catalog:** [Google AI Mode pricing and uptime](https://getanyapi.com/api/google/ai-mode) - live USD price, lane routing, and measured 30-day uptime. [Every Google endpoint](https://getanyapi.com/api/google).","operationId":"google_ai_mode","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"prompt":"What is AnyAPI at getanyapi.com, and what does it offer?"},"schema":{"additionalProperties":false,"example":{"prompt":"What is AnyAPI at getanyapi.com, and what does it offer?"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"prompt":{"description":"The question or prompt to answer with Google AI Mode.","minLength":1,"type":"string"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true}},"required":["prompt"],"title":"Google AI Mode input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"description":"The normalized answer, or null when no answer was found. Google composes the answer at search time rather than serving a stored one, so the same prompt can return different wording and a different set of citations on each call. Treat a response as one observation of the answer, not as a stable document.","oneOf":[{"type":"null"},{"additionalProperties":false,"properties":{"answer":{"description":"The answer as plain text, as Google generated it for this search. Length and coverage vary between searches on the same prompt. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"answerMarkdown":{"description":"The answer in Markdown when Google returns a Markdown rendering, otherwise the same text as answer. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"citations":{"description":"The sources Google cited for this search, in the order it returned them. Google recomputes the set per search, so counts and membership vary between calls on the same prompt.","items":{"properties":{"title":{"description":"The cited source title.","type":"string"},"url":{"description":"The cited source URL.","type":"string"}},"required":["title","url"],"type":"object"},"type":"array"},"prompt":{"description":"The prompt answered by the upstream search experience. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true}},"required":["prompt","answer","answerMarkdown","citations"],"type":"object"}]},"found":{"description":"Whether Google AI Mode returned an answer.","type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"Google AI Mode output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"Google AI Mode","tags":["google"],"x-mint":{"href":"/api-reference/google/ai-mode"},"x-payment-info":{"price":{"currency":"USD","max":"0.003360","min":"0.000060","mode":"dynamic"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"currency":"USD","max":"0.003360","min":"0.001000","minimumUsd":"0.001000","mode":"dynamic","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"currency":"USD","max":"0.003360","min":"0.000060","minimumUsd":null,"mode":"dynamic","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/google.ai_overview":{"post":{"description":"Ask Google Search a prompt and receive the AI Overview it generated for that scrape, with every source Google listed. Google regenerates the overview per search, so the same prompt can return different wording and a different source list.\n\n**Price:** \\$4.80 per 1,000 requests (flat per request - same cost regardless of results returned).\n\n**Routing:** one lane serves this API today, so a failed attempt has nowhere to fail over to. Payment outcome follows the selected rail's settlement policy.\n\n**Catalog:** [Google AI Overview pricing and uptime](https://getanyapi.com/api/google/ai-overview) - live USD price, lane routing, and measured 30-day uptime. [Every Google endpoint](https://getanyapi.com/api/google).","operationId":"google_ai_overview","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"prompt":"How does photosynthesis work?"},"schema":{"additionalProperties":false,"example":{"prompt":"How does photosynthesis work?"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"prompt":{"description":"The question or prompt to answer with a Google AI Overview.","minLength":1,"type":"string"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true}},"required":["prompt"],"title":"Google AI Overview input","type":"object","x-aliases":{"query":"prompt"}}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"description":"The AI Overview Google generated for this scrape, or null when Google returned no overview. Google regenerates the overview on each search, so two calls with the same prompt can return different wording and a different set of sources. Treat a response as a timestamped observation of what Google served, not as a stable record.","oneOf":[{"type":"null"},{"additionalProperties":false,"properties":{"answer":{"description":"The AI Overview answer as plain text, as generated for this scrape. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"answerMarkdown":{"description":"The same answer in Markdown, preserving the headings and lists Google rendered. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"citations":{"description":"Every source Google listed for this overview, in Google's own order. This is the full list behind the overview, not only the few sources Google renders inline before the list is expanded, so it is routinely longer than what a reader sees at a glance.","items":{"properties":{"index":{"description":"Google's position for this source within the overview, starting at 1.","type":"integer"},"title":{"description":"The cited source title as Google presented it, which may carry a trailing date and snippet.","type":"string"},"url":{"description":"The cited source URL.","type":"string"}},"required":["title","url"],"type":"object"},"type":"array"},"language":{"description":"Two-letter language code the overview was generated in.","type":"string"},"prompt":{"description":"The prompt Google answered. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"scrapedAt":{"description":"When this overview was captured, ISO 8601 UTC. Because Google regenerates the overview per search, this identifies which generation the other fields describe.","type":"string"}},"required":["prompt","answer","answerMarkdown","citations"],"type":"object"}]},"found":{"description":"Whether Google Search returned an AI Overview for this prompt.","type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"Google AI Overview output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"Google AI Overview","tags":["google"],"x-mint":{"href":"/api-reference/google/ai-overview"},"x-payment-info":{"price":{"amount":"0.004800","currency":"USD","mode":"fixed"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"amount":"0.004800","currency":"USD","minimumUsd":"0.001000","mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"amount":"0.004800","currency":"USD","minimumUsd":null,"mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/google.autocomplete":{"post":{"description":"Get Google search autocomplete suggestions for a partial query (keyword ideas).\n\n**Price:** \\$0.99 per 1,000 requests (flat per request - same cost regardless of results returned).\n\n**Routing:** one lane serves this API today, so a failed attempt has nowhere to fail over to. Payment outcome follows the selected rail's settlement policy.\n\n**Catalog:** [Google Autocomplete pricing and uptime](https://getanyapi.com/api/google/autocomplete) - live USD price, lane routing, and measured 30-day uptime. [Every Google endpoint](https://getanyapi.com/api/google).","operationId":"google_autocomplete","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"query":"best coff"},"schema":{"additionalProperties":false,"example":{"query":"best coff"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"gl":{"default":"us","description":"Two-letter country code for result localization (e.g. us, gb, de).","type":"string"},"hl":{"default":"en","description":"Two-letter interface and results language code for the suggestions (e.g. en, es, de).","type":"string"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"query":{"description":"The partial Google search query.","type":"string"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true}},"required":["query"],"title":"Google Autocomplete input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"description":"Result payload, or null when nothing was found.","oneOf":[{"type":"null"},{"additionalProperties":false,"properties":{"query":{"description":"The partial query that was searched.","type":"string"},"suggestions":{"description":"Autocomplete suggestion records. Populated whenever the provider has data for the entity.","items":{"properties":{"value":{"description":"Suggested query text. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true}},"required":["value"],"type":"object"},"type":"array","x-anyapi-must-populate":true}},"required":["query","suggestions"],"type":"object"}]},"found":{"description":"True when at least one autocomplete suggestion was returned.","type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"Google Autocomplete output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"Google Autocomplete","tags":["google"],"x-mint":{"href":"/api-reference/google/autocomplete"},"x-payment-info":{"price":{"amount":"0.000990","currency":"USD","mode":"fixed"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"amount":"0.001000","currency":"USD","minimumUsd":"0.001000","mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"amount":"0.000990","currency":"USD","minimumUsd":null,"mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/google.images":{"post":{"description":"Run a Google Images search and get structured results: image URLs, dimensions, titles, and source pages.\n\n**Price:** billed per result - \\$0.99 per 1,000 requests base + \\$0.09 per 1,000 results, capped at \\$1.98 per 1,000 requests.\n\n**Routing:** one lane serves this API today, so a failed attempt has nowhere to fail over to. Payment outcome follows the selected rail's settlement policy.\n\n**Catalog:** [Google Images pricing and uptime](https://getanyapi.com/api/google/images) - live USD price, lane routing, and measured 30-day uptime. [Every Google endpoint](https://getanyapi.com/api/google).","operationId":"google_images","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"gl":"us","hl":"en","limit":5,"query":"golden retriever"},"schema":{"additionalProperties":false,"example":{"gl":"us","hl":"en","limit":5,"query":"golden retriever"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"autocorrect":{"description":"Toggle Google spelling autocorrect (default true). Set false to search the exact query without correction.","type":"boolean"},"gl":{"default":"us","description":"Two-letter country code for result localization (e.g. us, gb, de).","type":"string"},"hl":{"default":"en","description":"Two-letter interface and results language code (e.g. en, es, de).","type":"string"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"limit":{"default":20,"description":"Maximum number of images to return (1-100, default 20). Requests for 10 results or fewer are billed at a lower rate than larger requests.","maximum":100,"minimum":1,"type":"integer"},"location":{"description":"Fine-grained location for result localization, given as a canonical Google location string (e.g. 'New York, United States', 'London, United Kingdom'). More specific than the country-level gl.","type":"string"},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"query":{"description":"Image search query (e.g. golden gate bridge at sunset).","type":"string"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"timeframe":{"description":"Restrict results to a recent time window: 1h, 1d, 7d, 1y, or all. Default all (no time restriction).","enum":["1h","1d","7d","1y","all"],"type":"string"}},"required":["query"],"title":"Google Images input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"description":"The result wrapper, or null when nothing was found.","oneOf":[{"type":"null"},{"additionalProperties":false,"properties":{"items":{"description":"Image result records: image URL, dimensions, title, and the source page it appears on. Populated whenever the provider has data for the entity.","items":{"properties":{"height":{"description":"Full image height in pixels.","type":"integer"},"position":{"description":"One-based position of this image in Google's result order.","type":"integer"},"source":{"description":"Host domain of the page the image appears on. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"sourceUrl":{"description":"URL of the page the image appears on. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"thumbnailUrl":{"description":"URL to a thumbnail of the image.","type":"string"},"title":{"description":"Image result title. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"url":{"description":"Direct URL to the full-size image. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"width":{"description":"Full image width in pixels.","type":"integer"}},"required":["url","title"],"type":"object"},"type":"array","x-anyapi-must-populate":true}},"required":["items"],"type":"object"}]},"found":{"description":"True when at least one image result was returned.","type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"Google Images output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"Google Images","tags":["google"],"x-mint":{"href":"/api-reference/google/images"},"x-payment-info":{"price":{"currency":"USD","max":"0.001980","min":"0.000990","mode":"dynamic"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"currency":"USD","max":"0.001980","min":"0.001000","minimumUsd":"0.001000","mode":"dynamic","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"currency":"USD","max":"0.001980","min":"0.000990","minimumUsd":null,"mode":"dynamic","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/google.lens":{"post":{"description":"Reverse image search: find web pages and visual matches for an image URL.\n\n**Price:** \\$2.97 per 1,000 requests (flat per request - same cost regardless of results returned).\n\n**Routing:** one lane serves this API today, so a failed attempt has nowhere to fail over to. Payment outcome follows the selected rail's settlement policy.\n\n**Catalog:** [Google Lens pricing and uptime](https://getanyapi.com/api/google/lens) - live USD price, lane routing, and measured 30-day uptime. [Every Google endpoint](https://getanyapi.com/api/google).","operationId":"google_lens","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"url":"https://i.imgur.com/HBrB8p0.png"},"schema":{"additionalProperties":false,"example":{"url":"https://i.imgur.com/HBrB8p0.png"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"url":{"description":"Public URL of the image to search with.","format":"uri","type":"string"}},"required":["url"],"title":"Google Lens input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"description":"Result payload, or null when nothing was found.","oneOf":[{"type":"null"},{"additionalProperties":false,"properties":{"results":{"description":"Visual match result records. Populated whenever the provider has data for the entity.","items":{"properties":{"image":{"description":"Matched image URL.","format":"uri","type":"string"},"link":{"description":"URL to the matching web page. Populated whenever the provider has data for the entity.","format":"uri","type":"string","x-anyapi-must-populate":true},"source":{"description":"Source site name.","type":"string"},"thumbnailUrl":{"description":"Thumbnail image URL for the match.","format":"uri","type":"string"},"title":{"description":"Title of the matching web page. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true}},"required":["title","link"],"type":"object"},"type":"array","x-anyapi-must-populate":true},"url":{"description":"The input image URL that was searched.","type":"string"}},"required":["url","results"],"type":"object"}]},"found":{"description":"True when at least one visual match was returned.","type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"Google Lens output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"Google Lens","tags":["google"],"x-mint":{"href":"/api-reference/google/lens"},"x-payment-info":{"price":{"amount":"0.002970","currency":"USD","mode":"fixed"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"amount":"0.002970","currency":"USD","minimumUsd":"0.001000","mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"amount":"0.002970","currency":"USD","minimumUsd":null,"mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/google.news":{"post":{"description":"Search Google News by keyword and get fresh articles (headlines, sources, links, and publish times) as clean JSON.\n\n**Price:** \\$0.99 per 1,000 requests (flat per request - same cost regardless of results returned).\n\n**Routing:** one lane serves this API today, so a failed attempt has nowhere to fail over to. Payment outcome follows the selected rail's settlement policy.\n\n**Catalog:** [Google News pricing and uptime](https://getanyapi.com/api/google/news) - live USD price, lane routing, and measured 30-day uptime. [Every Google endpoint](https://getanyapi.com/api/google).","operationId":"google_news","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"gl":"us","hl":"en","query":"openai"},"schema":{"additionalProperties":false,"example":{"gl":"us","hl":"en","query":"openai"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"gl":{"default":"us","description":"Two-letter country code for result localization (e.g. us, gb, de).","type":"string"},"hl":{"default":"en","description":"Two-letter interface and results language code (e.g. en, es, de).","type":"string"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"limit":{"description":"Requested article count (1-20, default 20). Google News returns its latest matching articles and may return more or fewer than requested. Price is flat per request.","maximum":20,"minimum":1,"type":"integer"},"location":{"description":"Fine-grained location for result localization, given as a canonical Google location string (e.g. 'New York, United States', 'London, United Kingdom'). More specific than the country-level gl.","type":"string"},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"query":{"description":"News search query; supports operators like '-', 'OR', and 'site:' (e.g. bitcoin site:cnn.com).","type":"string"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"timeframe":{"description":"How far back to search, written as a count plus a unit: h hours, d days, w weeks, m months, y years. So 2h is the last two hours, 30d the last thirty days, 6m the last six months. Omit this field, or send 'all', to search without a time limit.","pattern":"^(all|[1-9][0-9]*[hdwmy])$","type":"string"}},"required":["query"],"title":"Google News input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"description":"Result payload, or null when nothing was found.","oneOf":[{"type":"null"},{"additionalProperties":false,"properties":{"items":{"description":"Article records: headline, source name, article link, and publish time. Populated whenever the provider has data for the entity.","items":{"properties":{"createdUtc":{"description":"UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds. Populated whenever the provider has data for the entity.","type":"number","x-anyapi-must-populate":true},"image":{"description":"Thumbnail image URL for the article. The query string carries the image identity, so it is kept.","type":"string"},"snippet":{"description":"Article snippet when available.","type":"string"},"source":{"description":"Publisher name. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"title":{"description":"Article headline. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"url":{"description":"Article link. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true}},"required":["title","url"],"type":"object"},"type":"array","x-anyapi-must-populate":true}},"required":["items"],"type":"object"}]},"found":{"description":"True when the search returned at least one article.","type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"Google News output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"Google News","tags":["google"],"x-mint":{"href":"/api-reference/google/news"},"x-payment-info":{"price":{"amount":"0.000990","currency":"USD","mode":"fixed"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"amount":"0.001000","currency":"USD","minimumUsd":"0.001000","mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"amount":"0.000990","currency":"USD","minimumUsd":null,"mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/google.patents":{"post":{"description":"Search Google Patents with title, patent number, inventor, assignee, key dates, and PDF link.\n\n**Price:** \\$0.99 per 1,000 requests (flat per request - same cost regardless of results returned).\n\n**Routing:** one lane serves this API today, so a failed attempt has nowhere to fail over to. Payment outcome follows the selected rail's settlement policy.\n\n**Catalog:** [Google Patents pricing and uptime](https://getanyapi.com/api/google/patents) - live USD price, lane routing, and measured 30-day uptime. [Every Google endpoint](https://getanyapi.com/api/google).","operationId":"google_patents","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"query":"wireless charging"},"schema":{"additionalProperties":false,"example":{"query":"wireless charging"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"query":{"description":"The Google Patents search query.","type":"string"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true}},"required":["query"],"title":"Google Patents input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"description":"Result payload, or null when nothing was found.","oneOf":[{"type":"null"},{"additionalProperties":false,"properties":{"query":{"description":"The query that was searched.","type":"string"},"results":{"description":"Patent result records.","items":{"properties":{"assignee":{"description":"Patent assignee.","type":"string"},"filedUtc":{"description":"UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds.","type":"number"},"grantedUtc":{"description":"UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds.","type":"number"},"image":{"description":"First patent figure thumbnail image URL.","format":"uri","type":"string"},"inventor":{"description":"Named inventor or inventors.","type":"string"},"language":{"description":"Two-letter language code of the patent document.","type":"string"},"link":{"description":"URL to the patent. Populated whenever the provider has data for the entity.","format":"uri","type":"string","x-anyapi-must-populate":true},"pdfUrl":{"description":"URL to an available patent PDF.","format":"uri","type":"string"},"priorityUtc":{"description":"UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds.","type":"number"},"publicationNumber":{"description":"Patent publication number (e.g. US11303135B2). Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"publishedUtc":{"description":"UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds.","type":"number"},"snippet":{"description":"Short patent description snippet.","type":"string"},"title":{"description":"Patent title. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true}},"required":["title","link","publicationNumber"],"type":"object"},"type":"array"}},"required":["query","results"],"type":"object"}]},"found":{"description":"True when at least one patent result was returned.","type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"Google Patents output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"Google Patents","tags":["google"],"x-mint":{"href":"/api-reference/google/patents"},"x-payment-info":{"price":{"amount":"0.000990","currency":"USD","mode":"fixed"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"amount":"0.001000","currency":"USD","minimumUsd":"0.001000","mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"amount":"0.000990","currency":"USD","minimumUsd":null,"mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/google.scholar":{"post":{"description":"Search Google Scholar for academic papers with title, authors, citation count, and PDF link.\n\n**Price:** \\$0.99 per 1,000 requests (flat per request - same cost regardless of results returned).\n\n**Routing:** one lane serves this API today, so a failed attempt has nowhere to fail over to. Payment outcome follows the selected rail's settlement policy.\n\n**Catalog:** [Google Scholar pricing and uptime](https://getanyapi.com/api/google/scholar) - live USD price, lane routing, and measured 30-day uptime. [Every Google endpoint](https://getanyapi.com/api/google).","operationId":"google_scholar","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"query":"attention is all you need"},"schema":{"additionalProperties":false,"example":{"query":"attention is all you need"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"query":{"description":"The Google Scholar search query.","type":"string"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true}},"required":["query"],"title":"Google Scholar input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"description":"Result payload, or null when nothing was found.","oneOf":[{"type":"null"},{"additionalProperties":false,"properties":{"query":{"description":"The query that was searched.","type":"string"},"results":{"description":"Academic paper result records.","items":{"properties":{"citedBy":{"description":"Number of citations reported by Google Scholar.","type":"integer"},"id":{"description":"Result identifier.","type":"string"},"link":{"description":"URL to the paper. Populated whenever the provider has data for the entity.","format":"uri","type":"string","x-anyapi-must-populate":true},"pdfUrl":{"description":"URL to an available PDF.","format":"uri","type":"string"},"publicationInfo":{"description":"Authors, venue, and publication year.","type":"string"},"snippet":{"description":"Short paper description snippet.","type":"string"},"title":{"description":"Paper title. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"year":{"description":"Publication year.","type":"integer"}},"required":["title","link"],"type":"object"},"type":"array"}},"required":["query","results"],"type":"object"}]},"found":{"description":"True when at least one scholar result was returned.","type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"Google Scholar output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"Google Scholar","tags":["google"],"x-mint":{"href":"/api-reference/google/scholar"},"x-payment-info":{"price":{"amount":"0.000990","currency":"USD","mode":"fixed"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"amount":"0.001000","currency":"USD","minimumUsd":"0.001000","mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"amount":"0.000990","currency":"USD","minimumUsd":null,"mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/google.search":{"post":{"description":"Run a Google web search and get the organic results (title, link, snippet, position) as clean JSON. Returns about 10 results per call - Google stopped honoring bulk result counts in September 2025, so a limit above 10 is accepted but returns no more than a page. Send page 2, 3, ... to walk further, or use google.search_100 for up to 100 ranked results in one call, which is cheaper past roughly 20 results.\n\n**Price:** \\$0.40 per 1,000 requests (flat per request - same cost regardless of results returned).\n\n**Routing:** 4 independent lanes are available in execution order. A failed attempt uses the next lane only when the request's payment authorizes that lane's price; the normalized schema stays the same.\n\n**Catalog:** [Google Search pricing and uptime](https://getanyapi.com/api/google/search) - live USD price, lane routing, and measured 30-day uptime. [Every Google endpoint](https://getanyapi.com/api/google).","operationId":"google_search","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"gl":"us","hl":"en","limit":10,"query":"best coffee maker"},"schema":{"additionalProperties":false,"example":{"gl":"us","hl":"en","limit":10,"query":"best coffee maker"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"autocorrect":{"description":"Toggle Google spelling autocorrect (default true). Set false to search the exact query without correction.","type":"boolean"},"cursor":{"deprecated":true,"description":"Deprecated: send page instead. A continuation token from an earlier response's nextCursor is still accepted and still continues on the source that issued it; page is ignored when cursor is sent alongside it.","minLength":1,"type":"string"},"gl":{"default":"us","description":"Two-letter country code for result localization (e.g. us, gb, de).","type":"string"},"hl":{"default":"en","description":"Two-letter interface and results language code (e.g. en, es, de).","type":"string"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"limit":{"default":10,"description":"Maximum number of organic results to return in this response. Google stopped honoring bulk result counts in September 2025, so one page is about 10 results and a limit above 10 is accepted but will not return more than that. To go deeper, send page (about 10 results per page, each billed as a request) or use google.search_100, which returns up to 100 ranked results in a single call for one flat charge and is cheaper past roughly 20 results. Price is flat per request.","maximum":100,"minimum":1,"type":"integer"},"location":{"description":"Fine-grained location to localize results to, more specific than the country-level gl. Must exactly match an Active Canonical Name from Google's geo-target list, which uses no space after each comma: 'New York,New York,United States', 'Austin,Texas,United States', 'London,England,United Kingdom'. A value that does not match is rejected rather than quietly searched from somewhere else.","type":"string"},"page":{"default":1,"description":"Which page of about 10 organic results to return, starting at 1. Send page 2, 3, ... to walk deeper; each page is billed as one request and any source can serve any page. Replaces cursor.","minimum":1,"type":"integer"},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"query":{"description":"The Google search query.","type":"string"},"requireCursor":{"deprecated":true,"description":"Deprecated. Every source for this search returns a nextCursor, so this changes nothing about the price or which source serves you; it stays accepted so callers that already send it keep working.","type":"boolean"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"timeframe":{"description":"Restrict results to a recent time window: 1h, 1d, 7d, 1y, or all. Default all (no time restriction).","enum":["1h","1d","7d","1y","all"],"type":"string"}},"required":["query"],"title":"Google search input","type":"object","x-aliases":{"num":"limit","q":"query"}}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"oneOf":[{"type":"null"},{"additionalProperties":false,"properties":{"nextCursor":{"description":"Opaque cursor for the next page of results, or null when this lane has no more. Pass it back as cursor to continue.","type":["string","null"]},"query":{"type":"string"},"results":{"description":"Populated whenever the provider has data for the entity.","items":{"properties":{"link":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"position":{"type":"integer"},"snippet":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"title":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true}},"required":["title","link","snippet","position"],"type":"object"},"type":"array","x-anyapi-must-populate":true}},"required":["query","results"],"type":"object"}]},"found":{"type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"Google search output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"Google Search","tags":["google"],"x-mint":{"href":"/api-reference/google/search"},"x-payment-info":{"price":{"amount":"0.000400","currency":"USD","mode":"fixed"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"amount":"0.001000","currency":"USD","minimumUsd":"0.001000","mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"amount":"0.000400","currency":"USD","minimumUsd":null,"mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/google.search_100":{"post":{"description":"Run a Google web search and get up to 100 ranked organic results in one call, with true absolute positions rather than per-page numbering. One flat charge whatever the depth, which makes it cheaper than paging google.search past roughly 20 results. It reads ten pages of Google to build the list, so a call takes around three to four minutes - use google.search when you want the first page back in a second.\n\n**Price:** \\$1.80 per 1,000 requests (flat per request - same cost regardless of results returned).\n\n**Routing:** one lane serves this API today, so a failed attempt has nowhere to fail over to. Payment outcome follows the selected rail's settlement policy.\n\n**Catalog:** [Google Search Top 100 pricing and uptime](https://getanyapi.com/api/google/search-100) - live USD price, lane routing, and measured 30-day uptime. [Every Google endpoint](https://getanyapi.com/api/google).","operationId":"google_search_100","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"gl":"us","hl":"en","query":"best crm software"},"schema":{"additionalProperties":false,"example":{"gl":"us","hl":"en","query":"best crm software"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"autocorrect":{"description":"Toggle Google spelling autocorrect (default true). Set false to search the exact query without correction.","type":"boolean"},"gl":{"default":"us","description":"Two-letter country code for result localization (e.g. us, gb, de).","type":"string"},"hl":{"default":"en","description":"Two-letter interface and results language code (e.g. en, es, de).","type":"string"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"query":{"description":"The Google search query.","type":"string"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"timeframe":{"description":"Restrict results to a recent time window: 1h, 1d, 7d, 1y, or all. Default all (no time restriction).","enum":["1h","1d","7d","1y","all"],"type":"string"}},"required":["query"],"title":"Google search top 100 input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"oneOf":[{"type":"null"},{"additionalProperties":false,"properties":{"aiOverview":{"description":"Google's AI Overview text for this query, when Google showed one. Absent when it did not.","type":"string"},"query":{"description":"The search query these results answer.","type":"string"},"results":{"description":"Organic results in Google's own order, position 1 first. Populated whenever the provider has data for the entity.","items":{"properties":{"link":{"description":"The destination URL. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"position":{"description":"Absolute rank across the whole result set, counting from 1 - not restarted per page. Populated whenever the provider has data for the entity.","type":"integer","x-anyapi-must-populate":true},"snippet":{"description":"Google's summary text for the result. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"title":{"description":"The result's headline as Google renders it. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true}},"required":["title","link","snippet","position"],"type":"object"},"type":"array","x-anyapi-must-populate":true}},"required":["query","results"],"type":"object"}]},"found":{"type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"Google search top 100 output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"Google Search Top 100","tags":["google"],"x-mint":{"href":"/api-reference/google/search-100"},"x-payment-info":{"price":{"amount":"0.001800","currency":"USD","mode":"fixed"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"amount":"0.001800","currency":"USD","minimumUsd":"0.001000","mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"amount":"0.001800","currency":"USD","minimumUsd":null,"mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/google.videos":{"post":{"description":"Search Google for video results (YouTube and others) with title, link, thumbnail, and source.\n\n**Price:** \\$0.99 per 1,000 requests (flat per request - same cost regardless of results returned).\n\n**Routing:** one lane serves this API today, so a failed attempt has nowhere to fail over to. Payment outcome follows the selected rail's settlement policy.\n\n**Catalog:** [Google Videos pricing and uptime](https://getanyapi.com/api/google/videos) - live USD price, lane routing, and measured 30-day uptime. [Every Google endpoint](https://getanyapi.com/api/google).","operationId":"google_videos","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"gl":"us","hl":"en","query":"lofi hip hop"},"schema":{"additionalProperties":false,"example":{"gl":"us","hl":"en","query":"lofi hip hop"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"autocorrect":{"description":"Toggle Google spelling autocorrect (default true). Set false to search the exact query without correction.","type":"boolean"},"gl":{"default":"us","description":"Two-letter country code for result localization (e.g. us, gb, de).","type":"string"},"hl":{"default":"en","description":"Two-letter interface and results language code (e.g. en, es, de).","type":"string"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"location":{"description":"Fine-grained location for result localization, given as a canonical Google location string (e.g. 'New York, United States', 'London, United Kingdom'). More specific than the country-level gl.","type":"string"},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"query":{"description":"The video search query.","type":"string"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"timeframe":{"description":"Restrict results to a recent time window: 1h, 1d, 7d, 1y, or all. Default all (no time restriction).","enum":["1h","1d","7d","1y","all"],"type":"string"}},"required":["query"],"title":"Google Videos input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"description":"Result payload, or null when nothing was found.","oneOf":[{"type":"null"},{"additionalProperties":false,"properties":{"query":{"description":"The query that was searched.","type":"string"},"results":{"description":"Video result records. Populated whenever the provider has data for the entity.","items":{"properties":{"image":{"description":"Thumbnail image URL for the video.","format":"uri","type":"string"},"link":{"description":"URL to the video. Populated whenever the provider has data for the entity.","format":"uri","type":"string","x-anyapi-must-populate":true},"position":{"description":"1-based rank in the result list.","type":"integer"},"snippet":{"description":"Short description snippet.","type":"string"},"source":{"description":"Host platform (e.g. YouTube, Vimeo).","type":"string"},"title":{"description":"Video title. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true}},"required":["title","link"],"type":"object"},"type":"array","x-anyapi-must-populate":true}},"required":["query","results"],"type":"object"}]},"found":{"description":"True when at least one video result was returned.","type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"Google Videos output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"Google Videos","tags":["google"],"x-mint":{"href":"/api-reference/google/videos"},"x-payment-info":{"price":{"amount":"0.000990","currency":"USD","mode":"fixed"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"amount":"0.001000","currency":"USD","minimumUsd":"0.001000","mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"amount":"0.000990","currency":"USD","minimumUsd":null,"mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/google_ads.ad_details":{"post":{"description":"Look up a single Google Ads Transparency Center creative by URL and get its format, run dates, impression range, regions, and creative variations as clean JSON.\n\n**Price:** \\$1.20 per 1,000 requests (flat per request - same cost regardless of results returned).\n\n**Routing:** one lane serves this API today, so a failed attempt has nowhere to fail over to. Payment outcome follows the selected rail's settlement policy.\n\n**Catalog:** [Google Ads Ad Details pricing and uptime](https://getanyapi.com/api/google-ads/ad-details) - live USD price, lane routing, and measured 30-day uptime. [Every Google Ads endpoint](https://getanyapi.com/api/google-ads).","operationId":"google_ads_ad_details","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"url":"https://adstransparency.google.com/advertiser/AR01614014350098432001/creative/CR10449491775734153217"},"schema":{"additionalProperties":false,"example":{"url":"https://adstransparency.google.com/advertiser/AR01614014350098432001/creative/CR10449491775734153217"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"url":{"description":"Google Ads Transparency Center creative URL (e.g. \"https://adstransparency.google.com/advertiser/AR.../creative/CR...\").","type":"string"}},"required":["url"],"title":"Google Ads ad details input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"oneOf":[{"type":"null"},{"additionalProperties":false,"properties":{"advertiserId":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"creativeId":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"firstShown":{"description":"ISO 8601 date.","type":"string"},"format":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"impressionsMax":{"type":"integer"},"impressionsMin":{"type":"integer"},"lastShown":{"description":"ISO 8601 date.","type":"string"},"url":{"description":"Google Ads Transparency Center URL for the creative.","type":"string"},"variations":{"description":"Populated whenever the provider has data for the entity.","items":{"properties":{"allText":{"type":"string"},"description":{"type":"string"},"destinationUrl":{"type":"string"},"headline":{"type":"string"},"imageUrl":{"type":"string"}},"required":["headline","description","allText","destinationUrl","imageUrl"],"type":"object"},"type":"array","x-anyapi-must-populate":true}},"required":["advertiserId","creativeId","format","firstShown","lastShown","impressionsMin","impressionsMax","variations"],"type":"object"}]},"found":{"type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"Google Ads ad details output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"Google Ads Ad Details","tags":["google-ads"],"x-mint":{"href":"/api-reference/google-ads/ad-details"},"x-payment-info":{"price":{"amount":"0.001200","currency":"USD","mode":"fixed"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"amount":"0.001200","currency":"USD","minimumUsd":"0.001000","mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"amount":"0.001200","currency":"USD","minimumUsd":null,"mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/google_ads.advertiser_search":{"post":{"description":"Search the Google Ads Transparency Center for advertisers by keyword and get matching advertiser IDs, regions, and estimated ad counts as clean JSON.\n\n**Price:** \\$1.20 per 1,000 requests (flat per request - same cost regardless of results returned).\n\n**Routing:** one lane serves this API today, so a failed attempt has nowhere to fail over to. Payment outcome follows the selected rail's settlement policy.\n\n**Catalog:** [Google Ads Advertiser Search pricing and uptime](https://getanyapi.com/api/google-ads/advertiser-search) - live USD price, lane routing, and measured 30-day uptime. [Every Google Ads endpoint](https://getanyapi.com/api/google-ads).","operationId":"google_ads_advertiser_search","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"query":"lululemon"},"schema":{"additionalProperties":false,"example":{"query":"lululemon"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"query":{"description":"Advertiser name or keyword to search for (e.g. \"lululemon\").","type":"string"},"region":{"description":"Two-letter country code to scope results (e.g. \"AU\", \"CA\"). Defaults to US.","type":"string"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true}},"required":["query"],"title":"Google Ads advertiser search input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"oneOf":[{"type":"null"},{"additionalProperties":false,"properties":{"advertisers":{"description":"Populated whenever the provider has data for the entity.","items":{"properties":{"adsEstimate":{"description":"Estimated number of ads for this advertiser/region.","type":"integer"},"advertiserId":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"name":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"region":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true}},"required":["name","advertiserId","region","adsEstimate"],"type":"object"},"type":"array","x-anyapi-must-populate":true}},"required":["advertisers"],"type":"object"}]},"found":{"type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"Google Ads advertiser search output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"Google Ads Advertiser Search","tags":["google-ads"],"x-mint":{"href":"/api-reference/google-ads/advertiser-search"},"x-payment-info":{"price":{"amount":"0.001200","currency":"USD","mode":"fixed"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"amount":"0.001200","currency":"USD","minimumUsd":"0.001000","mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"amount":"0.001200","currency":"USD","minimumUsd":null,"mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/google_ads.company_ads":{"post":{"description":"List the ads a company is running from the Google Ads Transparency Center by domain or advertiser ID (creative ID, format, ad URL, and first/last shown dates) with cursor pagination.\n\n**Price:** \\$1.20 per 1,000 requests (flat per request - same cost regardless of results returned).\n\n**Routing:** one lane serves this API today, so a failed attempt has nowhere to fail over to. Payment outcome follows the selected rail's settlement policy.\n\n**Catalog:** [Google Ads Company Ads pricing and uptime](https://getanyapi.com/api/google-ads/company-ads) - live USD price, lane routing, and measured 30-day uptime. [Every Google Ads endpoint](https://getanyapi.com/api/google-ads).","operationId":"google_ads_company_ads","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"domain":"lululemon.com"},"schema":{"additionalProperties":false,"example":{"domain":"lululemon.com"},"properties":{"advertiserId":{"description":"Advertiser ID. Provide either domain or advertiserId.","type":"string"},"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"cursor":{"description":"Opaque pagination cursor from a previous response's nextCursor.","type":"string"},"domain":{"description":"Company domain (e.g. \"lululemon.com\"). Provide either domain or advertiserId.","type":"string"},"endDate":{"description":"Only return ads first shown on or before this date, format YYYY-MM-DD (e.g. 2024-12-31).","type":"string"},"format":{"description":"Ad format filter.","enum":["text","image","video"],"type":"string"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"platform":{"description":"Platform filter.","enum":["google_maps","google_play","google_search","google_shopping","youtube"],"type":"string"},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"region":{"description":"Two-letter country code to scope results (e.g. \"US\", \"AU\").","type":"string"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"startDate":{"description":"Only return ads first shown on or after this date, format YYYY-MM-DD (e.g. 2024-01-01).","type":"string"},"topic":{"description":"Search topic. \"political\" requires a region.","enum":["all","political"],"type":"string"}},"title":"Google Ads company ads input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"oneOf":[{"type":"null"},{"additionalProperties":false,"properties":{"ads":{"description":"Populated whenever the provider has data for the entity.","items":{"properties":{"adUrl":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"advertiserId":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"advertiserName":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"creativeId":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"domain":{"description":"Registrable domain the ad links to.","type":"string"},"firstShown":{"description":"ISO 8601 date.","type":"string"},"format":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"imageUrl":{"type":"string"},"lastShown":{"description":"ISO 8601 date.","type":"string"}},"required":["advertiserId","creativeId","advertiserName","format","adUrl","imageUrl","firstShown","lastShown"],"type":"object"},"type":"array","x-anyapi-must-populate":true},"adsEstimate":{"description":"Estimated total number of ads.","type":"integer"},"nextCursor":{"description":"Opaque cursor for the next page of ads, or null when this lane has no more. Pass it back as cursor to continue.","type":["string","null"]}},"required":["nextCursor","adsEstimate","ads"],"type":"object"}]},"found":{"type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"Google Ads company ads output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"Google Ads Company Ads","tags":["google-ads"],"x-mint":{"href":"/api-reference/google-ads/company-ads"},"x-payment-info":{"price":{"amount":"0.001200","currency":"USD","mode":"fixed"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"amount":"0.001200","currency":"USD","minimumUsd":"0.001000","mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"amount":"0.001200","currency":"USD","minimumUsd":null,"mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/google_ads.search":{"post":{"description":"Pull the ads an advertiser is currently running from the Google Ads Transparency Center (creative details, formats, and run dates) as clean JSON.\n\n**Price:** billed per result - \\$0.06 per 1,000 requests base + \\$1.43 per 1,000 results, capped at \\$28.70 per 1,000 requests.\n\n**Routing:** one lane serves this API today, so a failed attempt has nowhere to fail over to. Payment outcome follows the selected rail's settlement policy.\n\n**Catalog:** [Google Ads Transparency pricing and uptime](https://getanyapi.com/api/google-ads/search) - live USD price, lane routing, and measured 30-day uptime. [Every Google Ads endpoint](https://getanyapi.com/api/google-ads).","operationId":"google_ads_search","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"limit":3,"url":"https://adstransparency.google.com/?region=US\u0026domain=nike.com"},"schema":{"additionalProperties":false,"example":{"limit":3,"url":"https://adstransparency.google.com/?region=US\u0026domain=nike.com"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"limit":{"description":"Maximum number of results to return (1-20, default 20). You are billed per result returned, so a lower limit costs less.","maximum":20,"minimum":1,"type":"integer"},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"url":{"description":"A Google Ads Transparency Center URL for a selected advertiser or domain (e.g. https://adstransparency.google.com/advertiser/AR01614014350098432001?region=US).","type":"string"}},"required":["url"],"title":"Google Ads Transparency search input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"description":"The result wrapper, or null when nothing was found.","oneOf":[{"type":"null"},{"additionalProperties":false,"properties":{"items":{"description":"Ad records from the Transparency Center: advertiser, ad format, creative details, preview URL, and first/last shown dates. Populated whenever the provider has data for the entity.","items":{"properties":{"advertiser":{"description":"Advertiser display name. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"advertiserId":{"description":"Google Ads advertiser identifier.","type":"string"},"firstShownUtc":{"description":"UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds. When the ad was first shown.","type":"number"},"format":{"description":"Ad format, e.g. TEXT, IMAGE, VIDEO.","type":"string"},"id":{"description":"Google Ads creative identifier. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"lastShownUtc":{"description":"UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds. When the ad was last shown.","type":"number"},"numServedDays":{"description":"Number of days the ad has been served.","type":"integer"},"previewUrl":{"description":"URL to a rendered preview of the creative.","type":"string"},"url":{"description":"Ads Transparency Center URL for the creative. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"variations":{"description":"Creative variations for the ad, each with image, headline, and body text where present.","items":{"properties":{"headline":{"description":"Creative headline text.","type":"string"},"imageUrl":{"description":"Creative image URL.","type":"string"},"text":{"description":"Creative body/description text.","type":"string"}},"type":"object"},"type":"array"}},"required":["id","url"],"type":"object"},"type":"array","x-anyapi-must-populate":true}},"required":["items"],"type":"object"}]},"found":{"description":"True when at least one ad record was returned.","type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"Google Ads Transparency search output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"Google Ads Transparency","tags":["google-ads"],"x-mint":{"href":"/api-reference/google-ads/search"},"x-payment-info":{"price":{"currency":"USD","max":"0.028700","min":"0.000060","mode":"dynamic"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"currency":"USD","max":"0.028700","min":"0.001000","minimumUsd":"0.001000","mode":"dynamic","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"currency":"USD","max":"0.028700","min":"0.000060","minimumUsd":null,"mode":"dynamic","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/google_finance.quote":{"post":{"description":"Fetch a live quote for any stock, index, ETF, mutual fund, currency pair, or crypto symbol: name, current price, the absolute and percent change on the day, quote currency, exchange and market state, plus intraday and reference figures (open, day high/low, previous close, volume, market cap, and the 52-week range).\n\n**Price:** billed per result - \\$0.55 per 1,000 requests base + \\$1.65 per 1,000 results, capped at \\$2.20 per 1,000 requests.\n\n**Routing:** one lane serves this API today, so a failed attempt has nowhere to fail over to. Payment outcome follows the selected rail's settlement policy.\n\n**Catalog:** [Google Finance Quote pricing and uptime](https://getanyapi.com/api/google-finance/quote) - live USD price, lane routing, and measured 30-day uptime. [Every Google Finance endpoint](https://getanyapi.com/api/google-finance).","operationId":"google_finance_quote","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"symbol":"AAPL:NASDAQ"},"schema":{"additionalProperties":false,"example":{"symbol":"AAPL:NASDAQ"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"symbol":{"description":"The symbol to quote. US stocks use a plain ticker (e.g. AAPL, TSLA); non-US stocks add a market suffix (e.g. VOW3.DE, BABA.HK, BARC.L); indices use a caret (e.g. ^GSPC, ^DJI); crypto and currencies use pair form (e.g. BTC-USD, EURUSD=X); mutual funds and futures use their symbol (e.g. VFIAX, ES=F). Common alternate forms are accepted and normalized (e.g. AAPL:NASDAQ, .DJI, BTC/USD). Exact symbols only, not a company-name search.","type":"string"}},"required":["symbol"],"title":"Google Finance quote input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"description":"Result payload, or null when the symbol did not resolve.","oneOf":[{"type":"null"},{"additionalProperties":false,"properties":{"items":{"description":"The quote for the requested symbol: name, current price, day change (absolute and percent), quote currency, exchange and market state, plus intraday and reference figures. Up to one element (empty when the symbol did not resolve). Populated whenever the provider has data for the entity.","items":{"properties":{"asOfUtc":{"description":"UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds.","type":"number"},"ask":{"description":"Current ask price.","type":"number"},"assetType":{"description":"Instrument class (e.g. EQUITY, ETF, CRYPTOCURRENCY, CURRENCY, INDEX, MUTUALFUND, FUTURE).","type":"string"},"averageVolume":{"description":"Average daily trading volume.","type":"number"},"bid":{"description":"Current bid price.","type":"number"},"change":{"description":"Absolute price change on the day, in the quote currency.","type":"number"},"changePercent":{"description":"Percent price change on the day.","type":"number"},"currency":{"description":"ISO currency the quote is priced in (e.g. USD). Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"dayHigh":{"description":"Highest price so far in the current session.","type":"number"},"dayLow":{"description":"Lowest price so far in the current session.","type":"number"},"exchange":{"description":"Exchange the instrument trades on (e.g. NasdaqGS). Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"fiftyTwoWeekHigh":{"description":"Highest price over the trailing 52 weeks.","type":"number"},"fiftyTwoWeekLow":{"description":"Lowest price over the trailing 52 weeks.","type":"number"},"marketCap":{"description":"Market capitalization in the quote currency.","type":"number"},"marketState":{"description":"Current market state (e.g. REGULAR, PRE, POST, CLOSED).","type":"string"},"name":{"description":"Instrument or company name. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"open":{"description":"Opening price for the current session.","type":"number"},"previousClose":{"description":"Previous session close price.","type":"number"},"price":{"description":"Current price in the quote currency.","type":"number"},"symbol":{"description":"Resolved ticker symbol for the quote. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"volume":{"description":"Traded volume for the current session.","type":"number"}},"required":["symbol","price"],"type":"object"},"type":"array","x-anyapi-must-populate":true}},"required":["items"],"type":"object"}]},"found":{"description":"True when the symbol resolved to a quote.","type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"Google Finance quote output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"Google Finance Quote","tags":["google-finance"],"x-mint":{"href":"/api-reference/google-finance/quote"},"x-payment-info":{"price":{"currency":"USD","max":"0.002200","min":"0.000550","mode":"dynamic"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"currency":"USD","max":"0.002200","min":"0.001000","minimumUsd":"0.001000","mode":"dynamic","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"currency":"USD","max":"0.002200","min":"0.000550","minimumUsd":null,"mode":"dynamic","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/google_shopping.search":{"post":{"description":"Search Google Shopping by keyword and get up to 10 product offers (title, price, store, rating, and link), localized by country and language.\n\n**Price:** \\$18.00 per 1,000 requests (flat per request - same cost regardless of results returned).\n\n**Routing:** 2 independent lanes are available in execution order. A failed attempt uses the next lane only when the request's payment authorizes that lane's price; the normalized schema stays the same.\n\n**Catalog:** [Google Shopping Search pricing and uptime](https://getanyapi.com/api/google-shopping/search) - live USD price, lane routing, and measured 30-day uptime. [Every Google Shopping endpoint](https://getanyapi.com/api/google-shopping).","operationId":"google_shopping_search","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"limit":10,"query":"airpods"},"schema":{"additionalProperties":false,"example":{"limit":10,"query":"airpods"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"condition":{"description":"Only return products in this condition (e.g. \"USED\"); defaults to any condition.","enum":["ANY","NEW","USED","REFURBISHED"],"type":"string"},"country":{"default":"us","description":"ISO 3166-1 alpha-2 country code for localized results (e.g. \"us\", \"gb\", \"de\").","type":"string"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"language":{"default":"en","description":"ISO 639-1 language code for results (e.g. \"en\", \"es\", \"fr\").","type":"string"},"limit":{"description":"Maximum number of results to return (1-10, default 10).","maximum":10,"minimum":1,"type":"integer"},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"query":{"description":"Product name, brand, or keywords to search for (e.g. \"Nike running shoes\").","type":"string"},"requireFields":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Name the output fields this request must be able to return, for example `listPrice` or `discountPercent`, and it is served only by a source that returns every one of them. Fields you do not name are still returned whenever the serving source has them. This can raise your price: when the cheapest source cannot return a named field, a dearer source serves, and you are quoted and charged its price. A named field can still be absent on a product that genuinely lacks it. Naming a combination that no single source returns together is refused as invalid input, with no charge.","items":{"enum":["brand","currency","discountPercent","listPrice","listPriceText","price","priceText","productId","rating","reviewsCount","seller"],"type":"string"},"type":"array","uniqueItems":true},"sortBy":{"description":"Sort order for results (e.g. \"LOWEST_PRICE\"); defaults to relevance.","enum":["BEST_MATCH","LOWEST_PRICE","HIGHEST_PRICE","TOP_RATED"],"type":"string"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true}},"required":["query"],"title":"Google Shopping search input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"description":"Search result wrapper, or null when nothing matched.","oneOf":[{"type":"null"},{"additionalProperties":false,"properties":{"items":{"description":"Matching Google Shopping product offers. Populated whenever the provider has data for the entity.","items":{"properties":{"brand":{"description":"Product brand; empty when not reported.","type":"string"},"currency":{"description":"Price currency code, e.g. \"USD\"; empty when not reported.","type":"string"},"discountPercent":{"description":"Discount label when on sale, e.g. \"23% OFF\"; empty otherwise.","type":"string"},"image":{"description":"Primary product image URL. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"listPrice":{"description":"Pre-discount list price as a numeric amount; 0 when not on sale or reported only as text.","type":"number"},"listPriceText":{"description":"Pre-discount list price as displayed, e.g. \"$130\"; empty when not applicable.","type":"string"},"price":{"description":"Current price as a numeric amount; 0 when the lane reports price only as text (see priceText).","type":"number"},"priceText":{"description":"Current price as displayed, e.g. \"$99.99\"; empty when the lane reports a numeric price instead.","type":"string"},"productId":{"description":"Provider product identifier.","type":"string"},"rating":{"description":"Average product rating, 0-5; 0 when unrated.","type":"number"},"reviewsCount":{"description":"Number of ratings / reviews; 0 when none reported.","type":"integer"},"seller":{"description":"Store / seller name offering the product, e.g. \"Target\".","type":"string"},"title":{"description":"Product title. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"url":{"description":"Google Shopping product page URL (query retained; it encodes the product identity). Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true}},"required":["title","url"],"type":"object"},"type":"array","x-anyapi-must-populate":true}},"required":["items"],"type":"object"}]},"found":{"description":"True when the search returned at least one product offer.","type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"Google Shopping search output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"Google Shopping Search","tags":["google-shopping"],"x-mint":{"href":"/api-reference/google-shopping/search"},"x-payment-info":{"price":{"amount":"0.018000","currency":"USD","mode":"fixed"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"amount":"0.018000","currency":"USD","minimumUsd":"0.001000","mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"amount":"0.018000","currency":"USD","minimumUsd":null,"mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/hackernews.profile":{"post":{"description":"Get a Hacker News user's public profile by username - karma, bio, and account details as clean JSON.\n\n**Price:** \\$1.50 per 1,000 requests (flat per request - same cost regardless of results returned).\n\n**Routing:** 2 independent lanes are available in execution order. A failed attempt uses the next lane only when the request's payment authorizes that lane's price; the normalized schema stays the same.\n\n**Catalog:** [Hacker News Profile pricing and uptime](https://getanyapi.com/api/hackernews/profile) - live USD price, lane routing, and measured 30-day uptime. [Every Hackernews endpoint](https://getanyapi.com/api/hackernews).","operationId":"hackernews_profile","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"handle":"pg"},"schema":{"additionalProperties":false,"example":{"handle":"pg"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"handle":{"description":"Hacker News username, e.g. \"pg\".","type":"string"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true}},"required":["handle"],"title":"Hacker News profile input","type":"object","x-aliases":{"username":"handle"}}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"oneOf":[{"type":"null"},{"properties":{"bio":{"type":"string"},"karma":{"type":"integer"},"username":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true}},"required":["username","bio","karma"],"type":"object"}]},"found":{"type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"Hacker News profile output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"Hacker News Profile","tags":["hackernews"],"x-mint":{"href":"/api-reference/hackernews/profile"},"x-payment-info":{"price":{"amount":"0.001500","currency":"USD","mode":"fixed"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"amount":"0.001500","currency":"USD","minimumUsd":"0.001000","mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"amount":"0.001500","currency":"USD","minimumUsd":null,"mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/hackernews.search":{"post":{"description":"Search Hacker News by keyword - matching stories with title, link, author, points, and comment count as clean JSON.\n\n**Price:** \\$1.50 per 1,000 requests (flat per request - same cost regardless of results returned).\n\n**Routing:** 2 independent lanes are available in execution order. A failed attempt uses the next lane only when the request's payment authorizes that lane's price; the normalized schema stays the same.\n\n**Catalog:** [Hacker News Search pricing and uptime](https://getanyapi.com/api/hackernews/search) - live USD price, lane routing, and measured 30-day uptime. [Every Hackernews endpoint](https://getanyapi.com/api/hackernews).","operationId":"hackernews_search","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"query":"ai"},"schema":{"additionalProperties":false,"example":{"query":"ai"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"query":{"description":"Search keyword, e.g. \"ai\".","type":"string"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"tags":{"description":"Optional result filter, e.g. \"story\" or \"comment\".","type":"string"}},"required":["query"],"title":"Hacker News search input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"description":"Result payload, or null when nothing was found.","oneOf":[{"type":"null"},{"additionalProperties":false,"properties":{"results":{"description":"Matching Hacker News stories. Populated whenever the provider has data for the entity.","items":{"properties":{"author":{"description":"Submitting user's username. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"comments":{"description":"Number of comments on the story.","type":"integer"},"createdUtc":{"description":"UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds. Populated whenever the provider has data for the entity.","type":"number","x-anyapi-must-populate":true},"id":{"description":"Hacker News item id. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"permalink":{"description":"Permalink to the item on news.ycombinator.com.","type":"string"},"points":{"description":"Story score (upvotes).","type":"integer"},"title":{"description":"Story title. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"url":{"description":"Story link.","type":"string"}},"required":["id","title","url","author","points","comments","createdUtc"],"type":"object"},"type":"array","x-anyapi-must-populate":true}},"required":["results"],"type":"object"}]},"found":{"description":"True when the search returned at least one story.","type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"Hacker News search output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"Hacker News Search","tags":["hackernews"],"x-mint":{"href":"/api-reference/hackernews/search"},"x-payment-info":{"price":{"amount":"0.001500","currency":"USD","mode":"fixed"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"amount":"0.001500","currency":"USD","minimumUsd":"0.001000","mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"amount":"0.001500","currency":"USD","minimumUsd":null,"mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/hackernews.story":{"post":{"description":"Get a Hacker News story by id - title, link, author, points, and comment count as clean JSON.\n\n**Price:** \\$1.50 per 1,000 requests (flat per request - same cost regardless of results returned).\n\n**Routing:** 2 independent lanes are available in execution order. A failed attempt uses the next lane only when the request's payment authorizes that lane's price; the normalized schema stays the same.\n\n**Catalog:** [Hacker News Story pricing and uptime](https://getanyapi.com/api/hackernews/story) - live USD price, lane routing, and measured 30-day uptime. [Every Hackernews endpoint](https://getanyapi.com/api/hackernews).","operationId":"hackernews_story","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"id":"47340079"},"schema":{"additionalProperties":false,"example":{"id":"47340079"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"id":{"description":"Hacker News story id, e.g. \"47340079\".","type":"string"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true}},"required":["id"],"title":"Hacker News story input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"description":"Story payload, or null when the id did not resolve.","oneOf":[{"type":"null"},{"properties":{"author":{"description":"Submitting user's username. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"comments":{"description":"Number of comments on the story.","type":"integer"},"createdUtc":{"description":"UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds. Populated whenever the provider has data for the entity.","type":"number","x-anyapi-must-populate":true},"id":{"description":"Hacker News item ID of the story.","type":"string"},"permalink":{"description":"Permalink to the item on news.ycombinator.com.","type":"string"},"points":{"description":"Story score (upvotes).","type":"integer"},"title":{"description":"Story title. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"url":{"description":"Story link.","type":"string"}},"required":["title","url","author","points","comments","createdUtc"],"type":"object"}]},"found":{"description":"True when the story id resolved.","type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"Hacker News story output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"Hacker News Story","tags":["hackernews"],"x-mint":{"href":"/api-reference/hackernews/story"},"x-payment-info":{"price":{"amount":"0.001500","currency":"USD","mode":"fixed"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"amount":"0.001500","currency":"USD","minimumUsd":"0.001000","mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"amount":"0.001500","currency":"USD","minimumUsd":null,"mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/hackernews.story_comments":{"post":{"description":"List the comments on a Hacker News story by id - text, author, and timestamp as clean JSON.\n\n**Price:** \\$1.50 per 1,000 requests (flat per request - same cost regardless of results returned).\n\n**Routing:** 2 independent lanes are available in execution order. A failed attempt uses the next lane only when the request's payment authorizes that lane's price; the normalized schema stays the same.\n\n**Catalog:** [Hacker News Story Comments pricing and uptime](https://getanyapi.com/api/hackernews/story-comments) - live USD price, lane routing, and measured 30-day uptime. [Every Hackernews endpoint](https://getanyapi.com/api/hackernews).","operationId":"hackernews_story_comments","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"id":"47340079"},"schema":{"additionalProperties":false,"example":{"id":"47340079"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"id":{"description":"Hacker News story id, e.g. \"47340079\".","type":"string"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true}},"required":["id"],"title":"Hacker News story comments input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"description":"Result payload, or null when the id did not resolve.","oneOf":[{"type":"null"},{"additionalProperties":false,"properties":{"comments":{"description":"Comments on the story. Populated whenever the provider has data for the entity.","items":{"properties":{"author":{"description":"Commenting user's username. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"createdUtc":{"description":"UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds. Populated whenever the provider has data for the entity.","type":"number","x-anyapi-must-populate":true},"id":{"description":"Hacker News comment id. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"parentId":{"description":"Id of the parent item (story or comment) this reply belongs to.","type":"string"},"permalink":{"description":"Permalink to the item on news.ycombinator.com.","type":"string"},"postId":{"description":"Hacker News item ID of the story the comment belongs to.","type":"string"},"text":{"description":"Comment body text.","type":"string"}},"required":["id","parentId","author","text","createdUtc"],"type":"object"},"type":"array","x-anyapi-must-populate":true}},"required":["comments"],"type":"object"}]},"found":{"description":"True when the story id resolved and comments were returned.","type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"Hacker News story comments output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"Hacker News Story Comments","tags":["hackernews"],"x-mint":{"href":"/api-reference/hackernews/story-comments"},"x-payment-info":{"price":{"amount":"0.001500","currency":"USD","mode":"fixed"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"amount":"0.001500","currency":"USD","minimumUsd":"0.001000","mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"amount":"0.001500","currency":"USD","minimumUsd":null,"mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/indeed.jobs":{"post":{"description":"Search Indeed job listings by keyword, location, and country, with up to 20 normalized job records per request.\n\n**Price:** billed per result - \\$0.88 per 1,000 requests base + \\$0.09 per 1,000 results, capped at \\$2.64 per 1,000 requests.\n\n**Routing:** one lane serves this API today, so a failed attempt has nowhere to fail over to. Payment outcome follows the selected rail's settlement policy.\n\n**Catalog:** [Indeed Jobs pricing and uptime](https://getanyapi.com/api/indeed/jobs) - live USD price, lane routing, and measured 30-day uptime. [Every Indeed endpoint](https://getanyapi.com/api/indeed).","operationId":"indeed_jobs","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"limit":3,"location":"Austin, TX","query":"data analyst"},"schema":{"additionalProperties":false,"example":{"limit":3,"location":"Austin, TX","query":"data analyst"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"country":{"default":"us","description":"Two-letter country site code (e.g. us, uk, de).","type":"string"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"limit":{"description":"Maximum number of results to return (1-20, default 20). You are billed per result returned, so a lower limit costs less.","maximum":20,"minimum":1,"type":"integer"},"location":{"description":"City, state, zip, or 'remote'.","type":"string"},"postedLimit":{"description":"Only return jobs posted within this window: 24h (past day) or week (past 7 days). Omit for all dates.","enum":["24h","week"],"type":"string"},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"query":{"description":"Job search keywords (e.g. software engineer).","type":"string"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true}},"required":["query"],"title":"Indeed Jobs input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"oneOf":[{"type":"null"},{"additionalProperties":false,"properties":{"items":{"description":"Job listing records: title, employer, location, salary when available, job type, posting date, and description. Populated whenever the provider has data for the entity.","items":{"properties":{"admin2Code":{"description":"Second-level administrative division code (county) for the job location.","type":"string"},"applyUrl":{"description":"External URL that starts the application, usually the employer's own tracking system.","type":"string"},"city":{"type":"string"},"company":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"companyDescription":{"description":"Short employer description as Indeed publishes it.","type":"string"},"companyRevenue":{"description":"Employer revenue band as Indeed words it.","type":"string"},"companySize":{"description":"Employer headcount band as Indeed words it (e.g. \"501 to 1,000\").","type":"string"},"companyUrl":{"description":"Indeed company page URL for the employer.","type":"string"},"companyWebsite":{"description":"Employer's own website.","type":"string"},"country":{"type":"string"},"datePublished":{"description":"ISO 8601 publish date.","type":"string"},"description":{"description":"Plain-text job description.","type":"string"},"discoveredUtc":{"description":"UTC epoch timestamp in seconds (Unix time) when the listing appeared on Indeed. Multiply by 1000 for a JS Date in milliseconds.","type":"number"},"expired":{"type":"boolean"},"jobId":{"description":"Indeed job key. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"language":{"description":"Language code of the posting, e.g. en.","type":"string"},"latitude":{"description":"Latitude of the job location.","type":"number"},"logoUrl":{"description":"Employer logo image URL.","type":"string"},"longitude":{"description":"Longitude of the job location.","type":"number"},"postalCode":{"type":"string"},"rating":{"description":"Employer star rating on Indeed.","type":"number"},"reviewCount":{"description":"Number of employer reviews on Indeed.","type":"integer"},"salaryCurrency":{"type":"string"},"salaryMax":{"type":"number"},"salaryMin":{"type":"number"},"salaryUnit":{"description":"Salary period, e.g. YEAR or HOUR.","type":"string"},"state":{"type":"string"},"streetAddress":{"description":"Street address of the job location.","type":"string"},"title":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"url":{"description":"Indeed job posting URL. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true}},"required":["jobId","title","url"],"type":"object"},"type":"array","x-anyapi-must-populate":true}},"required":["items"],"type":"object"}]},"found":{"type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"Indeed Jobs output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"Indeed Jobs","tags":["indeed"],"x-mint":{"href":"/api-reference/indeed/jobs"},"x-payment-info":{"price":{"currency":"USD","max":"0.002640","min":"0.000880","mode":"dynamic"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"currency":"USD","max":"0.002640","min":"0.001000","minimumUsd":"0.001000","mode":"dynamic","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"currency":"USD","max":"0.002640","min":"0.000880","minimumUsd":null,"mode":"dynamic","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/instagram.audio_reels":{"post":{"description":"List Instagram reels that use a given audio track by audio id.\n\n**Price:** \\$1.20 per 1,000 requests (flat per request - same cost regardless of results returned).\n\n**Routing:** 2 independent lanes are available in execution order. A failed attempt uses the next lane only when the request's payment authorizes that lane's price; the normalized schema stays the same.\n\n**Catalog:** [Instagram Reels by Audio pricing and uptime](https://getanyapi.com/api/instagram/audio-reels) - live USD price, lane routing, and measured 30-day uptime. [Every Instagram endpoint](https://getanyapi.com/api/instagram).","operationId":"instagram_audio_reels","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"audioId":"1392969992841787"},"schema":{"additionalProperties":false,"example":{"audioId":"1392969992841787"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"audioId":{"description":"Audio identifier from the Instagram audio page URL.","type":"string"},"cursor":{"description":"Pagination cursor returned by a previous response.","type":"string"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true}},"required":["audioId"],"title":"Instagram Reels by Audio input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"oneOf":[{"type":"null"},{"additionalProperties":false,"properties":{"hasMore":{"type":"boolean"},"nextCursor":{"description":"Opaque cursor for the next page of reels, or null when this lane has no more. Pass it back as cursor to continue.","type":["string","null"]},"reels":{"description":"Populated whenever the provider has data for the entity.","items":{"properties":{"avatarUrl":{"description":"Profile picture URL of the reel's author.","type":"string"},"caption":{"description":"Reel caption text.","type":"string"},"code":{"type":"string"},"comments":{"type":"integer"},"createdUtc":{"description":"UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds.","type":"number"},"displayName":{"description":"Display name of the reel's author.","type":"string"},"handle":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"id":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"image":{"description":"Thumbnail image URL for the reel.","type":"string"},"likes":{"type":"integer"},"plays":{"type":"integer"},"verified":{"description":"True when the author's account carries a verified badge.","type":"boolean"}},"required":["id","code","likes","comments","plays","handle"],"type":"object"},"type":"array","x-anyapi-must-populate":true}},"required":["nextCursor","hasMore","reels"],"type":"object"}]},"found":{"type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"Instagram Reels by Audio output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"Instagram Reels by Audio","tags":["instagram"],"x-mint":{"href":"/api-reference/instagram/audio-reels"},"x-payment-info":{"price":{"amount":"0.001200","currency":"USD","mode":"fixed"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"amount":"0.001200","currency":"USD","minimumUsd":"0.001000","mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"amount":"0.001200","currency":"USD","minimumUsd":null,"mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/instagram.basic_profile":{"post":{"description":"Fetch an Instagram account's core public profile fields (followers, posts, bio, verification) by user id.\n\n**Price:** \\$1.20 per 1,000 requests (flat per request - same cost regardless of results returned).\n\n**Routing:** 3 independent lanes are available in execution order. A failed attempt uses the next lane only when the request's payment authorizes that lane's price; the normalized schema stays the same.\n\n**Catalog:** [Instagram Basic Profile pricing and uptime](https://getanyapi.com/api/instagram/basic-profile) - live USD price, lane routing, and measured 30-day uptime. [Every Instagram endpoint](https://getanyapi.com/api/instagram).","operationId":"instagram_basic_profile","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"userId":"314216"},"schema":{"additionalProperties":false,"example":{"userId":"314216"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"userId":{"description":"Instagram numeric user id (the account's internal all-digits id, e.g. 314216), NOT the @handle or profile URL. Passing a handle here returns no profile.","type":"string"}},"required":["userId"],"title":"Instagram Basic Profile input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"oneOf":[{"type":"null"},{"properties":{"avatarUrl":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"bio":{"type":"string"},"displayName":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"externalUrl":{"type":"string"},"followers":{"type":"integer"},"following":{"type":"integer"},"handle":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"private":{"type":"boolean"},"userId":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"verified":{"type":"boolean"}},"required":["userId","handle","displayName","followers","following","bio","verified","private","externalUrl","avatarUrl"],"type":"object"}]},"found":{"type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"Instagram Basic Profile output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"Instagram Basic Profile","tags":["instagram"],"x-mint":{"href":"/api-reference/instagram/basic-profile"},"x-payment-info":{"price":{"amount":"0.001200","currency":"USD","mode":"fixed"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"amount":"0.001200","currency":"USD","minimumUsd":"0.001000","mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"amount":"0.001200","currency":"USD","minimumUsd":null,"mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/instagram.comment_replies":{"post":{"description":"List the replies to an Instagram comment with cursor pagination (text, author, likes).\n\n**Price:** \\$1.20 per 1,000 requests (flat per request - same cost regardless of results returned).\n\n**Routing:** 3 independent lanes are available in execution order. A failed attempt uses the next lane only when the request's payment authorizes that lane's price; the normalized schema stays the same.\n\n**Catalog:** [Instagram Comment Replies pricing and uptime](https://getanyapi.com/api/instagram/comment-replies) - live USD price, lane routing, and measured 30-day uptime. [Every Instagram endpoint](https://getanyapi.com/api/instagram).","operationId":"instagram_comment_replies","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"commentId":"18126632131325044","url":"https://www.instagram.com/p/C8rKmYvsrck/"},"schema":{"additionalProperties":false,"example":{"commentId":"18126632131325044","url":"https://www.instagram.com/p/C8rKmYvsrck/"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"commentId":{"description":"Instagram comment ID (a comment's id from the Instagram Post Comments endpoint).","type":"string"},"cursor":{"description":"Pagination cursor from a previous response's nextCursor.","type":"string"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"url":{"description":"Full Instagram post or reel URL the comment belongs to.","type":"string"}},"required":["commentId","url"],"title":"Instagram Comment Replies input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"oneOf":[{"type":"null"},{"additionalProperties":false,"properties":{"comments":{"description":"Replies to the requested comment, oldest first. Populated whenever the provider has data for the entity.","items":{"properties":{"author":{"description":"Username of the account that wrote the reply, without the @ prefix. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"avatarUrl":{"description":"URL of the replying account's profile avatar image.","type":"string"},"createdUtc":{"description":"UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds. Populated whenever the provider has data for the entity.","type":"number","x-anyapi-must-populate":true},"id":{"description":"The reply's Instagram comment ID, as a string. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"likes":{"description":"Number of likes on the reply. Omitted when no like count is reported for the reply.","type":"integer"},"text":{"description":"The reply's text content. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"userId":{"description":"Instagram user id of the replying account.","type":"string"},"verified":{"description":"Whether the reply's author has a verified badge.","type":"boolean"}},"required":["id","text","author","verified","createdUtc"],"type":"object"},"type":"array","x-anyapi-must-populate":true},"nextCursor":{"description":"Opaque cursor for the next page of replies, or null when this lane has no more. Pass it back as cursor to continue.","type":["string","null"]}},"required":["comments","nextCursor"],"type":"object"}]},"found":{"type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"Instagram Comment Replies output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"Instagram Comment Replies","tags":["instagram"],"x-mint":{"href":"/api-reference/instagram/comment-replies"},"x-payment-info":{"price":{"amount":"0.001200","currency":"USD","mode":"fixed"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"amount":"0.001200","currency":"USD","minimumUsd":"0.001000","mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"amount":"0.001200","currency":"USD","minimumUsd":null,"mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/instagram.embed":{"post":{"description":"Fetch the public embed HTML for an Instagram profile by handle.\n\n**Price:** \\$1.20 per 1,000 requests (flat per request - same cost regardless of results returned).\n\n**Routing:** one lane serves this API today, so a failed attempt has nowhere to fail over to. Payment outcome follows the selected rail's settlement policy.\n\n**Catalog:** [Instagram Profile Embed pricing and uptime](https://getanyapi.com/api/instagram/embed) - live USD price, lane routing, and measured 30-day uptime. [Every Instagram endpoint](https://getanyapi.com/api/instagram).","operationId":"instagram_embed","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"handle":"nasa"},"schema":{"additionalProperties":false,"example":{"handle":"nasa"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"handle":{"description":"Instagram username without the leading @.","type":"string"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true}},"required":["handle"],"title":"Instagram Profile Embed input","type":"object","x-aliases":{"username":"handle"}}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"oneOf":[{"type":"null"},{"properties":{"html":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true}},"required":["html"],"type":"object"}]},"found":{"type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"Instagram Profile Embed output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"Instagram Profile Embed","tags":["instagram"],"x-mint":{"href":"/api-reference/instagram/embed"},"x-payment-info":{"price":{"amount":"0.001200","currency":"USD","mode":"fixed"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"amount":"0.001200","currency":"USD","minimumUsd":"0.001000","mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"amount":"0.001200","currency":"USD","minimumUsd":null,"mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/instagram.followers":{"post":{"description":"List about the first 50 followers of any public Instagram account by username: follower usernames, names, and profile details. Instagram caps follower lists, so this returns one page, not the whole list.\n\n**Price:** \\$1.50 per 1,000 requests (flat per request - same cost regardless of results returned).\n\n**Routing:** 2 independent lanes are available in execution order. A failed attempt uses the next lane only when the request's payment authorizes that lane's price; the normalized schema stays the same.\n\n**Catalog:** [Instagram Followers pricing and uptime](https://getanyapi.com/api/instagram/followers) - live USD price, lane routing, and measured 30-day uptime. [Every Instagram endpoint](https://getanyapi.com/api/instagram).","operationId":"instagram_followers","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"username":"nasa"},"schema":{"additionalProperties":false,"example":{"username":"nasa"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"cursor":{"description":"Opaque pagination cursor from a previous response's nextCursor. Today every source behind this endpoint returns a single page of about 50 followers and no continuation cursor, so nextCursor comes back empty and there is no further page to request; this parameter is accepted but has nothing to resume from.","type":"string"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"requireFields":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Name the output fields this request must be able to return, for example `private`, and it is served only by a source that returns every one of them. Fields you do not name are still returned whenever the serving source has them. This can raise your price: when the cheapest source cannot return a named field, a dearer source serves, and you are quoted and charged its price. A named field can still be absent on a profile that genuinely lacks it. Naming a combination that no single source returns together is refused as invalid input, with no charge. On a paginated walk it applies to the first page only; later pages stay with the source that page chose, at the price it was quoted.","items":{"enum":["image","name","nextCursor","private","url","verified"],"type":"string"},"type":"array","uniqueItems":true},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"username":{"description":"The Instagram username, user ID, or profile URL whose followers to list (e.g. natgeo).","type":"string"}},"required":["username"],"title":"Instagram followers input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"oneOf":[{"type":"null"},{"additionalProperties":false,"properties":{"items":{"description":"Follower records for the target account. About the first 50, in the order the source returns them, not the account's full follower list - see nextCursor. Populated whenever the provider has data for the entity.","items":{"properties":{"handle":{"description":"The follower's username, without the @ prefix. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"id":{"description":"The follower's numeric Instagram user ID, as a string. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"image":{"description":"URL of the follower's profile picture, with tracking query params stripped. Empty when the upstream omits it.","type":"string"},"name":{"description":"The follower's display name. Empty when the account has none.","type":"string"},"private":{"description":"Whether the follower's account is private.","type":"boolean"},"url":{"description":"Canonical URL of the follower's profile, with tracking query params stripped. Empty when the lane does not return it.","type":"string"},"verified":{"description":"Whether the follower's account is verified.","type":"boolean"}},"required":["id","handle"],"type":"object"},"type":"array","x-anyapi-must-populate":true},"nextCursor":{"description":"Opaque cursor for the next page of followers, or null/empty when there are no more. Empty on every source behind this endpoint today, because each returns a single page of about 50 followers and no continuation. Pass it back as cursor whenever it is non-empty.","type":["string","null"]}},"required":["items"],"type":"object"}]},"found":{"description":"Whether the account was found and returned follower records.","type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"Instagram followers output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"Instagram Followers","tags":["instagram"],"x-mint":{"href":"/api-reference/instagram/followers"},"x-payment-info":{"price":{"amount":"0.001500","currency":"USD","mode":"fixed"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"amount":"0.001500","currency":"USD","minimumUsd":"0.001000","mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"amount":"0.001500","currency":"USD","minimumUsd":null,"mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/instagram.following":{"post":{"description":"List about the first 50 accounts a public Instagram user follows: usernames, names, and profile details. Instagram caps these lists, so this returns one page, not the whole list.\n\n**Price:** \\$1.50 per 1,000 requests (flat per request - same cost regardless of results returned).\n\n**Routing:** 2 independent lanes are available in execution order. A failed attempt uses the next lane only when the request's payment authorizes that lane's price; the normalized schema stays the same.\n\n**Catalog:** [Instagram Following pricing and uptime](https://getanyapi.com/api/instagram/following) - live USD price, lane routing, and measured 30-day uptime. [Every Instagram endpoint](https://getanyapi.com/api/instagram).","operationId":"instagram_following","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"username":"nasa"},"schema":{"additionalProperties":false,"example":{"username":"nasa"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"cursor":{"description":"Opaque pagination cursor from a previous response's nextCursor. Today every source behind this endpoint returns a single page of about 50 accounts and no continuation cursor, so nextCursor comes back empty and there is no further page to request; this parameter is accepted but has nothing to resume from.","type":"string"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"requireFields":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Name the output fields this request must be able to return, for example `private`, and it is served only by a source that returns every one of them. Fields you do not name are still returned whenever the serving source has them. This can raise your price: when the cheapest source cannot return a named field, a dearer source serves, and you are quoted and charged its price. A named field can still be absent on a profile that genuinely lacks it. Naming a combination that no single source returns together is refused as invalid input, with no charge. On a paginated walk it applies to the first page only; later pages stay with the source that page chose, at the price it was quoted.","items":{"enum":["image","name","nextCursor","private","url","verified"],"type":"string"},"type":"array","uniqueItems":true},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"username":{"description":"The Instagram username, user ID, or profile URL whose following list to fetch (e.g. natgeo).","type":"string"}},"required":["username"],"title":"Instagram following input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"oneOf":[{"type":"null"},{"additionalProperties":false,"properties":{"items":{"description":"Records for the accounts the target user follows. About the first 50, in the order the source returns them, not the user's full following list - see nextCursor. Populated whenever the provider has data for the entity.","items":{"properties":{"handle":{"description":"The followed account's username, without the @ prefix. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"id":{"description":"The followed account's numeric Instagram user ID, as a string. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"image":{"description":"URL of the followed account's profile picture, with tracking query params stripped. Empty when the upstream omits it.","type":"string"},"name":{"description":"The followed account's display name. Empty when the account has none.","type":"string"},"private":{"description":"Whether the followed account is private.","type":"boolean"},"url":{"description":"Canonical URL of the followed account's profile, with tracking query params stripped. Empty when the lane does not return it.","type":"string"},"verified":{"description":"Whether the followed account is verified.","type":"boolean"}},"required":["id","handle"],"type":"object"},"type":"array","x-anyapi-must-populate":true},"nextCursor":{"description":"Opaque cursor for the next page of results, or null/empty when there are no more. Empty on every source behind this endpoint today, because each returns a single page of about 50 accounts and no continuation. Pass it back as cursor whenever it is non-empty.","type":["string","null"]}},"required":["items"],"type":"object"}]},"found":{"description":"Whether the account was found and returned following records.","type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"Instagram following output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"Instagram Following","tags":["instagram"],"x-mint":{"href":"/api-reference/instagram/following"},"x-payment-info":{"price":{"amount":"0.001500","currency":"USD","mode":"fixed"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"amount":"0.001500","currency":"USD","minimumUsd":"0.001000","mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"amount":"0.001500","currency":"USD","minimumUsd":null,"mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/instagram.hashtag_analytics":{"post":{"description":"Get analytics for any Instagram hashtag (total post count, related hashtags, and usage signals).\n\n**Price:** billed per result - \\$1.10 per 1,000 requests base + \\$1.87 per 1,000 results, capped at \\$38.50 per 1,000 requests.\n\n**Routing:** one lane serves this API today, so a failed attempt has nowhere to fail over to. Payment outcome follows the selected rail's settlement policy.\n\n**Catalog:** [Instagram Hashtag Analytics pricing and uptime](https://getanyapi.com/api/instagram/hashtag-analytics) - live USD price, lane routing, and measured 30-day uptime. [Every Instagram endpoint](https://getanyapi.com/api/instagram).","operationId":"instagram_hashtag_analytics","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"hashtag":"travel","limit":5},"schema":{"additionalProperties":false,"example":{"hashtag":"travel","limit":5},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"hashtag":{"description":"The Instagram hashtag to analyze, with or without the # symbol (e.g. streetphotography).","type":"string"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"limit":{"description":"Maximum number of results to return (1-20, default 20). You are billed per result returned, so a lower limit costs less.","maximum":20,"minimum":1,"type":"integer"},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true}},"required":["hashtag"],"title":"Instagram hashtag analytics input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"oneOf":[{"type":"null"},{"additionalProperties":false,"properties":{"items":{"description":"Hashtag analytics records: hashtag name, total post count, and related hashtag suggestions. Populated whenever the provider has data for the entity.","items":{"properties":{"difficulty":{"type":"string"},"id":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"name":{"description":"Hashtag (without #). Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"postsCount":{"description":"Total posts using the hashtag.","type":"integer"},"postsFormatted":{"description":"Human-formatted post count (e.g. 793.54 M). Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"url":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true}},"required":["name","url"],"type":"object"},"type":"array","x-anyapi-must-populate":true}},"required":["items"],"type":"object"}]},"found":{"type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"Instagram hashtag analytics output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"Instagram Hashtag Analytics","tags":["instagram"],"x-mint":{"href":"/api-reference/instagram/hashtag-analytics"},"x-payment-info":{"price":{"currency":"USD","max":"0.038500","min":"0.001100","mode":"dynamic"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"currency":"USD","max":"0.038500","min":"0.001100","minimumUsd":"0.001000","mode":"dynamic","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"currency":"USD","max":"0.038500","min":"0.001100","minimumUsd":null,"mode":"dynamic","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/instagram.hashtag_recent_posts":{"post":{"description":"Instagram posts published under a hashtag, newest first, read from its live chronological feed rather than a web search index. Built for monitoring: results arrive within a couple of minutes of posting, so engagement counts are usually still zero and reels do not appear (Instagram keeps those on a separate tab). For engagement-ranked results use instagram.hashtag_top_posts; for older relevance-ranked results use instagram.search_hashtag.\n\n**Price:** \\$1.50 per 1,000 requests (flat per request - same cost regardless of results returned).\n\n**Routing:** 2 independent lanes are available in execution order. A failed attempt uses the next lane only when the request's payment authorizes that lane's price; the normalized schema stays the same.\n\n**Catalog:** [Instagram Hashtag Recent Posts pricing and uptime](https://getanyapi.com/api/instagram/hashtag-recent-posts) - live USD price, lane routing, and measured 30-day uptime. [Every Instagram endpoint](https://getanyapi.com/api/instagram).","operationId":"instagram_hashtag_recent_posts","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"hashtag":"skincare"},"schema":{"additionalProperties":false,"example":{"hashtag":"skincare"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"cursor":{"description":"Pagination cursor from a previous response's nextCursor.","type":"string"},"hashtag":{"description":"Hashtag to monitor, without the leading #.","minLength":1,"type":"string"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true}},"required":["hashtag"],"title":"Instagram hashtag recent posts input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"oneOf":[{"type":"null"},{"additionalProperties":false,"properties":{"nextCursor":{"description":"Opaque cursor for the next page of posts, or null when this lane has no more. Pass it back as cursor to continue.","type":["string","null"]},"posts":{"description":"Posts under the hashtag, newest first. Engagement counts are usually zero because the posts are minutes old. Populated whenever the provider has data for the entity.","items":{"properties":{"avatarUrl":{"description":"Profile picture URL of the author.","type":"string"},"caption":{"description":"Post caption text, including its hashtags. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"carouselCount":{"description":"Number of items in the carousel. Absent on a single-image post.","type":"integer"},"comments":{"description":"Comment count. Usually zero on a post this new.","type":"integer"},"createdUtc":{"description":"UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds. Populated whenever the provider has data for the entity.","type":"number","x-anyapi-must-populate":true},"displayName":{"description":"Display name of the author.","type":"string"},"hashtags":{"description":"Hashtags carried in the caption, each including its leading #. Populated whenever the provider has data for the entity.","items":{"type":"string"},"type":"array","x-anyapi-must-populate":true},"height":{"description":"Original pixel height of the media.","type":"integer"},"id":{"description":"Instagram media id. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"likes":{"description":"Like count. Usually zero on a post this new.","type":"integer"},"locationLat":{"description":"Latitude of the tagged place.","type":"number"},"locationLng":{"description":"Longitude of the tagged place.","type":"number"},"locationName":{"description":"Place name tagged on the post. Absent when the poster tagged none, which is most posts.","type":"string"},"media":{"description":"Cover media for the post. A carousel reports its full size in carouselCount.","items":{"properties":{"type":{"description":"One of photo or video. Videos are rare in this feed; Instagram keeps reels on a separate tab.","type":"string"},"url":{"description":"Image URL. For a video this is the cover frame.","format":"uri","type":"string"}},"required":["type","url"],"type":"object"},"type":"array"},"paidPartnership":{"description":"True when the post is tagged as a paid partnership.","type":"boolean"},"private":{"description":"True when the author's account is private.","type":"boolean"},"productType":{"description":"Instagram product type of the media, for example feed, clips or igtv.","type":"string"},"shortcode":{"description":"Short code in the post permalink. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"url":{"description":"Canonical permalink to the post. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"userId":{"description":"Instagram user id of the author.","type":"string"},"username":{"description":"Username of the account that posted. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"verified":{"description":"True when the author's account carries a verified badge.","type":"boolean"},"width":{"description":"Original pixel width of the media.","type":"integer"}},"required":["id","shortcode","url","caption","username"],"type":"object"},"type":"array","x-anyapi-must-populate":true}},"required":["posts","nextCursor"],"type":"object"}]},"found":{"type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"Instagram hashtag recent posts output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"Instagram Hashtag Recent Posts","tags":["instagram"],"x-mint":{"href":"/api-reference/instagram/hashtag-recent-posts"},"x-payment-info":{"price":{"amount":"0.001500","currency":"USD","mode":"fixed"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"amount":"0.001500","currency":"USD","minimumUsd":"0.001000","mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"amount":"0.001500","currency":"USD","minimumUsd":null,"mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/instagram.hashtag_top_posts":{"post":{"description":"Instagram's own top-ranked posts for a hashtag, read from its live hashtag feed rather than a web search index, with view, like, and comment counts. Reels-heavy and engagement-ranked, so it answers what is performing on a tag right now. For older relevance-ranked results with date and media-type filters use instagram.search_hashtag; for the chronological feed use instagram.hashtag_recent_posts.\n\n**Price:** \\$1.50 per 1,000 requests (flat per request - same cost regardless of results returned).\n\n**Routing:** 2 independent lanes are available in execution order. A failed attempt uses the next lane only when the request's payment authorizes that lane's price; the normalized schema stays the same.\n\n**Catalog:** [Instagram Hashtag Top Posts pricing and uptime](https://getanyapi.com/api/instagram/hashtag-top-posts) - live USD price, lane routing, and measured 30-day uptime. [Every Instagram endpoint](https://getanyapi.com/api/instagram).","operationId":"instagram_hashtag_top_posts","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"hashtag":"skincare"},"schema":{"additionalProperties":false,"example":{"hashtag":"skincare"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"cursor":{"description":"Pagination cursor from a previous response's nextCursor.","type":"string"},"hashtag":{"description":"Hashtag to fetch, without the leading #.","minLength":1,"type":"string"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true}},"required":["hashtag"],"title":"Instagram hashtag top posts input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"oneOf":[{"type":"null"},{"additionalProperties":false,"properties":{"nextCursor":{"description":"Opaque cursor for the next page of posts, or null when this lane has no more. Pass it back as cursor to continue.","type":["string","null"]},"posts":{"description":"Top-ranked posts for the hashtag, ordered by Instagram's engagement model rather than by time. Populated whenever the provider has data for the entity.","items":{"properties":{"avatarUrl":{"description":"Profile picture URL of the posting account. Populated whenever the provider has data for the entity.","format":"uri","type":"string","x-anyapi-must-populate":true},"caption":{"description":"Post caption text, including its hashtags. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"comments":{"description":"Comment count.","type":"integer"},"createdUtc":{"description":"UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds.","type":"number"},"durationSeconds":{"description":"Video duration in seconds. Absent on photo posts.","type":"number"},"id":{"description":"Instagram media id. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"likes":{"description":"Like count. Absent when the account hides it.","type":"integer"},"media":{"description":"Photo and video attachments on the post.","items":{"properties":{"type":{"description":"One of photo or video.","type":"string"},"url":{"description":"Image URL. For a video this is the cover frame.","format":"uri","type":"string"},"videoUrl":{"description":"Playable video file URL. Present only for video items.","format":"uri","type":"string"}},"required":["type","url"],"type":"object"},"type":"array"},"shortcode":{"description":"Short code in the post permalink. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"url":{"description":"Canonical permalink to the post. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"username":{"description":"Username of the account that posted. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"verified":{"description":"True when the posting account is verified.","type":"boolean"},"views":{"description":"Play count. Present on video posts.","type":"integer"}},"required":["id","shortcode","url","caption","username"],"type":"object"},"type":"array","x-anyapi-must-populate":true}},"required":["posts","nextCursor"],"type":"object"}]},"found":{"type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"Instagram hashtag top posts output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"Instagram Hashtag Top Posts","tags":["instagram"],"x-mint":{"href":"/api-reference/instagram/hashtag-top-posts"},"x-payment-info":{"price":{"amount":"0.001500","currency":"USD","mode":"fixed"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"amount":"0.001500","currency":"USD","minimumUsd":"0.001000","mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"amount":"0.001500","currency":"USD","minimumUsd":null,"mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/instagram.highlight_detail":{"post":{"description":"Fetch the details and media items of a single Instagram story highlight by id.\n\n**Price:** \\$1.20 per 1,000 requests (flat per request - same cost regardless of results returned).\n\n**Routing:** one lane serves this API today, so a failed attempt has nowhere to fail over to. Payment outcome follows the selected rail's settlement policy.\n\n**Catalog:** [Instagram Highlight Detail pricing and uptime](https://getanyapi.com/api/instagram/highlight-detail) - live USD price, lane routing, and measured 30-day uptime. [Every Instagram endpoint](https://getanyapi.com/api/instagram).","operationId":"instagram_highlight_detail","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"id":"18201653992314974"},"schema":{"additionalProperties":false,"example":{"id":"18201653992314974"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"id":{"description":"The id of the highlight to retrieve details for.","type":"string"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true}},"required":["id"],"title":"Instagram Highlight Detail input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"description":"The highlight record, or null when nothing was found.","oneOf":[{"type":"null"},{"properties":{"avatarUrl":{"description":"Profile picture URL of the account that owns the highlight.","type":"string"},"coverUrl":{"description":"URL of the highlight cover image. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"createdUtc":{"description":"UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds.","type":"number"},"id":{"description":"Highlight identifier. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"items":{"description":"The media items inside the highlight, in the order the upstream returned them.","items":{"properties":{"code":{"description":"Instagram media shortcode.","type":"string"},"createdUtc":{"description":"UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds.","type":"number"},"durationSeconds":{"description":"Video duration in seconds, when the item is a video.","type":"number"},"hasAudio":{"description":"True when the media carries an audio track.","type":"boolean"},"height":{"description":"Media pixel height.","type":"integer"},"id":{"description":"Media identifier.","type":"string"},"image":{"description":"Direct URL to the media image (highest resolution).","type":"string"},"mediaType":{"description":"Media type: 1 = image, 2 = video.","type":"integer"},"paidPartnership":{"description":"True when the item is tagged as a paid partnership.","type":"boolean"},"productType":{"description":"Instagram product type of the media, for example story.","type":"string"},"videoUrl":{"description":"Direct URL to the media video, when the item is a video.","type":"string"},"width":{"description":"Media pixel width.","type":"integer"}},"type":"object"},"type":"array"},"mediaCount":{"description":"Number of media items in the highlight.","type":"integer"},"ownerHandle":{"description":"Handle of the account that owns the highlight. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"title":{"description":"Highlight title. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true}},"required":["id","title","mediaCount","createdUtc","ownerHandle","coverUrl"],"type":"object"}]},"found":{"description":"True when the highlight was found; false when the lookup returned nothing.","type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"Instagram Highlight Detail output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"Instagram Highlight Detail","tags":["instagram"],"x-mint":{"href":"/api-reference/instagram/highlight-detail"},"x-payment-info":{"price":{"amount":"0.001200","currency":"USD","mode":"fixed"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"amount":"0.001200","currency":"USD","minimumUsd":"0.001000","mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"amount":"0.001200","currency":"USD","minimumUsd":null,"mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/instagram.location_posts":{"post":{"description":"List public Instagram posts tagged at a location, ranked or most recent, with cursor pagination.\n\n**Price:** \\$1.20 per 1,000 requests (flat per request - same cost regardless of results returned).\n\n**Routing:** one lane serves this API today, so a failed attempt has nowhere to fail over to. Payment outcome follows the selected rail's settlement policy.\n\n**Catalog:** [Instagram Location Posts pricing and uptime](https://getanyapi.com/api/instagram/location-posts) - live USD price, lane routing, and measured 30-day uptime. [Every Instagram endpoint](https://getanyapi.com/api/instagram).","operationId":"instagram_location_posts","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"locationId":"103912118089363","sort":"recent"},"schema":{"additionalProperties":false,"example":{"locationId":"103912118089363","sort":"recent"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"cursor":{"description":"Pagination cursor from a previous response's nextCursor.","type":"string"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"locationId":{"description":"Instagram location id, as returned by instagram.search_locations.","type":"string"},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"sort":{"description":"Order the posts by Instagram's top ranking or by newest first. Defaults to ranked.","enum":["ranked","recent"],"type":"string"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true}},"required":["locationId"],"title":"Instagram Location Posts input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"oneOf":[{"type":"null"},{"additionalProperties":false,"properties":{"nextCursor":{"description":"Opaque cursor for the next page of posts, or null when there are no more. Pass it back as cursor to continue.","type":["string","null"]},"posts":{"description":"Public posts tagged at the location. Populated whenever the provider has data for the entity.","items":{"properties":{"altText":{"description":"Instagram's generated accessibility description of the media.","type":"string"},"author":{"description":"Username of the account that posted it, without the leading @. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"authorId":{"description":"The author's numeric Instagram account id, as a string.","type":"string"},"authorPrivate":{"description":"Whether the author's account is private.","type":"boolean"},"authorVerified":{"description":"Whether the author carries Instagram's verified badge.","type":"boolean"},"avatarUrl":{"description":"Author's profile picture URL, as Instagram's CDN serves it.","format":"uri","type":"string"},"caption":{"description":"Post caption text.","type":"string"},"captionEdited":{"description":"Whether the caption has been edited since posting.","type":"boolean"},"carouselCount":{"description":"Number of slides, present on carousel posts only.","type":"integer"},"coauthors":{"description":"Accounts listed as coauthors of the post.","items":{"properties":{"avatarUrl":{"description":"Coauthor's profile picture URL, as Instagram's CDN serves it.","format":"uri","type":"string"},"userId":{"description":"Instagram's numeric account id, as a string.","type":"string"},"username":{"description":"Instagram username without the leading @.","type":"string"}},"required":["username"],"type":"object"},"type":"array"},"comments":{"description":"Number of comments on the post.","type":"integer"},"countsHidden":{"description":"Whether the author has hidden the like and view counts.","type":"boolean"},"createdUtc":{"description":"UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds.","type":"number"},"hasAudio":{"description":"Whether the video carries an audio track.","type":"boolean"},"height":{"description":"Media height in pixels.","type":"integer"},"id":{"description":"The post's numeric Instagram media ID, as a string. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"image":{"description":"Post image or video thumbnail URL, as Instagram's CDN serves it. Populated whenever the provider has data for the entity.","format":"uri","type":"string","x-anyapi-must-populate":true},"likes":{"description":"Number of likes on the post.","type":"integer"},"locationId":{"description":"Instagram location id the post is tagged at.","type":"string"},"locationLat":{"description":"Latitude of the tagged location, in decimal degrees.","type":"number"},"locationLng":{"description":"Longitude of the tagged location, in decimal degrees.","type":"number"},"locationName":{"description":"Name of the location the post is tagged at.","type":"string"},"mediaType":{"description":"What the post is: photo, video or carousel.","type":"string"},"paidPartnership":{"description":"Whether the post is tagged as a paid partnership.","type":"boolean"},"productType":{"description":"Instagram's own surface label for the post, such as feed, clips or carousel_container.","type":"string"},"shortcode":{"description":"The post's short code, the segment Instagram puts in its URL.","type":"string"},"taggedUsers":{"description":"Accounts tagged in the media.","items":{"properties":{"displayName":{"description":"Account display name.","type":"string"},"userId":{"description":"Instagram's numeric account id, as a string.","type":"string"},"username":{"description":"Instagram username without the leading @.","type":"string"}},"required":["username"],"type":"object"},"type":"array"},"url":{"description":"Canonical URL of the post. Populated whenever the provider has data for the entity.","format":"uri","type":"string","x-anyapi-must-populate":true},"videoUrl":{"description":"Direct video file URL, present on video posts and reels only.","format":"uri","type":"string"},"width":{"description":"Media width in pixels.","type":"integer"}},"required":["id","url","author","caption","likes","comments","createdUtc"],"type":"object"},"type":"array","x-anyapi-must-populate":true}},"required":["posts","nextCursor"],"type":"object"}]},"found":{"type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"Instagram Location Posts output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"Instagram Location Posts","tags":["instagram"],"x-mint":{"href":"/api-reference/instagram/location-posts"},"x-payment-info":{"price":{"amount":"0.001200","currency":"USD","mode":"fixed"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"amount":"0.001200","currency":"USD","minimumUsd":"0.001000","mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"amount":"0.001200","currency":"USD","minimumUsd":null,"mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/instagram.media_transcript":{"post":{"description":"Get the spoken-audio transcript text for an Instagram post or reel by URL.\n\n**Price:** \\$1.20 per 1,000 requests (flat per request - same cost regardless of results returned).\n\n**Routing:** 2 independent lanes are available in execution order. A failed attempt uses the next lane only when the request's payment authorizes that lane's price; the normalized schema stays the same.\n\n**Catalog:** [Instagram Media Transcript pricing and uptime](https://getanyapi.com/api/instagram/media-transcript) - live USD price, lane routing, and measured 30-day uptime. [Every Instagram endpoint](https://getanyapi.com/api/instagram).","operationId":"instagram_media_transcript","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"url":"https://www.instagram.com/reel/DHsD6HGqJhp/"},"schema":{"additionalProperties":false,"example":{"url":"https://www.instagram.com/reel/DHsD6HGqJhp/"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"url":{"description":"Instagram post or reel URL.","type":"string"}},"required":["url"],"title":"Instagram Media Transcript input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"oneOf":[{"type":"null"},{"additionalProperties":false,"properties":{"transcripts":{"description":"Populated whenever the provider has data for the entity.","items":{"properties":{"id":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"shortcode":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"text":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true}},"required":["id","shortcode","text"],"type":"object"},"type":"array","x-anyapi-must-populate":true}},"required":["transcripts"],"type":"object"}]},"found":{"type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"Instagram Media Transcript output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"Instagram Media Transcript","tags":["instagram"],"x-mint":{"href":"/api-reference/instagram/media-transcript"},"x-payment-info":{"price":{"amount":"0.001200","currency":"USD","mode":"fixed"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"amount":"0.001200","currency":"USD","minimumUsd":"0.001000","mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"amount":"0.001200","currency":"USD","minimumUsd":null,"mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/instagram.post":{"post":{"description":"Fetch a single Instagram post or reel by URL (media URLs, like count, owner, type) as normalized JSON. Turn on hostVideo to also get the post's video on a hosted MP4 link that plays without an Instagram session, charged as an extra on top of the price. If you want the spoken words as well, instagram.reel_transcript transcribes the same reel.\n\n**Price:** \\$0.50 per 1,000 requests (flat per request - same cost regardless of results returned).\n\n**Routing:** 4 independent lanes are available in execution order. A failed attempt uses the next lane only when the request's payment authorizes that lane's price; the normalized schema stays the same.\n\n**Catalog:** [Instagram Post pricing and uptime](https://getanyapi.com/api/instagram/post) - live USD price, lane routing, and measured 30-day uptime. [Every Instagram endpoint](https://getanyapi.com/api/instagram).","operationId":"instagram_post","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"url":"https://www.instagram.com/reel/DWzrfE2kaY8/"},"schema":{"additionalProperties":false,"example":{"url":"https://www.instagram.com/reel/DWzrfE2kaY8/"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"hostVideo":{"default":false,"description":"Set true to also get the post's video on a hosted MP4 link that plays without an Instagram session. The file is downloaded and stored for you, and the response adds `hostedUrl`, `expiresUtc` and `bytes`. It is charged as an extra on top of the price, and it never changes which source serves you: every source offers it at the same price. A post with no video, or a post that does not exist, is refused with no charge rather than billed for a file that cannot exist. Omit it and nothing is downloaded, nothing is stored, and nothing extra is charged.","type":"boolean"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"requireFields":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Name the output fields this request must be able to return, for example `plays`, and it is served only by a source that returns every one of them. Fields you do not name are still returned whenever the serving source has them. This can raise your price: when the cheapest source cannot return a named field, a dearer source serves, and you are quoted and charged its price. A named field can still be absent on a post that genuinely lacks it. Naming a combination that no single source returns together is refused as invalid input, with no charge.","items":{"enum":["avatarUrl","comments","createdUtc","displayName","hasAudio","likes","locationId","locationName","paidPartnership","plays","productType","shortcode","type","userId","verified","videoUrl"],"type":"string"},"type":"array","uniqueItems":true},"requirePlayCount":{"deprecated":true,"description":"Deprecated; send `requireFields: [\"plays\"]` instead, which does exactly the same thing. Set true to be served only by a source that reports a reel's play count. Omit it and routing is unchanged, with the cheapest source serving, which does not carry play counts, so `plays` is absent from its responses. This can raise your price: opting in routes to a source that reports the count, and you are quoted and charged its price. It stays accepted so callers that already send it keep working.","type":"boolean"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"url":{"description":"Full Instagram post or reel URL, carrying the media shortcode: /p/, /reel/, /reels/, or /tv/. A profile URL such as https://www.instagram.com/username names no post, so it is rejected instead of charged for an empty result - send that account's handle to instagram.profile, or its posts to instagram.user_posts.","pattern":"^https?://(?:www\\.)?instagram\\.com/(?:[A-Za-z0-9_.]+/)?(?:p|reel|reels|tv)/[A-Za-z0-9_-]+/?(?:[?#].*)?$","type":"string"}},"required":["url"],"title":"Instagram post input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"oneOf":[{"type":"null"},{"properties":{"avatarUrl":{"description":"Profile picture URL of the posting account.","type":"string"},"bytes":{"description":"Size of the hosted MP4 in bytes. Present only when the request set `hostVideo` to true.","type":"integer"},"comments":{"description":"Number of comments on the post.","type":"integer"},"createdUtc":{"description":"UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds.","type":"number"},"displayName":{"description":"Display name of the posting account.","type":"string"},"displayUrl":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"expiresUtc":{"description":"When `hostedUrl` stops working, as a UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds. Present only when the request set `hostVideo` to true.","type":"integer"},"hasAudio":{"description":"True when the media carries an audio track.","type":"boolean"},"hostedUrl":{"description":"AnyAPI-hosted MP4 of this post's video, playable without an Instagram session. Present only when the request set `hostVideo` to true.","format":"uri","type":"string"},"id":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"likes":{"type":"integer"},"locationId":{"description":"Instagram id of the tagged place, when the post tags one.","type":"string"},"locationName":{"description":"Name of the tagged place, when the post tags one.","type":"string"},"owner":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"paidPartnership":{"description":"True when the post is tagged as a paid partnership.","type":"boolean"},"plays":{"description":"Number of plays of the reel or video. Absent when Instagram does not expose a play count for this media, and on lanes that cannot serve it.","type":"integer"},"productType":{"description":"Instagram product type of the media, for example feed, clips or igtv.","type":"string"},"shortcode":{"type":"string"},"type":{"type":"string"},"userId":{"description":"Instagram user id of the posting account.","type":"string"},"verified":{"description":"True when the posting account carries a verified badge.","type":"boolean"},"videoUrl":{"type":"string"}},"required":["id","shortcode","type","owner","likes","displayUrl","videoUrl"],"type":"object"}]},"found":{"type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"Instagram post output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"Instagram Post","tags":["instagram"],"x-mint":{"href":"/api-reference/instagram/post"},"x-payment-info":{"price":{"amount":"0.000500","currency":"USD","mode":"fixed"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"amount":"0.001000","currency":"USD","minimumUsd":"0.001000","mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"amount":"0.000500","currency":"USD","minimumUsd":null,"mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/instagram.post_comments":{"post":{"description":"List the comments on an Instagram post or reel by URL with cursor pagination (text, author, likes).\n\n**Price:** \\$0.80 per 1,000 requests (flat per request - same cost regardless of results returned).\n\n**Routing:** 5 independent lanes are available in execution order. A failed attempt uses the next lane only when the request's payment authorizes that lane's price; the normalized schema stays the same.\n\n**Catalog:** [Instagram Post Comments pricing and uptime](https://getanyapi.com/api/instagram/post-comments) - live USD price, lane routing, and measured 30-day uptime. [Every Instagram endpoint](https://getanyapi.com/api/instagram).","operationId":"instagram_post_comments","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"url":"https://www.instagram.com/reel/DWzrfE2kaY8/"},"schema":{"additionalProperties":false,"example":{"url":"https://www.instagram.com/reel/DWzrfE2kaY8/"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"cursor":{"description":"Pagination cursor from a previous response's nextCursor.","type":"string"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"url":{"description":"Full Instagram post or reel URL.","type":"string"}},"required":["url"],"title":"Instagram post comments input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"oneOf":[{"type":"null"},{"additionalProperties":false,"properties":{"comments":{"description":"Populated whenever the provider has data for the entity.","items":{"properties":{"author":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"avatarUrl":{"description":"URL of the commenting account's profile avatar image.","type":"string"},"createdUtc":{"description":"UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds. Populated whenever the provider has data for the entity.","type":"number","x-anyapi-must-populate":true},"id":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"likes":{"type":"integer"},"text":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"verified":{"type":"boolean"}},"required":["id","text","author","verified","likes","createdUtc"],"type":"object"},"type":"array","x-anyapi-must-populate":true},"nextCursor":{"description":"Opaque cursor for the next page of comments, or null when this lane has no more. Pass it back as cursor to continue.","type":["string","null"]}},"required":["comments","nextCursor"],"type":"object"}]},"found":{"type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"Instagram post comments output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"Instagram Post Comments","tags":["instagram"],"x-mint":{"href":"/api-reference/instagram/post-comments"},"x-payment-info":{"price":{"amount":"0.000800","currency":"USD","mode":"fixed"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"amount":"0.001000","currency":"USD","minimumUsd":"0.001000","mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"amount":"0.000800","currency":"USD","minimumUsd":null,"mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/instagram.post_likers":{"post":{"description":"List the accounts that liked a public Instagram post, one page of likers per call, with each liker's handle, display name, verified flag and avatar.\n\n**Price:** \\$2.40 per 1,000 requests (flat per request - same cost regardless of results returned).\n\n**Routing:** one lane serves this API today, so a failed attempt has nowhere to fail over to. Payment outcome follows the selected rail's settlement policy.\n\n**Catalog:** [Instagram Post Likers pricing and uptime](https://getanyapi.com/api/instagram/post-likers) - live USD price, lane routing, and measured 30-day uptime. [Every Instagram endpoint](https://getanyapi.com/api/instagram).","operationId":"instagram_post_likers","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"url":"https://www.instagram.com/reel/DWzrfE2kaY8/"},"schema":{"additionalProperties":false,"example":{"url":"https://www.instagram.com/reel/DWzrfE2kaY8/"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"url":{"description":"Canonical URL of a public Instagram post or reel.","format":"uri","type":"string"}},"required":["url"],"title":"Instagram Post Likers input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"oneOf":[{"type":"null"},{"additionalProperties":false,"properties":{"likers":{"description":"One page of accounts that liked the post. A single call returns one page; it does not walk the whole liker list. Populated whenever the provider has data for the entity.","items":{"properties":{"avatarUrl":{"description":"Profile picture URL, as Instagram's CDN serves it.","format":"uri","type":"string"},"displayName":{"description":"Account display name.","type":"string"},"latestStoryUtc":{"description":"Timestamp of the account's most recent story. UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds.","type":"number"},"private":{"description":"Whether the account is private.","type":"boolean"},"userId":{"description":"Instagram's numeric account id, as a string.","type":"string"},"username":{"description":"Instagram username without the leading @. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"verified":{"description":"Whether the account carries Instagram's verified badge.","type":"boolean"}},"required":["username","userId","displayName","verified","private","avatarUrl"],"type":"object"},"type":"array","x-anyapi-must-populate":true},"totalLikes":{"description":"Total number of likes on the post, which can exceed the number of likers returned in this page.","type":"integer"}},"required":["likers","totalLikes"],"type":"object"}]},"found":{"type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"Instagram Post Likers output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"Instagram Post Likers","tags":["instagram"],"x-mint":{"href":"/api-reference/instagram/post-likers"},"x-payment-info":{"price":{"amount":"0.002400","currency":"USD","mode":"fixed"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"amount":"0.002400","currency":"USD","minimumUsd":"0.001000","mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"amount":"0.002400","currency":"USD","minimumUsd":null,"mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/instagram.profile":{"post":{"description":"Fetch an Instagram account's public profile (followers, posts, bio, verification) by handle.\n\n**Price:** \\$1.20 per 1,000 requests (flat per request - same cost regardless of results returned).\n\n**Routing:** 2 independent lanes are available in execution order. A failed attempt uses the next lane only when the request's payment authorizes that lane's price; the normalized schema stays the same.\n\n**Catalog:** [Instagram Profile pricing and uptime](https://getanyapi.com/api/instagram/profile) - live USD price, lane routing, and measured 30-day uptime. [Every Instagram endpoint](https://getanyapi.com/api/instagram).","operationId":"instagram_profile","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"handle":"nasa"},"schema":{"additionalProperties":false,"example":{"handle":"nasa"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"handle":{"description":"Instagram username without the leading @.","type":"string"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true}},"required":["handle"],"title":"Instagram profile input","type":"object","x-aliases":{"username":"handle"}}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"oneOf":[{"type":"null"},{"properties":{"avatarUrl":{"description":"Profile picture URL at the highest resolution the account exposes. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"bio":{"description":"Profile biography text. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"bioLinks":{"description":"Every link the account publishes in its bio, in the order Instagram returns them. Business accounts often list several here while externalUrl carries only the first. Populated whenever the provider has data for the entity.","items":{"properties":{"title":{"description":"Display label for the link, empty when the account set none.","type":"string"},"url":{"description":"Destination URL, exactly as the account published it.","type":"string"}},"required":["url"],"type":"object"},"type":"array","x-anyapi-must-populate":true},"category":{"description":"Instagram's category label for the account (for example \"Government Agencies\" or \"Coffee shop\"). Absent when the account publishes no category. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"contactMethod":{"description":"The contact button Instagram shows on the profile, for example CALL, TEXT, EMAIL, or UNKNOWN. Absent when the account exposes no contact button. Instagram no longer publishes the underlying email or phone number to unauthenticated callers.","type":"string"},"displayName":{"description":"Account display name. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"externalUrl":{"description":"The single website link on the profile. Absent when the account publishes no link. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"followers":{"description":"Follower count.","type":"integer"},"following":{"description":"Number of accounts this account follows.","type":"integer"},"handle":{"description":"Instagram username without the leading @. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"isBusiness":{"description":"Whether Instagram flags the account as a business account.","type":"boolean"},"posts":{"description":"Number of posts on the account.","type":"integer"},"private":{"description":"Whether the account is private.","type":"boolean"},"userId":{"description":"Instagram's numeric account id, as a string. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"verified":{"description":"Whether the account carries Instagram's verified badge.","type":"boolean"}},"required":["handle","displayName","followers","following","posts","bio","verified","private","avatarUrl"],"type":"object"}]},"found":{"type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"Instagram profile output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"Instagram Profile","tags":["instagram"],"x-mint":{"href":"/api-reference/instagram/profile"},"x-payment-info":{"price":{"amount":"0.001200","currency":"USD","mode":"fixed"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"amount":"0.001200","currency":"USD","minimumUsd":"0.001000","mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"amount":"0.001200","currency":"USD","minimumUsd":null,"mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/instagram.profile_contact":{"post":{"description":"Look up the contact email and phone number an Instagram creator or business publishes on its profile, including the address behind the profile's Email button that public profile lookups do not return.\n\n**Price:** billed per result - \\$2.57 per 1,000 requests base + \\$0.00 per 1,000 results, capped at \\$2.57 per 1,000 requests.\n\n**Routing:** 2 independent lanes are available in execution order. A failed attempt uses the next lane only when the request's payment authorizes that lane's price; the normalized schema stays the same.\n\n**Catalog:** [Instagram Profile Contact Info pricing and uptime](https://getanyapi.com/api/instagram/profile-contact) - live USD price, lane routing, and measured 30-day uptime. [Every Instagram endpoint](https://getanyapi.com/api/instagram).","operationId":"instagram_profile_contact","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"handle":"eminenceorganics"},"schema":{"additionalProperties":false,"example":{"handle":"eminenceorganics"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"handle":{"description":"Instagram username without the leading @.","minLength":1,"type":"string"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true}},"required":["handle"],"title":"Instagram profile contact input","type":"object","x-aliases":{"username":"handle"}}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"description":"The account and the contact details it publishes, or null when no such account exists.","oneOf":[{"type":"null"},{"properties":{"bio":{"description":"Profile biography text.","type":"string"},"displayName":{"description":"Account display name.","type":"string"},"emails":{"description":"Every email address found for the account: the contact-button address plus any address written into the bio, deduplicated. Empty when the account publishes none. Populated whenever the provider has data for the entity.","items":{"type":"string"},"type":"array","x-anyapi-must-populate":true},"externalUrl":{"description":"The website link on the profile. Absent when the account publishes no link.","type":"string"},"handle":{"description":"Instagram username without the leading @. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"phones":{"description":"Every phone number found for the account, in E.164 form where the number could be normalized. Empty when the account publishes none.","items":{"type":"string"},"type":"array"},"private":{"description":"Whether the account is private.","type":"boolean"},"publicEmail":{"description":"The address behind the profile's Email contact button, as the account owner entered it. Absent when the account publishes no contact email. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"publicPhone":{"description":"The number behind the profile's Call or Text contact button, as the account owner entered it. Absent when the account publishes no contact phone.","type":"string"},"verified":{"description":"Whether the account carries Instagram's verified badge.","type":"boolean"}},"required":["handle","emails"],"type":"object"}]},"found":{"description":"True when the Instagram account exists. An account that publishes no contact details is still found, with empty email and phone lists.","type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"Instagram profile contact output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"Instagram Profile Contact Info","tags":["instagram"],"x-mint":{"href":"/api-reference/instagram/profile-contact"},"x-payment-info":{"price":{"currency":"USD","max":"0.002570","min":"0.002570","mode":"dynamic"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"currency":"USD","max":"0.002570","min":"0.002570","minimumUsd":"0.001000","mode":"dynamic","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"currency":"USD","max":"0.002570","min":"0.002570","minimumUsd":null,"mode":"dynamic","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/instagram.reel_transcript":{"post":{"description":"Transcribe any public Instagram reel or video post: the full speech transcript, speaker labels, and word-level timestamps, from a reel, /p/, or /tv/ URL or an Instagram CDN media URL you already hold. A video post is transcribed exactly like a reel. A photo post comes back found with its record and an empty transcript, charged the request price only. Transcription runs on MAI-Transcribe-2, chosen for its accuracy and its speaker labels. Turn on hostVideo to also get the MP4 on a hosted link that plays without an Instagram session. If you only want the text, instagram.media_transcript is the cheaper transcript-only option; if you only want the file, instagram.post is where you go.\n\n**Price:** billed per audio minute - \\$1.50 per 1,000 requests base + \\$6.00 per 1,000 audio minutes, capped at \\$95.00 per 1,000 requests.\n\n**Routing:** one lane serves this API today, so a failed attempt has nowhere to fail over to. Payment outcome follows the selected rail's settlement policy.\n\n**Catalog:** [Instagram Reel Transcript pricing and uptime](https://getanyapi.com/api/instagram/reel-transcript) - live USD price, lane routing, and measured 30-day uptime. [Every Instagram endpoint](https://getanyapi.com/api/instagram).","operationId":"instagram_reel_transcript","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"hostVideo":true,"url":"https://www.instagram.com/reel/CfY6jCIgH-P/","wordTimestamps":false},"schema":{"additionalProperties":false,"example":{"hostVideo":true,"url":"https://www.instagram.com/reel/CfY6jCIgH-P/","wordTimestamps":false},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"hostVideo":{"default":false,"description":"Set true to also get the reel's MP4 on a hosted link you can play without an Instagram session. Charged as an extra on top of the transcript (e.g. true). A photo post has no file to host, so a request that sets this on one is refused with no charge; send it without hostVideo to get the post record instead.","type":"boolean"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"url":{"description":"The URL of a public Instagram reel or video post (e.g. https://www.instagram.com/reel/C8yKXdRxKqK/), or an Instagram CDN media URL you already hold.","type":"string"},"wordTimestamps":{"default":false,"description":"Set true to include a precise timestamp for every word in the transcript (e.g. true).","type":"boolean"}},"required":["url"],"title":"Instagram reel transcript input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"oneOf":[{"type":"null"},{"additionalProperties":false,"properties":{"items":{"description":"Record for the requested reel (one item), with the full transcript text, timed segments, source video metadata, and the hosted video link when hostVideo was asked for. Populated whenever the provider has data for the entity.","items":{"properties":{"bytes":{"description":"Size of the hosted MP4 in bytes. Present only when hostVideo was true.","type":"integer"},"durationSeconds":{"description":"Video duration in seconds. Absent when there is no transcript, which is what measures it.","type":"number"},"expiresUtc":{"description":"UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds. After this moment the hosted MP4 is deleted. Present only when hostVideo was true.","type":"number"},"hostedUrl":{"description":"A direct link to the downloaded MP4, hosted by AnyAPI and playable without an Instagram session. Present only when hostVideo was true.","format":"uri","type":"string"},"id":{"description":"The reel's numeric Instagram media ID, as a string. Empty when the request supplied a CDN media URL, which carries no post record. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"language":{"description":"Detected spoken language (ISO 639-1 code, e.g. \"en\"). Absent when there is no transcript.","type":"string"},"likeCount":{"description":"Number of likes on the reel. Absent when the lane that served the lookup does not carry a like count.","type":"integer"},"mediaType":{"description":"What kind of media this is, as Instagram labels it (for example a video or an image post). On a photo post this is how you tell that the empty transcript is the answer rather than silence.","type":"string"},"ownerUsername":{"description":"Username of the reel's owner, without the @ prefix. Empty when the request supplied a CDN media URL.","type":"string"},"segments":{"description":"Time-aligned transcript segments in playback order, one per sentence, each with its text, speaker label, and start/end offsets in seconds. A segment starts when its first word is spoken and ends when its last one finishes. Empty when the reel has no detectable spoken audio.","items":{"properties":{"end":{"description":"Segment end offset in seconds from the start of the video.","type":"number"},"speaker":{"description":"Which speaker said this segment, as a stable label within this transcript (e.g. \"0\", \"1\").","type":"string"},"start":{"description":"Segment start offset in seconds from the start of the video.","type":"number"},"text":{"description":"The segment's transcribed text.","type":"string"},"words":{"description":"Every word in the segment with its own timing. Present only when wordTimestamps was true.","items":{"properties":{"end":{"description":"Word end offset in seconds from the start of the video.","type":"number"},"start":{"description":"Word start offset in seconds from the start of the video.","type":"number"},"text":{"description":"The word as spoken.","type":"string"}},"type":"object"},"type":"array"}},"type":"object"},"type":"array"},"shortcode":{"description":"The reel's short code, the part of its instagram.com URL after /reel/. Empty when the request supplied a CDN media URL.","type":"string"},"text":{"description":"The full speech transcript. Empty when the reel has no detectable spoken audio, or when the post is a photo with no video to transcribe. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"thumbnailUrl":{"description":"A link to the reel's cover image on Instagram. This link is signed by Instagram and stops working after a short time.","type":"string"},"url":{"description":"The reel URL the request asked for, returned as sent. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true}},"required":["id","url","text"],"type":"object"},"type":"array","x-anyapi-must-populate":true}},"required":["items"],"type":"object"}]},"found":{"description":"Whether the post was found. A reel or video post is found and transcribed. A photo post is found too: its record comes back with an empty transcript and is charged the request price only, with no audio minutes. A post that does not exist is not found and is free.","type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"Instagram reel transcript output","type":"object","x-anyapi-heavy":true},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"Instagram Reel Transcript","tags":["instagram"],"x-mint":{"href":"/api-reference/instagram/reel-transcript"},"x-payment-info":{"price":{"currency":"USD","max":"0.095000","min":"0.001500","mode":"dynamic"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"currency":"USD","max":"0.095000","min":"0.001500","minimumUsd":"0.001000","mode":"dynamic","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"currency":"USD","max":"0.095000","min":"0.001500","minimumUsd":null,"mode":"dynamic","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/instagram.reels_search":{"post":{"description":"Search Instagram Reels by keyword against Instagram's own reels search and get matching reels with view, like and comment counts, caption, creator and duration. Results are relevance-ranked, not chronological, and a page can repeat reels from the page before it. For a web-search-index view of the same keyword, with a recency filter and numbered pages, use instagram.web_reels_search.\n\n**Price:** \\$1.50 per 1,000 requests (flat per request - same cost regardless of results returned).\n\n**Routing:** 2 independent lanes are available in execution order. A failed attempt uses the next lane only when the request's payment authorizes that lane's price; the normalized schema stays the same.\n\n**Catalog:** [Instagram Reels Search pricing and uptime](https://getanyapi.com/api/instagram/reels-search) - live USD price, lane routing, and measured 30-day uptime. [Every Instagram endpoint](https://getanyapi.com/api/instagram).","operationId":"instagram_reels_search","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"query":"travel"},"schema":{"additionalProperties":false,"example":{"query":"travel"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"cursor":{"description":"Pagination cursor from a previous response's nextCursor.","type":"string"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"query":{"description":"Search keyword (e.g. \"crossfit\").","type":"string"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true}},"required":["query"],"title":"Instagram reels search input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"description":"Wrapper holding the reels array, or null when nothing was found.","oneOf":[{"type":"null"},{"additionalProperties":false,"properties":{"nextCursor":{"description":"Opaque cursor for the next page of reels, or null when this lane has no more. Pass it back as cursor to continue. Instagram relevance-ranks reels search, so a later page can repeat reels from an earlier one.","type":["string","null"]},"reels":{"description":"Reels matching the search. Populated whenever the provider has data for the entity.","items":{"properties":{"avatarUrl":{"description":"Profile picture URL of the author.","type":"string"},"caption":{"description":"Reel caption text. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"comments":{"description":"Number of comments on the reel.","type":"integer"},"createdUtc":{"description":"UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds.","type":"number"},"displayName":{"description":"Display name of the author.","type":"string"},"durationSeconds":{"description":"Reel duration in seconds.","type":"number"},"hasAudio":{"description":"True when the reel carries an audio track.","type":"boolean"},"id":{"description":"Reel media identifier.","type":"string"},"likes":{"description":"Number of likes on the reel.","type":"integer"},"paidPartnership":{"description":"True when the reel is a paid partnership.","type":"boolean"},"productType":{"description":"Instagram product type of the media, for example clips.","type":"string"},"shortcode":{"description":"Instagram media shortcode. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"thumbnail":{"description":"URL of the reel thumbnail image. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"url":{"description":"Canonical URL of the reel. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"userId":{"description":"Instagram user id of the author.","type":"string"},"username":{"description":"Username of the account that posted the reel. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"verified":{"description":"True when the posting account is verified.","type":"boolean"},"videoUrl":{"description":"Direct URL to the reel video.","type":"string"},"views":{"description":"Play count of the reel.","type":"integer"}},"required":["shortcode","url","caption","thumbnail","likes","comments","durationSeconds","createdUtc","username","verified","paidPartnership"],"type":"object"},"type":"array","x-anyapi-must-populate":true}},"required":["reels","nextCursor"],"type":"object"}]},"found":{"description":"True when matching reels were found; false when the search returned nothing.","type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"Instagram reels search output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"Instagram Reels Search","tags":["instagram"],"x-mint":{"href":"/api-reference/instagram/reels-search"},"x-payment-info":{"price":{"amount":"0.001500","currency":"USD","mode":"fixed"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"amount":"0.001500","currency":"USD","minimumUsd":"0.001000","mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"amount":"0.001500","currency":"USD","minimumUsd":null,"mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/instagram.search":{"post":{"description":"Search Instagram for users, hashtags, or places by keyword and get matching results with names, counts, and links.\n\n**Price:** \\$3.60 per 1,000 requests (flat per request - same cost regardless of results returned).\n\n**Routing:** 2 independent lanes are available in execution order. A failed attempt uses the next lane only when the request's payment authorizes that lane's price; the normalized schema stays the same.\n\n**Catalog:** [Instagram Search pricing and uptime](https://getanyapi.com/api/instagram/search) - live USD price, lane routing, and measured 30-day uptime. [Every Instagram endpoint](https://getanyapi.com/api/instagram).","operationId":"instagram_search","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"query":"nasa"},"schema":{"additionalProperties":false,"example":{"query":"nasa"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"limit":{"description":"Maximum number of results to return (1-20, default 20).","maximum":20,"minimum":1,"type":"integer"},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"query":{"description":"Keyword to search Instagram for; one or more words without special punctuation (e.g. coffee roastery).","type":"string"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"type":{"default":"user","description":"What to search for: user profiles, hashtags, or places (e.g. hashtag).","enum":["user","hashtag","place"],"type":"string"}},"required":["query"],"title":"Instagram search input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"oneOf":[{"type":"null"},{"additionalProperties":false,"properties":{"items":{"description":"Matching Instagram profile records for the query. Populated whenever the provider has data for the entity.","items":{"properties":{"bio":{"description":"The account's bio text. Empty when the account has none.","type":"string"},"followers":{"description":"The account's follower count. May be 0 when the lane does not return it in search results.","type":"integer"},"following":{"description":"The number of accounts the account follows. May be 0 when the lane does not return it in search results.","type":"integer"},"handle":{"description":"The account's username, without the @ prefix. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"id":{"description":"The account's numeric Instagram user ID, as a string. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"image":{"description":"URL of the account's profile picture, with tracking query params stripped. Empty when the upstream omits it.","type":"string"},"name":{"description":"The account's display name. Empty when the account has none.","type":"string"},"postsCount":{"description":"The account's post count. May be 0 when the lane does not return it in search results.","type":"integer"},"url":{"description":"Canonical URL of the account's profile, with tracking query params stripped. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"verified":{"description":"Whether the account is verified.","type":"boolean"}},"required":["id","handle","url"],"type":"object"},"type":"array","x-anyapi-must-populate":true}},"required":["items"],"type":"object"}]},"found":{"description":"Whether any matching profiles were returned for the query.","type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"Instagram search output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"Instagram Search","tags":["instagram"],"x-mint":{"href":"/api-reference/instagram/search"},"x-payment-info":{"price":{"amount":"0.003600","currency":"USD","mode":"fixed"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"amount":"0.003600","currency":"USD","minimumUsd":"0.001000","mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"amount":"0.003600","currency":"USD","minimumUsd":null,"mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/instagram.search_hashtag":{"post":{"description":"Search posts under an Instagram hashtag through a web search index rather than Instagram's own hashtag feed. That is what lets it filter by date and media type and return reels whose like counts have settled, and it is also why results skew older (median around three months) and stop at roughly 110 per hashtag. For Instagram's own live ranking of a tag use instagram.hashtag_top_posts, and for the chronological feed use instagram.hashtag_recent_posts.\n\n**Price:** \\$1.20 per 1,000 requests (flat per request - same cost regardless of results returned).\n\n**Routing:** one lane serves this API today, so a failed attempt has nowhere to fail over to. Payment outcome follows the selected rail's settlement policy.\n\n**Catalog:** [Instagram Hashtag Search pricing and uptime](https://getanyapi.com/api/instagram/search-hashtag) - live USD price, lane routing, and measured 30-day uptime. [Every Instagram endpoint](https://getanyapi.com/api/instagram).","operationId":"instagram_search_hashtag","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"datePosted":"last-month","hashtag":"skincare","mediaType":"reel"},"schema":{"additionalProperties":false,"example":{"datePosted":"last-month","hashtag":"skincare","mediaType":"reel"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"cursor":{"description":"Pagination cursor from a previous response.","type":"string"},"datePosted":{"description":"Restrict results to posts published within this window.","enum":["last-hour","last-day","last-week","last-month","last-year"],"type":"string"},"hashtag":{"description":"Hashtag to search, without the leading #.","type":"string"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"mediaType":{"description":"Filter by media type. One of all, reel.","enum":["all","reel"],"type":"string"},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true}},"required":["hashtag"],"title":"Instagram hashtag search input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"oneOf":[{"type":"null"},{"additionalProperties":false,"properties":{"nextCursor":{"description":"Opaque cursor for the next page of posts, or null when this lane has no more. Pass it back as cursor to continue.","type":["string","null"]},"posts":{"description":"Populated whenever the provider has data for the entity.","items":{"properties":{"avatarUrl":{"description":"Profile picture URL of the posting account.","format":"uri","type":"string"},"caption":{"description":"Post caption text, including its hashtags.","type":"string"},"comments":{"description":"Comment count.","type":"integer"},"createdUtc":{"description":"UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds.","type":"number"},"displayName":{"description":"Display name of the posting account.","type":"string"},"displayUrl":{"description":"Poster image URL. For a video this is the cover frame. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"durationSeconds":{"description":"Video duration in seconds. Absent on photo posts.","type":"number"},"hasAudio":{"description":"True when the media carries an audio track.","type":"boolean"},"id":{"description":"Instagram media id. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"isAd":{"description":"True when the post is a paid advertisement.","type":"boolean"},"likes":{"description":"Like count. Absent when the account hides it.","type":"integer"},"paidPartnership":{"description":"True when the post is tagged as a paid partnership.","type":"boolean"},"productType":{"description":"Instagram product type of the media, for example feed, clips or igtv.","type":"string"},"shortcode":{"description":"Short code in the post permalink. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"type":{"description":"Instagram media typename, for example XDTGraphVideo or XDTGraphImage.","type":"string"},"url":{"description":"Canonical permalink to the post. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"userId":{"description":"Instagram user id of the posting account.","type":"string"},"username":{"description":"Username of the account that posted. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"verified":{"description":"True when the posting account is verified.","type":"boolean"},"videoUrl":{"description":"Playable video file URL. Present only on video posts.","format":"uri","type":"string"}},"required":["id","shortcode","type","url","caption","displayUrl"],"type":"object"},"type":"array","x-anyapi-must-populate":true}},"required":["posts","nextCursor"],"type":"object"}]},"found":{"type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"Instagram hashtag search output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"Instagram Hashtag Search","tags":["instagram"],"x-mint":{"href":"/api-reference/instagram/search-hashtag"},"x-payment-info":{"price":{"amount":"0.001200","currency":"USD","mode":"fixed"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"amount":"0.001200","currency":"USD","minimumUsd":"0.001000","mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"amount":"0.001200","currency":"USD","minimumUsd":null,"mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/instagram.search_locations":{"post":{"description":"Search Instagram locations by keyword and return each place's id, name, address and coordinates.\n\n**Price:** \\$2.40 per 1,000 requests (flat per request - same cost regardless of results returned).\n\n**Routing:** one lane serves this API today, so a failed attempt has nowhere to fail over to. Payment outcome follows the selected rail's settlement policy.\n\n**Catalog:** [Instagram Location Search pricing and uptime](https://getanyapi.com/api/instagram/search-locations) - live USD price, lane routing, and measured 30-day uptime. [Every Instagram endpoint](https://getanyapi.com/api/instagram).","operationId":"instagram_search_locations","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"query":"Eiffel Tower"},"schema":{"additionalProperties":false,"example":{"query":"Eiffel Tower"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"query":{"description":"Place name, address or city to search for.","type":"string"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true}},"required":["query"],"title":"Instagram Location Search input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"oneOf":[{"type":"null"},{"additionalProperties":false,"properties":{"locations":{"description":"Instagram locations matching the keyword, best match first. Populated whenever the provider has data for the entity.","items":{"properties":{"address":{"description":"Street address of the place.","type":"string"},"city":{"description":"City the place sits in.","type":"string"},"id":{"description":"Instagram location id. Pass it to instagram.location_posts as locationId. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"latitude":{"description":"Latitude in decimal degrees.","type":"number"},"longitude":{"description":"Longitude in decimal degrees.","type":"number"},"name":{"description":"Full place name, usually including city and country. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"shortName":{"description":"Place name without the city and country suffix.","type":"string"}},"required":["id","name","latitude","longitude"],"type":"object"},"type":"array","x-anyapi-must-populate":true}},"required":["locations"],"type":"object"}]},"found":{"type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"Instagram Location Search output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"Instagram Location Search","tags":["instagram"],"x-mint":{"href":"/api-reference/instagram/search-locations"},"x-payment-info":{"price":{"amount":"0.002400","currency":"USD","mode":"fixed"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"amount":"0.002400","currency":"USD","minimumUsd":"0.001000","mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"amount":"0.002400","currency":"USD","minimumUsd":null,"mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/instagram.search_profiles":{"post":{"description":"Search public Instagram profiles by a bio or caption keyword.\n\n**Price:** \\$1.20 per 1,000 requests (flat per request - same cost regardless of results returned).\n\n**Routing:** 2 independent lanes are available in execution order. A failed attempt uses the next lane only when the request's payment authorizes that lane's price; the normalized schema stays the same.\n\n**Catalog:** [Instagram Profile Search pricing and uptime](https://getanyapi.com/api/instagram/search-profiles) - live USD price, lane routing, and measured 30-day uptime. [Every Instagram endpoint](https://getanyapi.com/api/instagram).","operationId":"instagram_search_profiles","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"query":"coffee roaster"},"schema":{"additionalProperties":false,"example":{"query":"coffee roaster"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"cursor":{"description":"Pagination cursor returned by a previous response.","type":"string"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"query":{"description":"Bio or caption keyword/phrase to search for.","type":"string"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true}},"required":["query"],"title":"Instagram Profile Search input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"oneOf":[{"type":"null"},{"additionalProperties":false,"properties":{"nextCursor":{"description":"Opaque cursor for the next page of profiles, or null when this lane has no more. Pass it back as cursor to continue.","type":["string","null"]},"profiles":{"description":"Populated whenever the provider has data for the entity.","items":{"properties":{"avatarUrl":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"bio":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"displayName":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"externalUrl":{"description":"External link the account lists in its bio.","type":"string"},"followers":{"type":"integer"},"following":{"type":"integer"},"handle":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"id":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"posts":{"type":"integer"},"private":{"type":"boolean"},"url":{"description":"Canonical URL of the profile.","type":"string"},"verified":{"type":"boolean"}},"required":["id","handle","displayName","bio","followers","following","posts","verified","private","avatarUrl"],"type":"object"},"type":"array","x-anyapi-must-populate":true}},"required":["nextCursor","profiles"],"type":"object"}]},"found":{"type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"Instagram Profile Search output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"Instagram Profile Search","tags":["instagram"],"x-mint":{"href":"/api-reference/instagram/search-profiles"},"x-payment-info":{"price":{"amount":"0.001200","currency":"USD","mode":"fixed"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"amount":"0.001200","currency":"USD","minimumUsd":"0.001000","mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"amount":"0.001200","currency":"USD","minimumUsd":null,"mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/instagram.similar_profiles":{"post":{"description":"List the accounts Instagram recommends as similar to a public profile, with each account's handle, display name, verified flag and avatar.\n\n**Price:** \\$2.40 per 1,000 requests (flat per request - same cost regardless of results returned).\n\n**Routing:** 2 independent lanes are available in execution order. A failed attempt uses the next lane only when the request's payment authorizes that lane's price; the normalized schema stays the same.\n\n**Catalog:** [Instagram Similar Profiles pricing and uptime](https://getanyapi.com/api/instagram/similar-profiles) - live USD price, lane routing, and measured 30-day uptime. [Every Instagram endpoint](https://getanyapi.com/api/instagram).","operationId":"instagram_similar_profiles","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"handle":"nasa"},"schema":{"additionalProperties":false,"example":{"handle":"nasa"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"handle":{"description":"Instagram username without the leading @.","type":"string"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true}},"required":["handle"],"title":"Instagram Similar Profiles input","type":"object","x-aliases":{"username":"handle"}}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"oneOf":[{"type":"null"},{"additionalProperties":false,"properties":{"profiles":{"description":"Accounts Instagram recommends as similar to the requested profile. Populated whenever the provider has data for the entity.","items":{"properties":{"avatarUrl":{"description":"Profile picture URL, as Instagram's CDN serves it.","format":"uri","type":"string"},"displayName":{"description":"Account display name.","type":"string"},"private":{"description":"Whether the account is private.","type":"boolean"},"userId":{"description":"Instagram's numeric account id, as a string.","type":"string"},"username":{"description":"Instagram username without the leading @. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"verified":{"description":"Whether the account carries Instagram's verified badge.","type":"boolean"}},"required":["username","userId","displayName","verified","private","avatarUrl"],"type":"object"},"type":"array","x-anyapi-must-populate":true}},"required":["profiles"],"type":"object"}]},"found":{"type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"Instagram Similar Profiles output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"Instagram Similar Profiles","tags":["instagram"],"x-mint":{"href":"/api-reference/instagram/similar-profiles"},"x-payment-info":{"price":{"amount":"0.002400","currency":"USD","mode":"fixed"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"amount":"0.002400","currency":"USD","minimumUsd":"0.001000","mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"amount":"0.002400","currency":"USD","minimumUsd":null,"mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/instagram.stories_full":{"post":{"description":"Fetch a public Instagram account's currently live stories with media, type, dimensions, posting time, and 24-hour expiry by username.\n\n**Price:** \\$2.40 per 1,000 requests (flat per request - same cost regardless of results returned).\n\n**Routing:** one lane serves this API today, so a failed attempt has nowhere to fail over to. Payment outcome follows the selected rail's settlement policy.\n\n**Catalog:** [Instagram Stories (full) pricing and uptime](https://getanyapi.com/api/instagram/stories-full) - live USD price, lane routing, and measured 30-day uptime. [Every Instagram endpoint](https://getanyapi.com/api/instagram).","operationId":"instagram_stories_full","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"username":"natgeo"},"schema":{"additionalProperties":false,"example":{"username":"natgeo"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"username":{"description":"Instagram username or handle without the @.","minLength":1,"type":"string"}},"required":["username"],"title":"Instagram Stories (full) input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"description":"Wrapper holding the story items array, or null when nothing was found.","oneOf":[{"type":"null"},{"additionalProperties":false,"properties":{"items":{"description":"Currently live story records for the requested account, with media, type, dimensions, posting time, and expiry. Populated whenever the provider has data for the entity.","items":{"properties":{"avatarUrl":{"description":"Profile picture URL of the story owner.","type":"string"},"code":{"description":"Instagram media shortcode. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"createdUtc":{"description":"UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds. Populated whenever the provider has data for the entity.","type":"number","x-anyapi-must-populate":true},"displayName":{"description":"Display name of the story owner.","type":"string"},"expiresUtc":{"description":"Expiry UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds. Populated whenever the provider has data for the entity.","type":"number","x-anyapi-must-populate":true},"height":{"description":"Media pixel height. Populated whenever the provider has data for the entity.","type":"integer","x-anyapi-must-populate":true},"id":{"description":"Story identifier. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"image":{"description":"Direct URL to the story image (highest resolution). Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"mediaType":{"description":"Media type: 1 = image, 2 = video. Populated whenever the provider has data for the entity.","type":"integer","x-anyapi-must-populate":true},"paidPartnership":{"description":"True when the story is tagged as a paid partnership.","type":"boolean"},"private":{"description":"True when the owner's account is private.","type":"boolean"},"productType":{"description":"Instagram product type of the media, for example story.","type":"string"},"userId":{"description":"Instagram user id of the story owner.","type":"string"},"username":{"description":"Owner username. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"verified":{"description":"True when the owner's account carries a verified badge.","type":"boolean"},"videoUrl":{"description":"Direct URL to the story video, when the story is a video. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"width":{"description":"Media pixel width. Populated whenever the provider has data for the entity.","type":"integer","x-anyapi-must-populate":true}},"required":["id"],"type":"object"},"type":"array","x-anyapi-must-populate":true}},"required":["items"],"type":"object"}]},"found":{"description":"True when stories were found; false when the lookup returned nothing.","type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"Instagram Stories (full) output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"Instagram Stories (full)","tags":["instagram"],"x-mint":{"href":"/api-reference/instagram/stories-full"},"x-payment-info":{"price":{"amount":"0.002400","currency":"USD","mode":"fixed"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"amount":"0.002400","currency":"USD","minimumUsd":"0.001000","mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"amount":"0.002400","currency":"USD","minimumUsd":null,"mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/instagram.stories_thin":{"post":{"description":"Fetch a public Instagram account's currently live stories - media URL, owner, and posting time - by username. Lightweight projection; for media type, dimensions, and the 24h expiry time use instagram.stories_full.\n\n**Price:** \\$1.50 per 1,000 requests (flat per request - same cost regardless of results returned).\n\n**Routing:** 2 independent lanes are available in execution order. A failed attempt uses the next lane only when the request's payment authorizes that lane's price; the normalized schema stays the same.\n\n**Catalog:** [Instagram Stories (basic) pricing and uptime](https://getanyapi.com/api/instagram/stories-thin) - live USD price, lane routing, and measured 30-day uptime. [Every Instagram endpoint](https://getanyapi.com/api/instagram).","operationId":"instagram_stories_thin","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"username":"natgeo"},"schema":{"additionalProperties":false,"example":{"username":"natgeo"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"username":{"description":"Instagram username/handle to fetch currently live stories for (without the @).","type":"string"}},"required":["username"],"title":"Instagram Stories (basic) input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"description":"Wrapper holding the story items array, or null when nothing was found.","oneOf":[{"type":"null"},{"additionalProperties":false,"properties":{"items":{"description":"The account's currently live stories, each with its media URL, owner, posting time, and permalink. Populated whenever the provider has data for the entity.","items":{"properties":{"avatarUrl":{"description":"Profile picture URL of the story owner.","type":"string"},"createdUtc":{"description":"Posting time (Unix seconds).","type":"number"},"displayName":{"description":"Display name of the story owner.","type":"string"},"id":{"description":"Story identifier. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"mediaUrl":{"description":"Direct URL to the story image or video. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"permalink":{"description":"Public link to the story. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"username":{"description":"Owner username. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"verified":{"description":"True when the owner's account carries a verified badge.","type":"boolean"}},"required":["id"],"type":"object"},"type":"array","x-anyapi-must-populate":true}},"required":["items"],"type":"object"}]},"found":{"description":"True when stories were found; false when the lookup returned nothing.","type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"Instagram Stories (basic) output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"Instagram Stories (basic)","tags":["instagram"],"x-mint":{"href":"/api-reference/instagram/stories-thin"},"x-payment-info":{"price":{"amount":"0.001500","currency":"USD","mode":"fixed"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"amount":"0.001500","currency":"USD","minimumUsd":"0.001000","mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"amount":"0.001500","currency":"USD","minimumUsd":null,"mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/instagram.tagged_posts":{"post":{"description":"List the posts an Instagram user is tagged in, with cursor pagination (author, caption, likes, comments).\n\n**Price:** \\$1.50 per 1,000 requests (flat per request - same cost regardless of results returned).\n\n**Routing:** 3 independent lanes are available in execution order. A failed attempt uses the next lane only when the request's payment authorizes that lane's price; the normalized schema stays the same.\n\n**Catalog:** [Instagram Tagged Posts pricing and uptime](https://getanyapi.com/api/instagram/tagged-posts) - live USD price, lane routing, and measured 30-day uptime. [Every Instagram endpoint](https://getanyapi.com/api/instagram).","operationId":"instagram_tagged_posts","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"handle":"nasa"},"schema":{"additionalProperties":false,"example":{"handle":"nasa"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"cursor":{"description":"Pagination cursor from a previous response's nextCursor.","type":"string"},"handle":{"description":"Instagram username without the leading @.","type":"string"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true}},"required":["handle"],"title":"Instagram Tagged Posts input","type":"object","x-aliases":{"username":"handle"}}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"oneOf":[{"type":"null"},{"additionalProperties":false,"properties":{"nextCursor":{"description":"Opaque cursor for the next page of tagged posts, or null when this lane has no more. Pass it back as cursor to continue.","type":["string","null"]},"posts":{"description":"Posts that tag the requested account, newest first. Populated whenever the provider has data for the entity.","items":{"properties":{"author":{"description":"Username of the account that posted and applied the tag, without the @ prefix. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"avatarUrl":{"description":"URL of the posting account's profile avatar image.","type":"string"},"caption":{"description":"The post's caption text. Empty when the post has none. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"comments":{"description":"Number of comments on the post.","type":"integer"},"createdUtc":{"description":"UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds.","type":"number"},"id":{"description":"The post's numeric Instagram media ID, as a string. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"likes":{"description":"Number of likes on the post.","type":"integer"},"url":{"description":"Canonical URL of the post, with tracking query params stripped. Populated whenever the provider has data for the entity.","format":"uri","type":"string","x-anyapi-must-populate":true},"verified":{"description":"True when the posting account carries a verified badge.","type":"boolean"},"views":{"description":"Number of views on the post, when the upstream reports one.","type":"integer"}},"required":["id","url","author","caption","likes","comments","createdUtc"],"type":"object"},"type":"array","x-anyapi-must-populate":true}},"required":["posts","nextCursor"],"type":"object"}]},"found":{"type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"Instagram Tagged Posts output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"Instagram Tagged Posts","tags":["instagram"],"x-mint":{"href":"/api-reference/instagram/tagged-posts"},"x-payment-info":{"price":{"amount":"0.001500","currency":"USD","mode":"fixed"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"amount":"0.001500","currency":"USD","minimumUsd":"0.001000","mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"amount":"0.001500","currency":"USD","minimumUsd":null,"mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/instagram.trending_reels":{"post":{"description":"List currently trending Instagram reels. Instagram does not return play counts on this feed.\n\n**Price:** \\$1.20 per 1,000 requests (flat per request - same cost regardless of results returned).\n\n**Routing:** one lane serves this API today, so a failed attempt has nowhere to fail over to. Payment outcome follows the selected rail's settlement policy.\n\n**Catalog:** [Instagram Trending Reels pricing and uptime](https://getanyapi.com/api/instagram/trending-reels) - live USD price, lane routing, and measured 30-day uptime. [Every Instagram endpoint](https://getanyapi.com/api/instagram).","operationId":"instagram_trending_reels","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{},"schema":{"additionalProperties":false,"example":{},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true}},"required":[],"title":"Instagram Trending Reels input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"oneOf":[{"type":"null"},{"additionalProperties":false,"properties":{"reels":{"description":"Populated whenever the provider has data for the entity.","items":{"properties":{"avatarUrl":{"description":"Profile picture URL of the author.","type":"string"},"caption":{"type":"string"},"comments":{"type":"integer"},"createdUtc":{"description":"UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds.","type":"number"},"handle":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"hasAudio":{"description":"True when the reel carries an audio track.","type":"boolean"},"height":{"description":"Original pixel height of the media.","type":"integer"},"id":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"image":{"description":"Thumbnail image URL for the reel.","type":"string"},"likes":{"type":"integer"},"private":{"description":"True when the author's account is private.","type":"boolean"},"shortcode":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"url":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"userId":{"description":"Instagram user id of the author.","type":"string"},"verified":{"description":"True when the author's account carries a verified badge.","type":"boolean"},"videoUrl":{"description":"Direct URL to the reel video.","type":"string"},"width":{"description":"Original pixel width of the media.","type":"integer"}},"required":["id","shortcode","url","caption","likes","comments","handle"],"type":"object"},"type":"array","x-anyapi-must-populate":true}},"required":["reels"],"type":"object"}]},"found":{"type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"Instagram Trending Reels output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"Instagram Trending Reels","tags":["instagram"],"x-mint":{"href":"/api-reference/instagram/trending-reels"},"x-payment-info":{"price":{"amount":"0.001200","currency":"USD","mode":"fixed"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"amount":"0.001200","currency":"USD","minimumUsd":"0.001000","mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"amount":"0.001200","currency":"USD","minimumUsd":null,"mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/instagram.user_highlights":{"post":{"description":"List an Instagram account's story highlight reels by handle.\n\n**Price:** \\$1.20 per 1,000 requests (flat per request - same cost regardless of results returned).\n\n**Routing:** 2 independent lanes are available in execution order. A failed attempt uses the next lane only when the request's payment authorizes that lane's price; the normalized schema stays the same.\n\n**Catalog:** [Instagram User Highlights pricing and uptime](https://getanyapi.com/api/instagram/user-highlights) - live USD price, lane routing, and measured 30-day uptime. [Every Instagram endpoint](https://getanyapi.com/api/instagram).","operationId":"instagram_user_highlights","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"handle":"nasa"},"schema":{"additionalProperties":false,"example":{"handle":"nasa"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"handle":{"description":"Instagram username without the leading @.","type":"string"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"userId":{"description":"Instagram numeric user id (optional, faster than handle).","type":"string"}},"required":["handle"],"title":"Instagram User Highlights input","type":"object","x-aliases":{"username":"handle"}}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"oneOf":[{"type":"null"},{"additionalProperties":false,"properties":{"highlights":{"description":"Populated whenever the provider has data for the entity.","items":{"properties":{"avatarUrl":{"description":"Profile picture URL of the account that owns the highlight.","type":"string"},"coverUrl":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"id":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"ownerHandle":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"title":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"userId":{"description":"Instagram user id of the account that owns the highlight.","type":"string"}},"required":["id","title","coverUrl","ownerHandle"],"type":"object"},"type":"array","x-anyapi-must-populate":true}},"required":["highlights"],"type":"object"}]},"found":{"type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"Instagram User Highlights output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"Instagram User Highlights","tags":["instagram"],"x-mint":{"href":"/api-reference/instagram/user-highlights"},"x-payment-info":{"price":{"amount":"0.001200","currency":"USD","mode":"fixed"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"amount":"0.001200","currency":"USD","minimumUsd":"0.001000","mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"amount":"0.001200","currency":"USD","minimumUsd":null,"mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/instagram.user_posts":{"post":{"description":"List an Instagram account's recent posts (likes, comments, captions) by handle with cursor pagination.\n\n**Price:** \\$0.80 per 1,000 requests (flat per request - same cost regardless of results returned).\n\n**Routing:** 6 independent lanes are available in execution order. A failed attempt uses the next lane only when the request's payment authorizes that lane's price; the normalized schema stays the same.\n\n**Catalog:** [Instagram User Posts pricing and uptime](https://getanyapi.com/api/instagram/user-posts) - live USD price, lane routing, and measured 30-day uptime. [Every Instagram endpoint](https://getanyapi.com/api/instagram).","operationId":"instagram_user_posts","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"handle":"nasa"},"schema":{"additionalProperties":false,"example":{"handle":"nasa"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"cursor":{"description":"Pagination cursor from a previous response's nextCursor.","type":"string"},"handle":{"description":"Instagram username without the leading @.","type":"string"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true}},"required":["handle"],"title":"Instagram user posts input","type":"object","x-aliases":{"username":"handle"}}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"oneOf":[{"type":"null"},{"additionalProperties":false,"properties":{"nextCursor":{"description":"Opaque cursor for the next page of posts, or null when this lane has no more. Pass it back as cursor to continue.","type":["string","null"]},"posts":{"description":"Populated whenever the provider has data for the entity.","items":{"properties":{"avatarUrl":{"description":"Profile picture URL of the posting account.","type":"string"},"caption":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"comments":{"type":"integer"},"createdUtc":{"description":"UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds.","type":"number"},"displayName":{"description":"Display name of the posting account.","type":"string"},"durationSeconds":{"description":"Video duration in seconds. Absent on photo posts.","type":"number"},"id":{"description":"Instagram media id. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"likes":{"type":"integer"},"media":{"description":"Photo, video, and GIF attachments on the post. Empty when the post has none.","items":{"properties":{"height":{"description":"Pixel height of the media item, when the lane reports it.","type":"integer"},"type":{"description":"One of photo, video, or gif.","type":"string"},"url":{"description":"Image URL. For a video or GIF this is the poster/thumbnail frame.","format":"uri","type":"string"},"videoUrl":{"description":"Playable video file URL. Present only for video and gif items.","format":"uri","type":"string"},"width":{"description":"Pixel width of the media item, when the lane reports it.","type":"integer"}},"required":["type","url"],"type":"object"},"type":"array"},"url":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"userId":{"description":"Instagram user id of the posting account.","type":"string"},"username":{"description":"Username of the account that posted. A profile feed includes collaborator posts, so this is not always the requested handle. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"verified":{"description":"True when the posting account is verified.","type":"boolean"}},"required":["id","url","caption","likes","comments","createdUtc","username","verified"],"type":"object"},"type":"array","x-anyapi-must-populate":true}},"required":["posts","nextCursor"],"type":"object"}]},"found":{"type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"Instagram user posts output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"Instagram User Posts","tags":["instagram"],"x-mint":{"href":"/api-reference/instagram/user-posts"},"x-payment-info":{"price":{"amount":"0.000800","currency":"USD","mode":"fixed"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"amount":"0.001000","currency":"USD","minimumUsd":"0.001000","mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"amount":"0.000800","currency":"USD","minimumUsd":null,"mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/instagram.user_reels":{"post":{"description":"List an Instagram account's reels by handle with cursor pagination (caption, plays, likes, comments).\n\n**Price:** \\$0.80 per 1,000 requests (flat per request - same cost regardless of results returned).\n\n**Routing:** 6 independent lanes are available in execution order. A failed attempt uses the next lane only when the request's payment authorizes that lane's price; the normalized schema stays the same.\n\n**Catalog:** [Instagram User Reels pricing and uptime](https://getanyapi.com/api/instagram/user-reels) - live USD price, lane routing, and measured 30-day uptime. [Every Instagram endpoint](https://getanyapi.com/api/instagram).","operationId":"instagram_user_reels","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"handle":"nasa"},"schema":{"additionalProperties":false,"anyOf":[{"required":["handle"]},{"required":["userId"]}],"example":{"handle":"nasa"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"cursor":{"description":"Pagination cursor (max_id) from a previous response's nextCursor.","type":"string"},"handle":{"description":"Instagram handle.","type":"string"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"userId":{"description":"Instagram user id (faster than handle when known).","type":"string"}},"title":"Instagram user reels input","type":"object","x-aliases":{"username":"handle"}}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"oneOf":[{"type":"null"},{"additionalProperties":false,"properties":{"nextCursor":{"description":"Opaque cursor for the next page of reels, or null when this lane has no more. Pass it back as cursor to continue.","type":["string","null"]},"reels":{"description":"Populated whenever the provider has data for the entity.","items":{"properties":{"avatarUrl":{"description":"Profile picture URL of the posting account.","type":"string"},"caption":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"comments":{"type":"integer"},"createdUtc":{"description":"UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds.","type":"number"},"displayName":{"description":"Display name of the posting account.","type":"string"},"durationSeconds":{"description":"Reel duration in seconds.","type":"number"},"id":{"description":"Instagram media id. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"likes":{"type":"integer"},"media":{"description":"Photo, video, and GIF attachments on the post. Empty when the post has none.","items":{"properties":{"height":{"description":"Pixel height of the media item, when the lane reports it.","type":"integer"},"type":{"description":"One of photo, video, or gif.","type":"string"},"url":{"description":"Image URL. For a video or GIF this is the poster/thumbnail frame.","format":"uri","type":"string"},"videoUrl":{"description":"Playable video file URL. Present only for video and gif items.","format":"uri","type":"string"},"width":{"description":"Pixel width of the media item, when the lane reports it.","type":"integer"}},"required":["type","url"],"type":"object"},"type":"array"},"shortcode":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"userId":{"description":"Instagram user id of the posting account.","type":"string"},"username":{"description":"Username of the account that posted the reel. A reels tab includes collaborator reels, so this is not always the requested handle. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"verified":{"description":"True when the posting account is verified.","type":"boolean"},"views":{"type":"integer"}},"required":["id","shortcode","caption","views","likes","comments","createdUtc","username","verified","durationSeconds"],"type":"object"},"type":"array","x-anyapi-must-populate":true}},"required":["reels","nextCursor"],"type":"object"}]},"found":{"type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"Instagram user reels output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"Instagram User Reels","tags":["instagram"],"x-mint":{"href":"/api-reference/instagram/user-reels"},"x-payment-info":{"price":{"amount":"0.000800","currency":"USD","mode":"fixed"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"amount":"0.001000","currency":"USD","minimumUsd":"0.001000","mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"amount":"0.000800","currency":"USD","minimumUsd":null,"mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/instagram.user_reposts":{"post":{"description":"List the posts a public Instagram account has reposted to its feed, with cursor pagination.\n\n**Price:** \\$1.20 per 1,000 requests (flat per request - same cost regardless of results returned).\n\n**Routing:** one lane serves this API today, so a failed attempt has nowhere to fail over to. Payment outcome follows the selected rail's settlement policy.\n\n**Catalog:** [Instagram User Reposts pricing and uptime](https://getanyapi.com/api/instagram/user-reposts) - live USD price, lane routing, and measured 30-day uptime. [Every Instagram endpoint](https://getanyapi.com/api/instagram).","operationId":"instagram_user_reposts","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"userId":"787132"},"schema":{"additionalProperties":false,"example":{"userId":"787132"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"cursor":{"description":"Pagination cursor from a previous response's nextCursor.","type":"string"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"userId":{"description":"Instagram's numeric account id, as returned by instagram.profile.","type":"string"}},"required":["userId"],"title":"Instagram User Reposts input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"oneOf":[{"type":"null"},{"additionalProperties":false,"properties":{"nextCursor":{"description":"Opaque cursor for the next page of reposts, or null when there are no more. Pass it back as cursor to continue.","type":["string","null"]},"posts":{"description":"Posts the account has reposted to its feed, newest first. Populated whenever the provider has data for the entity.","items":{"properties":{"altText":{"description":"Instagram's generated accessibility description of the media.","type":"string"},"author":{"description":"Username of the account that posted it, without the leading @. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"authorId":{"description":"The author's numeric Instagram account id, as a string.","type":"string"},"authorName":{"description":"The author's display name.","type":"string"},"authorPrivate":{"description":"Whether the author's account is private.","type":"boolean"},"authorVerified":{"description":"Whether the author carries Instagram's verified badge.","type":"boolean"},"avatarUrl":{"description":"Author's profile picture URL, as Instagram's CDN serves it.","format":"uri","type":"string"},"caption":{"description":"Post caption text.","type":"string"},"captionEdited":{"description":"Whether the caption has been edited since posting.","type":"boolean"},"carouselCount":{"description":"Number of slides, present on carousel posts only.","type":"integer"},"coauthors":{"description":"Accounts listed as coauthors of the post.","items":{"properties":{"displayName":{"description":"Account display name.","type":"string"},"userId":{"description":"Instagram's numeric account id, as a string.","type":"string"},"username":{"description":"Instagram username without the leading @.","type":"string"},"verified":{"description":"Whether the account carries Instagram's verified badge.","type":"boolean"}},"required":["username"],"type":"object"},"type":"array"},"comments":{"description":"Number of comments on the post.","type":"integer"},"countsHidden":{"description":"Whether the author has hidden the like and view counts.","type":"boolean"},"createdUtc":{"description":"UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds.","type":"number"},"hasAudio":{"description":"Whether the video carries an audio track.","type":"boolean"},"height":{"description":"Media height in pixels.","type":"integer"},"id":{"description":"The post's numeric Instagram media ID, as a string. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"image":{"description":"Post image or video thumbnail URL, as Instagram's CDN serves it. Populated whenever the provider has data for the entity.","format":"uri","type":"string","x-anyapi-must-populate":true},"likes":{"description":"Number of likes on the post.","type":"integer"},"locationId":{"description":"Instagram location id the post is tagged at.","type":"string"},"locationLat":{"description":"Latitude of the tagged location, in decimal degrees.","type":"number"},"locationLng":{"description":"Longitude of the tagged location, in decimal degrees.","type":"number"},"locationName":{"description":"Name of the location the post is tagged at.","type":"string"},"mediaType":{"description":"What the post is: photo, video or carousel.","type":"string"},"paidPartnership":{"description":"Whether the post is tagged as a paid partnership.","type":"boolean"},"productType":{"description":"Instagram's own surface label for the post, such as feed, clips or carousel_container.","type":"string"},"reshares":{"description":"Number of times the post has been reshared, when Instagram reports it.","type":"integer"},"shortcode":{"description":"The post's short code, the segment Instagram puts in its URL.","type":"string"},"taggedUsers":{"description":"Accounts tagged in the media.","items":{"properties":{"displayName":{"description":"Account display name.","type":"string"},"userId":{"description":"Instagram's numeric account id, as a string.","type":"string"},"username":{"description":"Instagram username without the leading @.","type":"string"}},"required":["username"],"type":"object"},"type":"array"},"url":{"description":"Canonical URL of the post. Populated whenever the provider has data for the entity.","format":"uri","type":"string","x-anyapi-must-populate":true},"videoDurationSeconds":{"description":"Video length in seconds, present on video posts and reels only.","type":"number"},"videoUrl":{"description":"Direct video file URL, present on video posts and reels only.","format":"uri","type":"string"},"views":{"description":"Play count, present on video posts and reels only.","type":"integer"},"width":{"description":"Media width in pixels.","type":"integer"}},"required":["id","url","author","caption","likes","comments","createdUtc"],"type":"object"},"type":"array","x-anyapi-must-populate":true}},"required":["posts","nextCursor"],"type":"object"}]},"found":{"type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"Instagram User Reposts output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"Instagram User Reposts","tags":["instagram"],"x-mint":{"href":"/api-reference/instagram/user-reposts"},"x-payment-info":{"price":{"amount":"0.001200","currency":"USD","mode":"fixed"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"amount":"0.001200","currency":"USD","minimumUsd":"0.001000","mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"amount":"0.001200","currency":"USD","minimumUsd":null,"mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/instagram.web_reels_search":{"post":{"description":"Search Instagram Reels through a web search index rather than Instagram's own search, and get matching reels (caption, likes, comments, creator, and duration). That is what lets it filter by a recency window and page by number, and it is also why the results are whatever the index has crawled rather than what Instagram ranks right now, and why paging tops out around 110 reels per query (11 pages of 10). Instagram does not return view or play counts here. For Instagram's own live reels search, with view counts, use instagram.reels_search.\n\n**Price:** \\$1.20 per 1,000 requests (flat per request - same cost regardless of results returned).\n\n**Routing:** one lane serves this API today, so a failed attempt has nowhere to fail over to. Payment outcome follows the selected rail's settlement policy.\n\n**Catalog:** [Instagram Reels Web Search pricing and uptime](https://getanyapi.com/api/instagram/web-reels-search) - live USD price, lane routing, and measured 30-day uptime. [Every Instagram endpoint](https://getanyapi.com/api/instagram).","operationId":"instagram_web_reels_search","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"query":"travel"},"schema":{"additionalProperties":false,"example":{"query":"travel"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"datePosted":{"description":"Recency hint, not a hard filter. Reel discovery runs on top of Google search, so this window narrows Google's index by when it discovered or last crawled the reel, which is not the same as when the reel was published to Instagram. Returned reels can have a createdUtc outside the requested window, and the narrowest window, last-week, often returns older reels or no results. Check createdUtc yourself if you need exact publication-time precision.","enum":["last-week","last-month","last-year"],"type":"string"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"page":{"default":1,"description":"1-based results page.","minimum":1,"type":"integer"},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"query":{"description":"Search keyword (e.g. \"crossfit\").","type":"string"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true}},"required":["query"],"title":"Instagram reels web search input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"description":"Wrapper holding the reels array, or null when nothing was found.","oneOf":[{"type":"null"},{"additionalProperties":false,"properties":{"reels":{"description":"Reels matching the search. Populated whenever the provider has data for the entity.","items":{"properties":{"caption":{"description":"Reel caption text. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"comments":{"description":"Number of comments on the reel.","type":"integer"},"createdUtc":{"description":"UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds.","type":"number"},"durationSeconds":{"description":"Reel duration in seconds.","type":"number"},"likes":{"description":"Number of likes on the reel.","type":"integer"},"paidPartnership":{"description":"True when the reel is a paid partnership.","type":"boolean"},"shortcode":{"description":"Instagram media shortcode. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"thumbnail":{"description":"URL of the reel thumbnail image. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"url":{"description":"Canonical URL of the reel. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"username":{"description":"Username of the account that posted the reel. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"verified":{"description":"True when the posting account is verified.","type":"boolean"}},"required":["shortcode","url","caption","thumbnail","likes","comments","durationSeconds","createdUtc","username","verified","paidPartnership"],"type":"object"},"type":"array","x-anyapi-must-populate":true}},"required":["reels"],"type":"object"}]},"found":{"description":"True when matching reels were found; false when the search returned nothing.","type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"Instagram reels web search output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"Instagram Reels Web Search","tags":["instagram"],"x-mint":{"href":"/api-reference/instagram/web-reels-search"},"x-payment-info":{"price":{"amount":"0.001200","currency":"USD","mode":"fixed"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"amount":"0.001200","currency":"USD","minimumUsd":"0.001000","mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"amount":"0.001200","currency":"USD","minimumUsd":null,"mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/job_search.theirstack":{"post":{"description":"Search TheirStack's job-post index by company, technology, keyword, title, seniority, salary, location and how recently the post appeared, and get the hiring company's full firmographic record with every post. Billed per job returned.\n\n**Price:** billed per result - \\$67.20 per 1,000 results, capped at \\$9,945.60 per 1,000 requests.\n\n**Routing:** one lane serves this API today, so a failed attempt has nowhere to fail over to. Payment outcome follows the selected rail's settlement policy.\n\n**Catalog:** [Job Search - TheirStack pricing and uptime](https://getanyapi.com/api/job-search/theirstack) - live USD price, lane routing, and measured 30-day uptime. [Every Job_search endpoint](https://getanyapi.com/api/job-search).","operationId":"job_search_theirstack","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"companyDomainOr":["stripe.com"],"limit":1,"postedAtMaxAgeDays":30},"schema":{"additionalProperties":false,"example":{"companyDomainOr":["stripe.com"],"limit":1,"postedAtMaxAgeDays":30},"minProperties":1,"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"companyCountryCodeNot":{"description":"Return companies whose HQ country code is not any of the ones passed here, case sensitive. Pass ISO2 country codes.","items":{"type":"string"},"type":"array"},"companyCountryCodeOr":{"description":"Return companies whose HQ country code is any of the ones passed here, case sensitive. Pass ISO2 country codes.","items":{"type":"string"},"type":"array"},"companyDescriptionPatternAccentInsensitive":{"description":"Set to True to make company description searches accent insensitive. For example, \"á\" will match \"a\" as well.","type":"boolean"},"companyDescriptionPatternNot":{"description":"Case-insensitive patterns to match in the company description. Will return companies that match any of the patterns.","items":{"type":"string"},"type":"array"},"companyDescriptionPatternOr":{"description":"Case-insensitive patterns to match in the company description. Will return companies that match any of the patterns.","items":{"type":"string"},"type":"array"},"companyDomainNot":{"description":"Only return companies that don't match these domains exactly. It accepts full urls (https://www.google.com/) and emails (john.polo@gmail.com).","items":{"type":"string"},"type":"array"},"companyDomainOr":{"description":"Only return companies that match these domains exactly. It accepts full urls (https://www.google.com/) and emails (john.polo@gmail.com). This filter acts as an OR filter, so if you pass more than one company domain, it will return companies that match any of the domains.","items":{"type":"string"},"type":"array"},"companyIdOr":{"description":"Only return companies that match these IDs exactly. This filter acts as an OR filter, so if you pass more than one company ID, it will return companies that match any of the IDs.","items":{"type":"string"},"type":"array"},"companyInvestorsOr":{"description":"Investors of the company","items":{"type":"string"},"type":"array"},"companyInvestorsPartialMatchOr":{"description":"Investors of the company. Will return companies for which any of their investors contains any of the substrings passed here. For example, if you pass 'andree', all funds that match it (like 'Andreessen Horowitz', 'Andreessen Horowitz LLC', etc).","items":{"type":"string"},"type":"array"},"companyKeywordSlugAnd":{"description":"Return results from companies that have mentioned all of these keywords in their jobs. Case sensitive. Pass slugs. Check out all the keywords we track at GET /v0/catalog/keywords","items":{"type":"string"},"type":"array"},"companyKeywordSlugNot":{"description":"Return results from companies that haven't mentioned any of these keywords in their jobs. Case sensitive. Pass slugs. Check out all the keywords we track at GET /v0/catalog/keywords","items":{"type":"string"},"type":"array"},"companyKeywordSlugOr":{"description":"Return results from companies that have mentioned any of these keywords in their jobs. Case sensitive. Pass slugs. Check out all the keywords we track at GET /v0/catalog/keywords","items":{"type":"string"},"type":"array"},"companyLinkedinUrlExists":{"description":"(Use `property_exists_or / property_exists_and` instead) Only return companies with a LinkedIn URL","type":"boolean"},"companyLinkedinUrlOr":{"description":"Return companies whose LinkedIn URL matches any of the slugs passed here. Can also pass full LinkedIn company URLs.","items":{"type":"string"},"type":"array"},"companyListIdNot":{"description":"Return companies that don't belong to any of the company lists passed here","items":{"type":"string"},"type":"array"},"companyListIdOr":{"description":"Return companies that belong to any of the company lists passed here","items":{"type":"string"},"type":"array"},"companyLocationPatternOr":{"description":"Return companies whose city matches any of the patterns passed here. Case insensitive. For example, if you pass 'san francisco', it will return companies whose city is 'San Francisco', 'San Francisco Bay Area', etc.","items":{"type":"string"},"type":"array"},"companyNameCaseInsensitiveOr":{"description":"Only return companies that match these names exactly, case-insensitively.","items":{"type":"string"},"type":"array"},"companyNameNot":{"description":"Only return companies that don't match these names exactly, case-sensitively.","items":{"type":"string"},"type":"array"},"companyNameOr":{"description":"Only return companies that match these names exactly, case-sensitively. This filter acts as an OR filter, so if you pass more than one company name, it will return companies that match any of the names.","items":{"type":"string"},"type":"array"},"companyNamePartialMatchNot":{"description":"Company names. Will return companies whose name doesn't contain any of the the substrings passed here, case-insensitively. For example, if you pass 'google', it will exclude 'Google', 'Google LLC', 'Google Inc', etc.","items":{"type":"string"},"type":"array"},"companyNamePartialMatchOr":{"description":"Company names. Will return companies whose name contain any of the the substrings passed here, case-insensitively. For example, if you pass \"google\", it will return \"Google\", \"Google LLC\", \"Google Inc\", etc.","items":{"type":"string"},"type":"array"},"companyTagsOr":{"description":"Return companies that match any of these keywords","items":{"type":"string"},"type":"array"},"companyTechnologySlugAnd":{"description":"Will return jobs from companies that that have mentioned all of these technologies in their jobs (not necessarily in the jobs returned). Case sensitive. Pass slugs. Check out all the technologies we track at GET /v0/catalog/technologies. Deprecated: use company_keyword_slug_and instead.","items":{"type":"string"},"type":"array"},"companyTechnologySlugNot":{"description":"Will return jobs from companies that that haven't mentioned any of these technologies in their jobs. Case sensitive. Pass slugs. Check out all the technologies we track at GET /v0/catalog/technologies. Deprecated: use company_keyword_slug_not instead.","items":{"type":"string"},"type":"array"},"companyTechnologySlugOr":{"description":"Will return jobs from companies that that have mentioned any of these technologies in their jobs (not necessarily in the jobs returned). Case sensitive. Pass slugs. Check out all the technologies we track at GET /v0/catalog/technologies. Deprecated: use company_keyword_slug_or instead.","items":{"type":"string"},"type":"array"},"companyType":{"description":"Filter by company type.","type":"string"},"discoveredAtGte":{"description":"Only jobs discovered by TheirStack on this date or datetime or after will be returned. In UTC timezone.","type":"string"},"discoveredAtLte":{"description":"Only jobs discovered by TheirStack on this date or datetime or before will be returned. In UTC timezone.","type":"string"},"discoveredAtMaxAgeDays":{"description":"If 0, only return jobs added to our database in the current day. If 1, from today and yesterday, etc.","type":"integer"},"discoveredAtMinAgeDays":{"description":"If 1, only return jobs discovered by TheirStack until yesterday. If 2, until 2 days ago, etc.","type":"integer"},"easyApply":{"description":"If True, only return jobs that can be applied directly through the job board. If False, only return jobs that require redirecting to the company's website.","type":"boolean"},"employmentStatusesOr":{"description":"Filter jobs by employment status. Returns jobs that match any of the specified employment types. If no values are provided or an empty list is sent, all jobs regardless of employment status will be returned.","items":{"type":"string"},"type":"array"},"finalUrlExists":{"description":"(Use `property_exists_or / property_exists_and` instead) Only return jobs with a final URL. Typically jobs that were originally posted on an ATS. If True, only return jobs with a final URL. If False, only return jobs without a final URL. If None, return all jobs.","type":"boolean"},"fundingStageOr":{"description":"Funding stages of companies returned. Possible values: ['angel', 'convertible_note', 'debt_financing', 'equity_crowdfunding', 'other', 'private_equity', 'seed', 'series_a', 'series_b', 'series_c', 'series_d', 'series_e', 'series_f', 'series_g', 'series_h', 'venture_round_not_specified', 'series_i', 'series_j', 'undisclosed', 'series_unknown', 'pre_seed', 'post_ipo_secondary', 'post_ipo_equity', 'post_ipo_debt', 'non_equity_assistance', 'late_vc', 'initial_coin_offering', 'growth_equity_vc', 'grant', 'early_vc', 'corporate_round', 'secondary_market', 'product_crowdfunding']","items":{"type":"string"},"type":"array"},"hiringManagersExists":{"description":"(Use `property_exists_or / property_exists_and` instead) If True, only return jobs with a hiring manager. If False, only return jobs without a hiring manager. If None, return all jobs.","type":"boolean"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"includeTotalResults":{"description":"When enabled, calculates and returns `total_results` and `total_companies` fields in the response. WARNING: This significantly slows down responses as it requires reading the entire dataset. Recommended usage: enable only for the initial request to get totals, then disable for subsequent pagination requests.","type":"boolean"},"industryIdNot":{"description":"Industry ids to exclude.You can use any of LinkedIn's Industry Codes V2 or GET /v0/catalog/industries","items":{"type":"string"},"type":"array"},"industryIdOr":{"description":"Industry codes. You can use any of LinkedIn's Industry Codes V2 or GET /v0/catalog/industries","items":{"type":"string"},"type":"array"},"industryNot":{"description":"Names of industries, case-insensitive. Results will exclude companies that belong to any of the industries specified in this parameter. Available values: GET /v0/catalog/industries WARNING: Deprecated parameter. Use the industry_id_not field instead.","items":{"type":"string"},"type":"array"},"industryOr":{"description":"Names of industries, case-insensitive. Results will only include companies that belong to any of the industries specified in this parameter. Available values: GET /v0/catalog/industries WARNING: Deprecated parameter. Use the industry_id_or field instead.","items":{"type":"string"},"type":"array"},"jobCountryCodeNot":{"description":"2-letter ISO country code of the location of the job. Can pass more than 1. Will exclude jobs from these countries","items":{"type":"string"},"type":"array"},"jobCountryCodeOr":{"description":"2-letter ISO country code of the location of the job. Can pass more than 1","items":{"type":"string"},"type":"array"},"jobDescriptionContainsNot":{"description":"Exclude jobs whose description contains any of these whole words using word boundaries (\\b). Case-insensitive by default, except for the patterns that are uppercase - in that case we'll respect it. Only finds complete words (e.g., searching 'quality' won't match 'inequality'). Results will exclude jobs whose description contains any of these words.","items":{"type":"string"},"type":"array"},"jobDescriptionContainsOr":{"description":"Search for whole words in job descriptions using word boundaries (\\b). Case-insensitive by default, except for the patterns that are uppercase - in that case we'll respect it. Only finds complete words (e.g., searching 'quality' won't match 'inequality'). Results will include jobs whose description contains any of these words.","items":{"type":"string"},"type":"array"},"jobDescriptionPatternAnd":{"description":"Regex patterns that must ALL match the job description (AND logic). Use (?i) at the start of a pattern to make it case-insensitive. Results will only include jobs whose description matches every pattern in this list.","items":{"type":"string"},"type":"array"},"jobDescriptionPatternCaseSensitiveOr":{"description":"Deprecated. Use job_description_pattern_or instead, which now behaves identically.","items":{"type":"string"},"type":"array"},"jobDescriptionPatternIsCaseInsensitive":{"description":"Deprecated. Has no effect.","type":"boolean"},"jobDescriptionPatternNot":{"description":"Regex patterns to look for in job descriptions. Case-sensitive. Results will include jobs whose description don't match any of these patterns. Use (?i) at the start of a pattern to make it case-insensitive. Can pass more than one.","items":{"type":"string"},"type":"array"},"jobDescriptionPatternOr":{"description":"Regex patterns to look for in job descriptions. Case-sensitive. Results will include jobs whose description matches any of these patterns. Use (?i) at the start of a pattern to make it case-insensitive. Can pass more than one.","items":{"type":"string"},"type":"array"},"jobIdNot":{"description":"Exclude jobs with these IDs.","items":{"type":"string"},"type":"array"},"jobIdOr":{"description":"Get jobs with these IDs only.","items":{"type":"string"},"type":"array"},"jobIds":{"description":"Get jobs with these IDs only. Deprecated parameter, use job_id_or instead.","items":{"type":"string"},"type":"array"},"jobKeywordSlugAnd":{"description":"Will return jobs where all of these keyword slugs appear. Case sensitive. Check out all the keywords we track at GET /v0/catalog/keywords","items":{"type":"string"},"type":"array"},"jobKeywordSlugNot":{"description":"Will return jobs where none of these keyword slugs appear. Case sensitive. Check out all the keywords we track at GET /v0/catalog/keywords","items":{"type":"string"},"type":"array"},"jobKeywordSlugOr":{"description":"Will return jobs where any of these keyword slugs appear. Case sensitive. Check out all the keywords we track at GET /v0/catalog/keywords","items":{"type":"string"},"type":"array"},"jobLocationNot":{"description":"Filter jobs by location. Returns jobs whose locations DO NOT match ANY of the specified location criteria. Each location criteria is specified using a JobLocationFilter object. (You can find location IDs using the locations catalog endpoint)","items":{"type":"string"},"type":"array"},"jobLocationOr":{"description":"Filter jobs by location. Returns jobs whose locations match ANY of the specified location criteria. Each location criteria is specified using a JobLocationFilter object. (You can find location IDs using the locations catalog endpoint)","items":{"type":"string"},"type":"array"},"jobLocationPatternNot":{"description":"Regex patterns to exclude job locations. Case-insensitive. Searches both the location field and the enhanced locations array (using normalized city and state name fields within each location element). Jobs matching ANY of the provided patterns will be EXCLUDED from results. Use this to filter out specific locations.","items":{"type":"string"},"type":"array"},"jobLocationPatternOr":{"description":"Regex patterns to match job locations. Case-insensitive. Searches both the location field and the enhanced locations array (using normalized city and state name fields within each location element). Jobs matching ANY of the provided patterns will be returned. Use this to find jobs in specific cities, states, or regions.","items":{"type":"string"},"type":"array"},"jobSeniorityOr":{"description":"Will return jobs where the seniority is any of the ones passed here","items":{"type":"string"},"type":"array"},"jobTechnologySlugAnd":{"description":"Will return jobs where all of these technologies appear. Case sensitive. Pass slugs. Check out all the technologies we track with the technologies endpoint.","items":{"type":"string"},"type":"array"},"jobTechnologySlugNot":{"description":"Will return jobs where none of these technologies appear. Case sensitive. Pass slugs. Check out all the technologies we track with the technologies endpoint.","items":{"type":"string"},"type":"array"},"jobTechnologySlugOr":{"description":"Will return jobs where any of these technologies appear. Case sensitive. Pass slugs. Check out all the technologies we track with the technologies endpoint. If you pass more than one technology, we will return jobs that mentnion all of the technologies.","items":{"type":"string"},"type":"array"},"jobTitleNot":{"description":"Natural language patterns to match job titles. Case-insensitive. Only jobs with title that do not match any of these patterns will be returned. Uses Postgres full text search.","items":{"type":"string"},"type":"array"},"jobTitleOr":{"description":"Natural language patterns to match job titles. Case-insensitive. Only jobs with title that match any of these patterns will be returned. Uses Postgres full text search.","items":{"type":"string"},"type":"array"},"jobTitlePatternAnd":{"description":"Regex patterns to match job titles. Case-insensitive. Only jobs with title that match all of these patterns will be returned.","items":{"type":"string"},"type":"array"},"jobTitlePatternNot":{"description":"Regex patterns to match job titles. Case-insensitive. Jobs whose job title doesn't match any of the patterns will be returned.","items":{"type":"string"},"type":"array"},"jobTitlePatternOr":{"description":"Regex patterns to match job titles. Case-insensitive. Jobs whose job title matches of the filters will be returned.","items":{"type":"string"},"type":"array"},"lastFundingRoundDateGte":{"description":"Only return companies whose last funding round date is after or on this date. Format: 'YYYY-MM-DD'","type":"string"},"lastFundingRoundDateLte":{"description":"Only return companies whose last funding round date is before or on this date. Format: 'YYYY-MM-DD'","type":"string"},"limit":{"default":25,"description":"Rows to return on this page, up to TheirStack's maximum of 500. Every row returned is billed.","maximum":148,"minimum":1,"type":"integer"},"maxEmployeeCount":{"description":"Maximum number of employees in a company","type":"integer"},"maxEmployeeCountOrNull":{"description":"Maximum number of employees in a company. If we don't have company size information, we will return it as well.","type":"integer"},"maxFundingUsd":{"description":"Maximum company funding, in USD","type":"integer"},"maxRevenueUsd":{"description":"Maximum company revenue, in USD","type":"integer"},"maxSalaryUsd":{"description":"Maximum annual salary in USD. For example, 150000 means $150,000.","type":"number"},"minEmployeeCount":{"description":"Minimum number of employees in a company","type":"integer"},"minEmployeeCountOrNull":{"description":"Minimum number of employees in a company. If we don't have company size information, we will return it as well.","type":"integer"},"minFundingUsd":{"description":"Minimum company funding, in USD","type":"integer"},"minRevenueUsd":{"description":"Minimum company revenue, in USD","type":"integer"},"minSalaryUsd":{"description":"Minimum annual salary in USD. For example, 100000 means $100,000.","type":"number"},"offset":{"description":"Number of results to skip. Required for offset-based pagination.","type":"integer"},"onlyJobsWithHiringManagers":{"description":"Only return jobs with a hiring manager. If True, only return jobs with a hiring manager. If False, only return jobs without a hiring manager. If None, return all jobs.","type":"boolean"},"onlyJobsWithReportsTo":{"description":"Only return jobs where we identified the role the hired person would report to. Deprecated field, use reports_to_exists instead.","type":"boolean"},"onlyYcCompanies":{"description":"Only return YC companies","type":"boolean"},"orderBy":{"description":"List of column objects. You can pass several columns to order by, in order of priority. Only `field` is required, `desc` is True by default.","items":{"type":"string"},"type":"array"},"page":{"description":"Page number. Required when using page-based pagination.","type":"integer"},"postedAtGte":{"description":"ISO 8601 date string (yyyy-mm-dd). Only jobs published in this date or after will be returned.","type":"string"},"postedAtLte":{"description":"ISO 8601 date string (yyyy-mm-dd). Only jobs published in this date or before will be returned.","type":"string"},"postedAtMaxAgeDays":{"description":"Date posted max age in days. If 0, only return jobs posted today. If 1, from today and yesterday, etc.","type":"integer"},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"propertyExistsAnd":{"items":{"type":"string"},"type":"array"},"propertyExistsOr":{"description":"Return jobs that have any of these fields not null. For example, if you pass ['final_url'], it will return jobs that have a final_url set. This field also support chaining of fields. For example, if you pass ['company_object.domain', 'company_object.linkedin_url'], it will return jobs that have a company domain or a company linkedin_url set.","items":{"type":"string"},"type":"array"},"remote":{"description":"True: only show remote jobs. False: only show non-remote jobs. None: show all jobs.","type":"boolean"},"reportsToExists":{"description":"Only return jobs where we identified the role the hired person would report to. If True, only return jobs where we identified the role the hired person would report to. If False, only return jobs where we didn't identify the role the hired person would report to. If None, return all jobs.","type":"boolean"},"scraperNamePatternOr":{"description":"Regex patterns to match job sources. Case-insensitive.","items":{"type":"string"},"type":"array"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"urlDomainNot":{"description":"Exclude jobs if their URL domain (from `url` or `source_url`) is in the provided case-insensitive list. For example, ['greenhouse.io', 'workable.com'] will exclude URLs containing 'greenhouse.io' or 'workable.com'. Refer to our list of sources at https://theirstack.com/en/docs/data/job/sources.","items":{"type":"string"},"type":"array"},"urlDomainOr":{"description":"Include jobs only if their URL domain (from `url` or `source_url`) is in the provided case-insensitive list. For example, ['greenhouse.io', 'workable.com'] will match URLs containing 'greenhouse.io' or 'workable.com'. Refer to our list of sources at https://theirstack.com/en/docs/data/job/sources.","items":{"type":"string"},"type":"array"}},"title":"Job Search - TheirStack input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"description":"The matching rows plus TheirStack's result counters.","oneOf":[{"type":"null"},{"additionalProperties":false,"properties":{"jobs":{"description":"Matching job posts, each carrying the hiring company's firmographic record.","items":{"properties":{"avgAnnualSalaryUsd":{"description":"Midpoint of the posted annual salary, converted to USD.","type":"number"},"cities":{"description":"Every city the post covers.","items":{"type":"string"},"type":"array"},"closedUtc":{"description":"UTC epoch timestamp in seconds (Unix time) the post closed. Multiply by 1000 for a JS Date in milliseconds.","type":"number"},"company":{"description":"The hiring company's full TheirStack firmographic record.","properties":{"alexaRanking":{"description":"Alexa traffic rank for the company website.","type":"integer"},"annualRevenueReadable":{"description":"Estimated annual revenue as a display string, e.g. 4.2M.","type":"string"},"annualRevenueUsd":{"description":"Estimated annual revenue in USD.","type":"number"},"apolloId":{"description":"Apollo's identifier for the same company.","type":"string"},"city":{"description":"Headquarters city.","type":"string"},"companyId":{"description":"TheirStack's own company identifier.","type":"string"},"companyKeywords":{"description":"Keywords TheirStack assigns the company.","items":{"type":"string"},"type":"array"},"companyTags":{"description":"Tags TheirStack assigns the company.","items":{"type":"string"},"type":"array"},"country":{"description":"Headquarters country.","type":"string"},"countryCode":{"description":"ISO 3166-1 alpha-2 country code.","type":"string"},"domain":{"description":"Primary company domain.","type":"string"},"employeeCount":{"description":"Employees TheirStack currently counts.","type":"integer"},"employeeCountRange":{"description":"Employee headcount band, e.g. 201-500.","type":"string"},"foundedYear":{"description":"Year the company was founded.","type":"integer"},"fundingStage":{"description":"Most recent funding stage, e.g. series_b.","type":"string"},"hasBlurredData":{"description":"True when TheirStack redacted part of the record on this plan.","type":"boolean"},"image":{"description":"Company logo URL.","format":"uri","type":"string"},"industry":{"description":"Company industry.","type":"string"},"industryId":{"description":"TheirStack's identifier for that industry.","type":"string"},"investors":{"description":"Investors TheirStack records for the company.","items":{"type":"string"},"type":"array"},"isRecruitingAgency":{"description":"True when TheirStack classifies the company as a recruiting agency rather than a direct employer.","type":"boolean"},"keywordSlugs":{"description":"Keyword slugs found in the company's job posts. These are the values the keyword filters take.","items":{"type":"string"},"type":"array"},"lastFundingRoundReadable":{"description":"Most recent round size as a display string, e.g. $15M.","type":"string"},"lastFundingRoundUtc":{"description":"UTC epoch timestamp in seconds (Unix time) of the most recent funding round. Multiply by 1000 for a JS Date in milliseconds.","type":"number"},"linkedinId":{"description":"Company LinkedIn numeric id.","type":"string"},"linkedinUrl":{"description":"Company LinkedIn page URL.","format":"uri","type":"string"},"longDescription":{"description":"Company description as the company writes it.","type":"string"},"name":{"description":"Company name.","type":"string"},"numBuyingIntentTopics":{"description":"Distinct buying-intent topics detected in the company's job posts.","type":"integer"},"numJobs":{"description":"Job posts TheirStack holds for the company, all time.","type":"integer"},"numJobsLast30Days":{"description":"Job posts published in the last 30 days.","type":"integer"},"numKeywords":{"description":"Distinct keywords detected in the company's job posts.","type":"integer"},"numTechnologies":{"description":"Distinct technologies detected in the company's job posts.","type":"integer"},"possibleDomains":{"description":"Every domain TheirStack associates with the company.","items":{"type":"string"},"type":"array"},"postalCode":{"description":"Headquarters postal code.","type":"string"},"publiclyTradedExchange":{"description":"Exchange the company lists on.","type":"string"},"publiclyTradedSymbol":{"description":"Stock ticker, for listed companies.","type":"string"},"seoDescription":{"description":"Meta description from the company's website.","type":"string"},"technologyNames":{"description":"Human-readable names for those technologies.","items":{"type":"string"},"type":"array"},"technologySlugs":{"description":"Technology slugs found in the company's job posts. These are the values the technology filters take.","items":{"type":"string"},"type":"array"},"totalFundingUsd":{"description":"Total capital raised, in USD.","type":"number"},"url":{"description":"Company website URL.","format":"uri","type":"string"},"ycBatch":{"description":"Y Combinator batch, e.g. W20, for companies that went through it.","type":"string"}},"type":"object"},"companyDomain":{"description":"Hiring company domain.","type":"string"},"companyName":{"description":"Hiring company name.","type":"string"},"continents":{"description":"Every continent the post covers.","items":{"type":"string"},"type":"array"},"countries":{"description":"Every country the post covers.","items":{"type":"string"},"type":"array"},"country":{"description":"Country name.","type":"string"},"countryCode":{"description":"ISO 3166-1 alpha-2 country code.","type":"string"},"countryCodes":{"description":"Every country code the post covers.","items":{"type":"string"},"type":"array"},"description":{"description":"Full job description text.","type":"string"},"discoveredUtc":{"description":"UTC epoch timestamp in seconds (Unix time) TheirStack first saw the post. Multiply by 1000 for a JS Date in milliseconds.","type":"number"},"easyApply":{"description":"True when the post supports one-click apply.","type":"boolean"},"employmentStatuses":{"description":"Employment types, e.g. full_time.","items":{"type":"string"},"type":"array"},"finalUrl":{"description":"URL the post redirects to, when it does.","format":"uri","type":"string"},"hasBlurredData":{"description":"True when TheirStack redacted part of the record on this plan.","type":"boolean"},"hybrid":{"description":"True for a hybrid role.","type":"boolean"},"jobId":{"description":"TheirStack's own identifier for the post.","type":"string"},"keywordSlugs":{"description":"Keyword slugs found in the post.","items":{"type":"string"},"type":"array"},"latitude":{"description":"Latitude of the posted location.","type":"number"},"location":{"description":"Location as posted.","type":"string"},"locations":{"description":"Every resolved location the post covers, with TheirStack's geographic breakdown.","items":{"properties":{"address":{"description":"Street address, when the post gives one.","type":"string"},"admin1Code":{"description":"First-level administrative division code.","type":"string"},"admin1Name":{"description":"First-level administrative division name.","type":"string"},"admin2Code":{"description":"Second-level administrative division code.","type":"string"},"admin2Name":{"description":"Second-level administrative division name.","type":"string"},"city":{"description":"City.","type":"string"},"continent":{"description":"Continent code, e.g. NA.","type":"string"},"country":{"description":"Country name.","type":"string"},"countryCode":{"description":"ISO 3166-1 alpha-2 country code.","type":"string"},"displayName":{"description":"Location as one display string.","type":"string"},"featureCode":{"description":"GeoNames feature code for the place.","type":"string"},"latitude":{"description":"Latitude.","type":"number"},"locationId":{"description":"TheirStack's identifier for the place.","type":"string"},"longitude":{"description":"Longitude.","type":"number"},"name":{"description":"Location name.","type":"string"},"postalCode":{"description":"Postal code.","type":"string"},"state":{"description":"State or region.","type":"string"},"stateCode":{"description":"State or region code.","type":"string"},"type":{"description":"Granularity of the place, e.g. city, state, country.","type":"string"}},"required":["name"],"type":"object"},"type":"array"},"longLocation":{"description":"Long form of the location.","type":"string"},"longitude":{"description":"Longitude of the posted location.","type":"number"},"managerRoles":{"description":"Manager roles TheirStack extracted from the post.","items":{"type":"string"},"type":"array"},"matchingPhrases":{"description":"Phrases from your pattern filters that matched this post.","items":{"type":"string"},"type":"array"},"matchingWords":{"description":"Words from your pattern filters that matched this post.","items":{"type":"string"},"type":"array"},"maxAnnualSalary":{"description":"Upper bound of the posted annual salary, in the posted currency.","type":"number"},"maxAnnualSalaryUsd":{"description":"Upper bound of the posted annual salary, converted to USD.","type":"number"},"minAnnualSalary":{"description":"Lower bound of the posted annual salary, in the posted currency.","type":"number"},"minAnnualSalaryUsd":{"description":"Lower bound of the posted annual salary, converted to USD.","type":"number"},"normalizedTitle":{"description":"TheirStack's normalized form of the title.","type":"string"},"postalCode":{"description":"Postal code.","type":"string"},"postedUtc":{"description":"UTC epoch timestamp in seconds (Unix time) the job was posted. Multiply by 1000 for a JS Date in milliseconds.","type":"number"},"remote":{"description":"True for a fully remote role.","type":"boolean"},"reposted":{"description":"True when the post is a repost of an earlier one.","type":"boolean"},"repostedUtc":{"description":"UTC epoch timestamp in seconds (Unix time) the post was last reposted. Multiply by 1000 for a JS Date in milliseconds.","type":"number"},"salaryCurrency":{"description":"Currency the posted salary is in.","type":"string"},"salaryString":{"description":"Salary exactly as the post states it.","type":"string"},"seniority":{"description":"Seniority band TheirStack assigns, e.g. mid_level.","type":"string"},"shortLocation":{"description":"Short form of the location.","type":"string"},"sourceUrl":{"description":"URL TheirStack found the post at.","format":"uri","type":"string"},"stateCode":{"description":"State or region code.","type":"string"},"technologySlugs":{"description":"Technology slugs found in the post.","items":{"type":"string"},"type":"array"},"title":{"description":"Job title as posted.","type":"string"},"url":{"description":"URL of the job post.","format":"uri","type":"string"}},"required":["jobId","title"],"type":"object"},"type":"array"},"totalCompanies":{"description":"Distinct companies matching the filters. TheirStack computes it only when you send includeTotalResults.","type":"integer"},"totalResults":{"description":"Rows matching the filters across all pages. TheirStack computes it only when you send includeTotalResults, and omits it otherwise.","type":"integer"},"truncatedCompanies":{"description":"Companies TheirStack withheld because the plan's result ceiling was reached.","type":"integer"},"truncatedResults":{"description":"Rows TheirStack withheld because the plan's result ceiling was reached.","type":"integer"}},"required":["jobs"],"type":"object"}]},"found":{"description":"False when nothing matched the filters.","type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"Job Search - TheirStack output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"Job Search - TheirStack","tags":["job-search"],"x-mint":{"href":"/api-reference/job-search/theirstack"},"x-payment-info":{"price":{"currency":"USD","max":"9.945600","min":"0.000000","mode":"dynamic"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"currency":"USD","max":"9.945600","min":"0.001000","minimumUsd":"0.001000","mode":"dynamic","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"currency":"USD","max":"9.945600","min":"0.000000","minimumUsd":null,"mode":"dynamic","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/linkedin.ad":{"post":{"description":"Look up a single LinkedIn Ad Library ad by URL and get the advertiser, headline, creative text, format, CTA, targeting, run dates, and impressions as clean JSON.\n\n**Price:** \\$1.20 per 1,000 requests (flat per request - same cost regardless of results returned).\n\n**Routing:** one lane serves this API today, so a failed attempt has nowhere to fail over to. Payment outcome follows the selected rail's settlement policy.\n\n**Catalog:** [LinkedIn Ad Details pricing and uptime](https://getanyapi.com/api/linkedin/ad) - live USD price, lane routing, and measured 30-day uptime. [Every Linkedin endpoint](https://getanyapi.com/api/linkedin).","operationId":"linkedin_ad","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"url":"https://www.linkedin.com/ad-library/detail/1487405616"},"schema":{"additionalProperties":false,"example":{"url":"https://www.linkedin.com/ad-library/detail/1487405616"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"url":{"description":"LinkedIn Ad Library ad URL (e.g. \"https://www.linkedin.com/ad-library/detail/666281156\").","type":"string"}},"required":["url"],"title":"LinkedIn ad details input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"oneOf":[{"type":"null"},{"properties":{"adType":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"advertiser":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"advertiserLinkedinPage":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"advertiserLogo":{"description":"Advertiser logo image URL. The query string is a signed token, so keep the URL intact.","type":"string"},"cta":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"description":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"destinationUrl":{"type":"string"},"endDate":{"description":"ISO 8601 date.","type":"string"},"headline":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"id":{"type":"string"},"image":{"type":"string"},"startDate":{"description":"ISO 8601 date.","type":"string"},"totalImpressions":{"type":"string"},"url":{"description":"Canonical LinkedIn Ad Library URL for this ad.","type":"string"},"videoUrl":{"description":"Playable video URL for a video ad, or empty string. The query string is a signed token, so keep the URL intact.","type":"string"}},"required":["id","advertiser","advertiserLinkedinPage","headline","description","adType","cta","destinationUrl","image","startDate","endDate","totalImpressions"],"type":"object"}]},"found":{"type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"LinkedIn ad details output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"LinkedIn Ad Details","tags":["linkedin"],"x-mint":{"href":"/api-reference/linkedin/ad"},"x-payment-info":{"price":{"amount":"0.001200","currency":"USD","mode":"fixed"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"amount":"0.001200","currency":"USD","minimumUsd":"0.001000","mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"amount":"0.001200","currency":"USD","minimumUsd":null,"mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/linkedin.ads":{"post":{"description":"Search the LinkedIn Ad Library by search URL and list the matching ads (advertiser, creative text, format).\n\n**Price:** billed per result - \\$0.06 per 1,000 requests base + \\$1.65 per 1,000 results, capped at \\$33.10 per 1,000 requests.\n\n**Routing:** one lane serves this API today, so a failed attempt has nowhere to fail over to. Payment outcome follows the selected rail's settlement policy.\n\n**Catalog:** [LinkedIn Ads Library pricing and uptime](https://getanyapi.com/api/linkedin/ads) - live USD price, lane routing, and measured 30-day uptime. [Every Linkedin endpoint](https://getanyapi.com/api/linkedin).","operationId":"linkedin_ads","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"limit":3,"url":"https://www.linkedin.com/company/stripe"},"schema":{"additionalProperties":false,"example":{"limit":3,"url":"https://www.linkedin.com/company/stripe"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"limit":{"description":"Maximum number of results to return (1-20, default 20). You are billed per result returned, so a lower limit costs less.","maximum":20,"minimum":1,"type":"integer"},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"url":{"description":"LinkedIn Ad Library search URL or a LinkedIn company URL (e.g. https://www.linkedin.com/ad-library/search?companyIds=1035).","type":"string"}},"required":["url"],"title":"LinkedIn ads library input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"description":"The results wrapper, or null when nothing was found.","oneOf":[{"type":"null"},{"additionalProperties":false,"properties":{"items":{"description":"Ad records from the LinkedIn Ad Library. Populated whenever the provider has data for the entity.","items":{"description":"A LinkedIn ad: advertiser, creative text, format, and ad library URL.","properties":{"advertiser":{"description":"Advertiser (company) name. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"advertiserLogo":{"description":"Advertiser logo image URL.","type":"string"},"format":{"description":"Ad format (e.g. SINGLE_IMAGE, VIDEO).","type":"string"},"id":{"description":"LinkedIn ad id. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"image":{"description":"Ad creative image URL.","type":"string"},"text":{"description":"Ad creative body text.","type":"string"},"url":{"description":"Canonical LinkedIn Ad Library detail URL. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true}},"required":["id","url"],"type":"object"},"type":"array","x-anyapi-must-populate":true}},"required":["items"],"type":"object"}]},"found":{"description":"True when at least one ad was returned.","type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"LinkedIn ads library output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"LinkedIn Ads Library","tags":["linkedin"],"x-mint":{"href":"/api-reference/linkedin/ads"},"x-payment-info":{"price":{"currency":"USD","max":"0.033100","min":"0.000060","mode":"dynamic"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"currency":"USD","max":"0.033100","min":"0.001000","minimumUsd":"0.001000","mode":"dynamic","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"currency":"USD","max":"0.033100","min":"0.000060","minimumUsd":null,"mode":"dynamic","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/linkedin.ads_search":{"post":{"description":"Search the LinkedIn Ad Library by company or keyword and list matching ads (advertiser, headline, creative text, format, CTA, and run dates) with pagination.\n\n**Price:** \\$1.20 per 1,000 requests (flat per request - same cost regardless of results returned).\n\n**Routing:** one lane serves this API today, so a failed attempt has nowhere to fail over to. Payment outcome follows the selected rail's settlement policy.\n\n**Catalog:** [LinkedIn Ad Search pricing and uptime](https://getanyapi.com/api/linkedin/ads-search) - live USD price, lane routing, and measured 30-day uptime. [Every Linkedin endpoint](https://getanyapi.com/api/linkedin).","operationId":"linkedin_ads_search","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"company":"microsoft"},"schema":{"additionalProperties":false,"example":{"company":"microsoft"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"company":{"description":"Company name to search (e.g. \"microsoft\").","type":"string"},"companyId":{"description":"LinkedIn company identifier.","type":"string"},"countries":{"description":"Comma-separated two-letter country codes (e.g. \"US,CA,MX\").","type":"string"},"endDate":{"description":"Search end date in YYYY-MM-DD format.","type":"string"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"keyword":{"description":"Keyword term for the ad search.","type":"string"},"paginationToken":{"description":"Opaque pagination token from a previous response's nextCursor.","type":"string"},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"startDate":{"description":"Search start date in YYYY-MM-DD format.","type":"string"}},"title":"LinkedIn ad search input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"oneOf":[{"type":"null"},{"additionalProperties":false,"properties":{"ads":{"description":"Populated whenever the provider has data for the entity.","items":{"properties":{"adType":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"advertiser":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"advertiserLinkedinPage":{"type":"string"},"advertiserLogo":{"description":"Advertiser logo image URL. The query string is a signed token, so keep the URL intact.","type":"string"},"cta":{"type":"string"},"description":{"type":"string"},"destinationUrl":{"type":"string"},"endDate":{"type":"string"},"headline":{"type":"string"},"id":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"startDate":{"type":"string"},"totalImpressions":{"type":"string"},"url":{"description":"Canonical LinkedIn Ad Library URL for this ad.","type":"string"}},"required":["id","advertiser","advertiserLinkedinPage","headline","description","adType","cta","destinationUrl","startDate","endDate","totalImpressions"],"type":"object"},"type":"array","x-anyapi-must-populate":true},"nextCursor":{"type":"string"},"totalAds":{"type":"integer"}},"required":["nextCursor","totalAds","ads"],"type":"object"}]},"found":{"type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"LinkedIn ad search output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"LinkedIn Ad Search","tags":["linkedin"],"x-mint":{"href":"/api-reference/linkedin/ads-search"},"x-payment-info":{"price":{"amount":"0.001200","currency":"USD","mode":"fixed"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"amount":"0.001200","currency":"USD","minimumUsd":"0.001000","mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"amount":"0.001200","currency":"USD","minimumUsd":null,"mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/linkedin.article":{"post":{"description":"Read a public LinkedIn article or newsletter issue by URL, including its full body text, author, publication time, and engagement counts.\n\n**Price:** billed per result - \\$5.69 per 1,000 requests base + \\$0.00 per 1,000 results, capped at \\$5.69 per 1,000 requests.\n\n**Routing:** one lane serves this API today, so a failed attempt has nowhere to fail over to. Payment outcome follows the selected rail's settlement policy.\n\n**Catalog:** [LinkedIn Article pricing and uptime](https://getanyapi.com/api/linkedin/article) - live USD price, lane routing, and measured 30-day uptime. [Every Linkedin endpoint](https://getanyapi.com/api/linkedin).","operationId":"linkedin_article","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"url":"https://www.linkedin.com/pulse/artificial-intelligence-primer-stephen-dover"},"schema":{"additionalProperties":false,"example":{"url":"https://www.linkedin.com/pulse/artificial-intelligence-primer-stephen-dover"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"url":{"description":"Public LinkedIn article or newsletter issue URL, e.g. https://www.linkedin.com/pulse/your-article-slug. Pair it with the attachmentUrl returned by linkedin.search_posts_full to read the article behind a post.","format":"uri","minLength":1,"type":"string"}},"required":["url"],"title":"LinkedIn Article input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"oneOf":[{"type":"null"},{"properties":{"author":{"description":"Display name of the person or organization that published the article. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"authorFollowers":{"description":"Follower count of the author at capture time.","type":"integer"},"authorUrl":{"description":"Canonical LinkedIn profile or company URL of the author.","format":"uri","type":"string"},"body":{"description":"Full body text of the article as plain text. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"comments":{"description":"Total comments on the article.","type":"integer"},"createdUtc":{"description":"UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds. Populated whenever the provider has data for the entity.","type":"number","x-anyapi-must-populate":true},"description":{"description":"Short summary of the article, as LinkedIn presents it in previews.","type":"string"},"image":{"description":"Cover image URL of the article.","format":"uri","type":"string"},"reactions":{"description":"Total reactions on the article.","type":"integer"},"title":{"description":"Title of the article. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"type":{"description":"Kind of LinkedIn publication, e.g. article or issue (a newsletter edition).","type":"string"},"updatedUtc":{"description":"UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds.","type":"number"},"url":{"description":"Canonical URL of the article. Populated whenever the provider has data for the entity.","format":"uri","type":"string","x-anyapi-must-populate":true}},"required":["url","title","body"],"type":"object"}]},"found":{"description":"False when the URL does not resolve to a readable LinkedIn article.","type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"LinkedIn Article output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"LinkedIn Article","tags":["linkedin"],"x-mint":{"href":"/api-reference/linkedin/article"},"x-payment-info":{"price":{"currency":"USD","max":"0.005690","min":"0.005690","mode":"dynamic"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"currency":"USD","max":"0.005690","min":"0.005690","minimumUsd":"0.001000","mode":"dynamic","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"currency":"USD","max":"0.005690","min":"0.005690","minimumUsd":null,"mode":"dynamic","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/linkedin.company":{"post":{"description":"Fetch a full LinkedIn company page by URL: name, description, industry, employee count and range, follower count, founded year, headquarters and office locations, funding data, tagline, logo, website, and specialities.\n\n**Price:** billed per result - \\$1.43 per 1,000 requests base + \\$0.00 per 1,000 results, capped at \\$1.43 per 1,000 requests.\n\n**Routing:** 3 independent lanes are available in execution order. A failed attempt uses the next lane only when the request's payment authorizes that lane's price; the normalized schema stays the same.\n\n**Catalog:** [LinkedIn Company pricing and uptime](https://getanyapi.com/api/linkedin/company) - live USD price, lane routing, and measured 30-day uptime. [Every Linkedin endpoint](https://getanyapi.com/api/linkedin).","operationId":"linkedin_company","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"url":"https://www.linkedin.com/company/stripe"},"schema":{"additionalProperties":false,"example":{"url":"https://www.linkedin.com/company/stripe"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"requireFields":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Name the output fields this request must be able to return, for example `city` or `postalCode`, and it is served only by a source that returns every one of them. Fields you do not name are still returned whenever the serving source has them. This can raise your price: when the cheapest source cannot return a named field, a dearer source serves, and you are quoted and charged its price. A named field can still be absent on a profile that genuinely lacks it. Naming a combination that no single source returns together is refused as invalid input, with no charge.","items":{"enum":["city","companyType","country","employeeCountRange","foundedOn","fundingData","headquarter","id","industry","line1","linkedinUrl","locations","logoUrl","name","pageVerified","postalCode","similarOrganizations","specialities","tagline","universalName","website"],"type":"string"},"type":"array","uniqueItems":true},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"url":{"description":"Full LinkedIn company page URL.","type":"string"}},"required":["url"],"title":"LinkedIn company input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"oneOf":[{"type":"null"},{"properties":{"companyType":{"description":"Company type, e.g. Privately Held, Public Company.","type":"string"},"description":{"description":"Company about/description text. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"employeeCount":{"description":"Reported total employee count. Populated whenever the provider has data for the entity.","type":"integer","x-anyapi-must-populate":true},"employeeCountRange":{"description":"LinkedIn size bucket the company falls in.","properties":{"end":{"description":"Upper bound of the employee-count bucket.","type":"integer"},"start":{"description":"Lower bound of the employee-count bucket.","type":"integer"}},"type":"object"},"followerCount":{"description":"LinkedIn page follower count. Populated whenever the provider has data for the entity.","type":"integer","x-anyapi-must-populate":true},"foundedOn":{"description":"Founding date (year populated when known).","properties":{"year":{"description":"Year the company was founded.","type":"integer"}},"type":"object"},"fundingData":{"description":"Funding summary sourced from Crunchbase, when available.","properties":{"companyCrunchbaseUrl":{"description":"Crunchbase profile URL for the company.","type":"string"},"lastFundingType":{"description":"Type of the most recent funding round.","type":"string"},"numFundingRounds":{"description":"Total number of funding rounds.","type":"integer"}},"type":"object"},"id":{"description":"LinkedIn's numeric company id, as a string.","type":"string"},"industry":{"description":"Primary industry.","type":"string"},"linkedinUrl":{"description":"Canonical LinkedIn company page URL.","type":"string"},"locations":{"description":"Company office locations, including headquarters.","items":{"properties":{"city":{"description":"City.","type":"string"},"country":{"description":"ISO country code.","type":"string"},"headquarter":{"description":"True when this location is the headquarters.","type":"boolean"},"line1":{"description":"Street address line.","type":"string"},"postalCode":{"description":"Postal code.","type":"string"}},"type":"object"},"type":"array"},"logoUrl":{"description":"Company logo image URL.","type":"string"},"name":{"description":"Company name.","type":"string"},"pageVerified":{"description":"Whether LinkedIn has verified the company page.","type":"boolean"},"similarOrganizations":{"description":"Similar organizations surfaced by LinkedIn.","items":{},"type":"array"},"specialities":{"description":"Company-declared specialities.","items":{},"type":"array"},"tagline":{"description":"Company tagline/slogan.","type":"string"},"universalName":{"description":"LinkedIn universal (vanity) name for the company.","type":"string"},"website":{"description":"Company website URL.","type":"string"}},"required":["name","description","employeeCount","followerCount","industry","website","tagline","logoUrl"],"type":"object"}]},"found":{"type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"LinkedIn company output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"LinkedIn Company","tags":["linkedin"],"x-mint":{"href":"/api-reference/linkedin/company"},"x-payment-info":{"price":{"currency":"USD","max":"0.001430","min":"0.001430","mode":"dynamic"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"currency":"USD","max":"0.001430","min":"0.001430","minimumUsd":"0.001000","mode":"dynamic","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"currency":"USD","max":"0.001430","min":"0.001430","minimumUsd":null,"mode":"dynamic","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/linkedin.company_employees":{"post":{"description":"List the employees of a LinkedIn company by name or company URL, with optional job-title filtering.\n\n**Price:** billed per result - \\$11.00 per 1,000 results, capped at \\$110.00 per 1,000 requests.\n\n**Routing:** one lane serves this API today, so a failed attempt has nowhere to fail over to. Payment outcome follows the selected rail's settlement policy.\n\n**Catalog:** [LinkedIn Company Employees pricing and uptime](https://getanyapi.com/api/linkedin/company-employees) - live USD price, lane routing, and measured 30-day uptime. [Every Linkedin endpoint](https://getanyapi.com/api/linkedin).","operationId":"linkedin_company_employees","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"company":"stripe","limit":3},"schema":{"additionalProperties":false,"example":{"company":"stripe","limit":3},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"company":{"description":"Company name or LinkedIn company URL (e.g. google or https://www.linkedin.com/company/google/).","type":"string"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"jobTitle":{"description":"Optional job-title filter supporting boolean operators (e.g. CEO OR CTO).","type":"string"},"limit":{"description":"Maximum number of results to return (1-10, default 10). You are billed per result returned, so a lower limit costs less.","maximum":10,"minimum":1,"type":"integer"},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true}},"required":["company"],"title":"LinkedIn company employees input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"description":"The results wrapper, or null when nothing was found.","oneOf":[{"type":"null"},{"additionalProperties":false,"properties":{"items":{"description":"Employee records for the company. Populated whenever the provider has data for the entity.","items":{"description":"An employee: name, headline, location, handle, and LinkedIn profile URL.","properties":{"city":{"description":"City of the member, as LinkedIn words it.","type":"string"},"companyId":{"description":"LinkedIn's numeric id of the member's current company, as a string.","type":"string"},"companyUrl":{"description":"Canonical LinkedIn URL of the member's current company.","type":"string"},"country":{"description":"Country name of the member.","type":"string"},"countryCode":{"description":"Two-letter country code of the member.","type":"string"},"createdUtc":{"description":"UTC epoch timestamp in seconds (Unix time) when the profile was created. Multiply by 1000 for a JS Date in milliseconds.","type":"number"},"creator":{"description":"Whether the member is in LinkedIn creator mode.","type":"boolean"},"firstName":{"description":"First name.","type":"string"},"handle":{"description":"Public profile identifier (the vanity slug in the URL). Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"image":{"description":"Profile picture URL.","type":"string"},"influencer":{"description":"Whether LinkedIn marks the member as an influencer.","type":"boolean"},"jobTitle":{"description":"The employee's current role or headline.","type":"string"},"lastName":{"description":"Last name.","type":"string"},"location":{"description":"The employee's location as a single string (city, region, country).","type":"string"},"name":{"description":"Full name. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"openToWork":{"description":"Whether the member shows the Open To Work badge.","type":"boolean"},"premium":{"description":"Whether the member has LinkedIn Premium.","type":"boolean"},"url":{"description":"Canonical LinkedIn profile URL. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true}},"required":["url"],"type":"object"},"type":"array","x-anyapi-must-populate":true}},"required":["items"],"type":"object"}]},"found":{"description":"True when at least one employee was returned.","type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"LinkedIn company employees output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"LinkedIn Company Employees","tags":["linkedin"],"x-mint":{"href":"/api-reference/linkedin/company-employees"},"x-payment-info":{"price":{"currency":"USD","max":"0.110000","min":"0.000000","mode":"dynamic"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"currency":"USD","max":"0.110000","min":"0.001000","minimumUsd":"0.001000","mode":"dynamic","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"currency":"USD","max":"0.110000","min":"0.000000","minimumUsd":null,"mode":"dynamic","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/linkedin.company_posts":{"post":{"description":"List a LinkedIn company page's recent posts by URL: full text, canonical link, publish date, author, engagement counts with a per-reaction breakdown, and attached media.\n\n**Price:** \\$5.00 per 1,000 requests (flat per request - same cost regardless of results returned).\n\n**Routing:** 2 independent lanes are available in execution order. A failed attempt uses the next lane only when the request's payment authorizes that lane's price; the normalized schema stays the same.\n\n**Catalog:** [LinkedIn Company Posts pricing and uptime](https://getanyapi.com/api/linkedin/company-posts) - live USD price, lane routing, and measured 30-day uptime. [Every Linkedin endpoint](https://getanyapi.com/api/linkedin).","operationId":"linkedin_company_posts","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"limit":10,"url":"https://www.linkedin.com/company/stripe"},"schema":{"additionalProperties":false,"example":{"limit":10,"url":"https://www.linkedin.com/company/stripe"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"includeQuotePosts":{"description":"Include quote posts (posts shared with an added comment). Defaults to true; set false to exclude them.","type":"boolean"},"includeReposts":{"description":"Include reposts (posts shared without an added comment). Defaults to true; set false to exclude them.","type":"boolean"},"limit":{"default":10,"description":"Maximum number of posts to return.","maximum":50,"minimum":1,"type":"integer"},"postedLimit":{"description":"Only return posts published within this window (default any).","enum":["any","1h","24h","week","month","3months","6months","year"],"type":"string"},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"url":{"description":"Full LinkedIn company page URL.","type":"string"}},"required":["url"],"title":"LinkedIn company posts input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"description":"The company posts result, or null when not found.","oneOf":[{"type":"null"},{"additionalProperties":false,"properties":{"items":{"description":"The company's recent posts. Populated whenever the provider has data for the entity.","items":{"properties":{"articleImage":{"description":"Cover image URL of the attached article. The query string is a signed token, so keep the URL intact.","type":"string"},"articleLinkLabel":{"description":"Accessible link label LinkedIn renders for the attached article.","type":"string"},"articleSubtitle":{"description":"Subtitle or source domain of the attached article.","type":"string"},"articleTitle":{"description":"Title of the article attached to the post.","type":"string"},"articleUrl":{"description":"Destination URL of the attached article.","type":"string"},"author":{"description":"The post author (a company or a profile).","properties":{"followers":{"description":"Author follower count as displayed text (e.g. '1,543,793 followers').","type":"string"},"handle":{"description":"Public identifier (vanity handle) of the author.","type":"string"},"id":{"description":"LinkedIn identifier of the author.","type":"string"},"image":{"description":"Author avatar or company logo image URL. The query string is a signed token, so keep the URL intact.","type":"string"},"linkedinUrl":{"description":"Canonical LinkedIn URL of the author. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"name":{"description":"Display name of the author. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"type":{"description":"Author kind, e.g. 'company' or 'profile'.","type":"string"},"universalName":{"description":"URL-safe company/profile handle, when present. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true}},"type":"object"},"contentAttributes":{"description":"Inline mentions and entity references in the post text.","items":{"type":"object"},"type":"array"},"createdUtc":{"description":"UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds. Populated whenever the provider has data for the entity.","type":"number","x-anyapi-must-populate":true},"engagement":{"description":"Engagement metrics for the post.","properties":{"comments":{"description":"Number of comments on the post.","type":"integer"},"likes":{"description":"Total reaction count on the post. Populated whenever the provider has data for the entity.","type":"integer","x-anyapi-must-populate":true},"reactions":{"description":"Per-reaction-type breakdown of the reaction total.","items":{"properties":{"count":{"description":"Number of reactions of this type.","type":"integer"},"type":{"description":"Reaction type, e.g. LIKE, PRAISE, EMPATHY, INTEREST, APPRECIATION.","type":"string"}},"type":"object"},"type":"array"},"shares":{"description":"Number of shares/reposts of the post.","type":"integer"}},"type":"object"},"id":{"description":"Unique identifier of the post. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"postImages":{"description":"Images attached to the post.","items":{"type":"object"},"type":"array"},"postVideo":{"description":"Video attached to the post, or null when absent.","type":["object","null"]},"repostAuthorName":{"description":"Display name of the account that reposted this post.","type":"string"},"repostAuthorUniversalName":{"description":"URL-safe handle of the account that reposted this post.","type":"string"},"repostAuthorUrl":{"description":"Canonical LinkedIn URL of the account that reposted this post.","type":"string"},"repostCreatedUtc":{"description":"UTC epoch timestamp in seconds (Unix time) of the repost. Multiply by 1000 for a JS Date in milliseconds.","type":"number"},"shareUrl":{"description":"Shareable LinkedIn URL for the post.","type":"string"},"text":{"description":"Full text content of the post. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"url":{"description":"Canonical URL of the post. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true}},"required":["id","url","text","createdUtc"],"type":"object"},"type":"array","x-anyapi-must-populate":true}},"required":["items"],"type":"object"}]},"found":{"description":"Whether the company posts were found.","type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"LinkedIn company posts output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"LinkedIn Company Posts","tags":["linkedin"],"x-mint":{"href":"/api-reference/linkedin/company-posts"},"x-payment-info":{"price":{"amount":"0.005000","currency":"USD","mode":"fixed"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"amount":"0.005000","currency":"USD","minimumUsd":"0.001000","mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"amount":"0.005000","currency":"USD","minimumUsd":null,"mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/linkedin.company_posts_thin":{"post":{"description":"Post text and link only. No engagement counts, author details, media, or reaction breakdown - for those use linkedin.company_posts.\n\n**Price:** \\$1.20 per 1,000 requests (flat per request - same cost regardless of results returned).\n\n**Routing:** 2 independent lanes are available in execution order. A failed attempt uses the next lane only when the request's payment authorizes that lane's price; the normalized schema stays the same.\n\n**Catalog:** [LinkedIn Company Posts (basic) pricing and uptime](https://getanyapi.com/api/linkedin/company-posts-thin) - live USD price, lane routing, and measured 30-day uptime. [Every Linkedin endpoint](https://getanyapi.com/api/linkedin).","operationId":"linkedin_company_posts_thin","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"url":"https://www.linkedin.com/company/stripe"},"schema":{"additionalProperties":false,"example":{"url":"https://www.linkedin.com/company/stripe"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"page":{"description":"Page number for pagination.","minimum":1,"type":"integer"},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"url":{"description":"Full LinkedIn company page URL.","type":"string"}},"required":["url"],"title":"LinkedIn company posts (basic) input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"description":"The company posts result, or null when not found.","oneOf":[{"type":"null"},{"additionalProperties":false,"properties":{"items":{"description":"The company's recent posts. Populated whenever the provider has data for the entity.","items":{"properties":{"createdUtc":{"description":"UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds. Populated whenever the provider has data for the entity.","type":"number","x-anyapi-must-populate":true},"id":{"description":"Unique identifier of the post. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"text":{"description":"Text content of the post. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"url":{"description":"Canonical URL of the post. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true}},"required":["id","url","text","createdUtc"],"type":"object"},"type":"array","x-anyapi-must-populate":true}},"required":["items"],"type":"object"}]},"found":{"description":"Whether the company posts were found.","type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"LinkedIn company posts (basic) output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"LinkedIn Company Posts (basic)","tags":["linkedin"],"x-mint":{"href":"/api-reference/linkedin/company-posts-thin"},"x-payment-info":{"price":{"amount":"0.001200","currency":"USD","mode":"fixed"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"amount":"0.001200","currency":"USD","minimumUsd":"0.001000","mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"amount":"0.001200","currency":"USD","minimumUsd":null,"mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/linkedin.company_thin":{"post":{"description":"Basic company: name, description, employee count, industry, logo, website, tagline. No follower count, founded year, office locations, or funding data - for those use linkedin.company.\n\n**Price:** \\$1.20 per 1,000 requests (flat per request - same cost regardless of results returned).\n\n**Routing:** 2 independent lanes are available in execution order. A failed attempt uses the next lane only when the request's payment authorizes that lane's price; the normalized schema stays the same.\n\n**Catalog:** [LinkedIn Company (basic) pricing and uptime](https://getanyapi.com/api/linkedin/company-thin) - live USD price, lane routing, and measured 30-day uptime. [Every Linkedin endpoint](https://getanyapi.com/api/linkedin).","operationId":"linkedin_company_thin","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"url":"https://www.linkedin.com/company/stripe"},"schema":{"additionalProperties":false,"example":{"url":"https://www.linkedin.com/company/stripe"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"url":{"description":"Full LinkedIn company page URL.","type":"string"}},"required":["url"],"title":"LinkedIn company (basic) input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"oneOf":[{"type":"null"},{"properties":{"companyType":{"description":"Company type, e.g. Privately Held, Public Company.","type":"string"},"coverImage":{"description":"Company page cover image URL. The query string is a signed token, so keep the URL intact.","type":"string"},"description":{"description":"Company about/description text. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"employeeCount":{"description":"Reported employee count.","type":"integer"},"followerCount":{"description":"LinkedIn page follower count.","type":"integer"},"foundedYear":{"description":"Year the company was founded, or 0 when unknown.","type":"integer"},"id":{"description":"LinkedIn's numeric company id, as a string.","type":"string"},"industry":{"description":"Primary industry. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"linkedinUrl":{"description":"Canonical LinkedIn company page URL.","type":"string"},"logoUrl":{"description":"Company logo image URL. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"name":{"description":"Company name.","type":"string"},"tagline":{"description":"Company tagline/slogan. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"universalName":{"description":"LinkedIn universal (vanity) name for the company.","type":"string"},"website":{"description":"Company website URL. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true}},"required":["name","description","employeeCount","industry","website","tagline","logoUrl"],"type":"object"}]},"found":{"type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"LinkedIn company (basic) output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"LinkedIn Company (basic)","tags":["linkedin"],"x-mint":{"href":"/api-reference/linkedin/company-thin"},"x-payment-info":{"price":{"amount":"0.001200","currency":"USD","mode":"fixed"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"amount":"0.001200","currency":"USD","minimumUsd":"0.001000","mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"amount":"0.001200","currency":"USD","minimumUsd":null,"mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/linkedin.email":{"post":{"description":"Find the deliverability-validated work email behind a LinkedIn profile URL or public ID. Returns each discovered email with its deliverability, validation status, and quality score, plus the person's name and headline.\n\n**Price:** billed per result - \\$11.00 per 1,000 requests base + \\$0.00 per 1,000 results, capped at \\$11.00 per 1,000 requests.\n\n**Routing:** one lane serves this API today, so a failed attempt has nowhere to fail over to. Payment outcome follows the selected rail's settlement policy.\n\n**Catalog:** [LinkedIn Email Finder pricing and uptime](https://getanyapi.com/api/linkedin/email) - live USD price, lane routing, and measured 30-day uptime. [Every Linkedin endpoint](https://getanyapi.com/api/linkedin).","operationId":"linkedin_email","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"profileUrl":"https://www.linkedin.com/in/satyanadella"},"schema":{"additionalProperties":false,"example":{"profileUrl":"https://www.linkedin.com/in/satyanadella"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"profileUrl":{"description":"LinkedIn profile URL or public identifier (the last part of the URL) to find the deliverability-validated work email for.","type":"string"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true}},"required":["profileUrl"],"title":"LinkedIn email finder input","type":"object","x-aliases":{"url":"profileUrl"}}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"description":"The profile with its discovered emails, or null when nothing was found.","oneOf":[{"type":"null"},{"additionalProperties":false,"properties":{"about":{"description":"About/summary text of the profile.","type":"string"},"avatarUrl":{"description":"URL of the profile avatar image.","type":"string"},"city":{"description":"City of the profile owner.","type":"string"},"connectionsCount":{"description":"Number of connections on the profile.","type":"integer"},"country":{"description":"Country of the profile owner.","type":"string"},"countryCode":{"description":"Two-letter country code of the profile owner.","type":"string"},"coverImage":{"description":"Profile cover (banner) image URL. The query string is a signed token, so keep the URL intact.","type":"string"},"creator":{"description":"Whether the member is in LinkedIn creator mode.","type":"boolean"},"emails":{"description":"Deliverability-validated work emails discovered for the profile. Populated whenever the provider has data for the entity.","items":{"description":"A discovered email with its deliverability and validation signals.","properties":{"deliverable":{"description":"True when the email passed deliverability checks (including SMTP).","type":"boolean"},"email":{"description":"Discovered work email address. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"qualityScore":{"description":"Confidence score for the email, 0-100.","type":"integer"},"status":{"description":"Validation status of the email (e.g. valid). Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"validEmailServer":{"description":"True when the domain has a valid mail server.","type":"boolean"}},"required":["email"],"type":"object"},"type":"array","x-anyapi-must-populate":true},"firstName":{"description":"First name on the LinkedIn profile.","type":"string"},"followerCount":{"description":"Number of followers of the profile.","type":"integer"},"handle":{"description":"Public identifier (vanity handle) of the profile.","type":"string"},"headline":{"description":"Profile headline.","type":"string"},"hiring":{"description":"Whether the member shows the Hiring badge.","type":"boolean"},"id":{"description":"LinkedIn member identifier.","type":"string"},"influencer":{"description":"Whether LinkedIn marks the member as an influencer.","type":"boolean"},"lastName":{"description":"Last name on the LinkedIn profile.","type":"string"},"linkedinUrl":{"description":"Canonical LinkedIn profile URL.","type":"string"},"location":{"description":"Location as LinkedIn displays it.","type":"string"},"openToWork":{"description":"Whether the member shows the Open To Work badge.","type":"boolean"},"premium":{"description":"Whether the member has LinkedIn Premium.","type":"boolean"},"state":{"description":"State or region of the profile owner.","type":"string"},"verified":{"description":"Whether LinkedIn has verified the member's identity.","type":"boolean"}},"required":["emails"],"type":"object"}]},"found":{"description":"True when at least one email was discovered for the profile.","type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"LinkedIn email finder output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"LinkedIn Email Finder","tags":["linkedin"],"x-mint":{"href":"/api-reference/linkedin/email"},"x-payment-info":{"price":{"currency":"USD","max":"0.011000","min":"0.011000","mode":"dynamic"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"currency":"USD","max":"0.011000","min":"0.011000","minimumUsd":"0.001000","mode":"dynamic","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"currency":"USD","max":"0.011000","min":"0.011000","minimumUsd":null,"mode":"dynamic","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/linkedin.job":{"post":{"description":"Fetch one LinkedIn job posting by URL: title, full description, location, salary when disclosed, applicant count, employment and workplace type, seniority, benefits, industries, apply links, posting and expiry dates, the hiring team, the applicant tracking system behind it, and the hiring company with its size, follower count, website and description.\n\n**Price:** \\$1.50 per 1,000 requests (flat per request - same cost regardless of results returned).\n\n**Routing:** one lane serves this API today, so a failed attempt has nowhere to fail over to. Payment outcome follows the selected rail's settlement policy.\n\n**Catalog:** [LinkedIn Job pricing and uptime](https://getanyapi.com/api/linkedin/job) - live USD price, lane routing, and measured 30-day uptime. [Every Linkedin endpoint](https://getanyapi.com/api/linkedin).","operationId":"linkedin_job","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"url":"https://www.linkedin.com/jobs/view/4431721875/"},"schema":{"additionalProperties":false,"example":{"url":"https://www.linkedin.com/jobs/view/4431721875/"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"url":{"description":"Full LinkedIn job posting URL, e.g. https://www.linkedin.com/jobs/view/4431721875/.","type":"string"}},"required":["url"],"title":"LinkedIn job input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"description":"The job posting record, or null when not found.","oneOf":[{"type":"null"},{"description":"A single LinkedIn job posting with full detail: title, description, salary, applicant count, seniority, apply links, hiring team, and the hiring company.","properties":{"applicantTrackingSystem":{"description":"Applicant tracking system behind the posting (e.g. Workday, Lever, Greenhouse), when LinkedIn reports one.","type":"string"},"applicants":{"description":"Number of applicants reported by LinkedIn. Populated whenever the provider has data for the entity.","type":"integer","x-anyapi-must-populate":true},"applyUrl":{"description":"External company apply URL when the job applies off-site.","type":"string"},"benefits":{"description":"Listed benefits.","items":{"type":"string"},"type":"array"},"city":{"description":"City of the job location.","type":"string"},"company":{"description":"Hiring company details.","properties":{"description":{"description":"Company About text.","type":"string"},"employeeCount":{"description":"Number of employees LinkedIn reports for the company.","type":"integer"},"followerCount":{"description":"Number of followers of the company page.","type":"integer"},"id":{"description":"LinkedIn's numeric company id, as a string.","type":"string"},"linkedinUrl":{"description":"Canonical LinkedIn company URL.","type":"string"},"logo":{"description":"Company logo image URL.","type":"string"},"name":{"description":"Company name. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"universalName":{"description":"Company LinkedIn universal (vanity) name.","type":"string"},"website":{"description":"Company website.","type":"string"}},"type":"object"},"country":{"description":"Country of the job location.","type":"string"},"countryCode":{"description":"Two-letter country code of the job location.","type":"string"},"createdUtc":{"description":"UTC epoch timestamp in seconds (Unix time) the job was posted. Multiply by 1000 for a JS Date in milliseconds.","type":"number"},"descriptionText":{"description":"Full job description as plain text. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"easyApplyUrl":{"description":"LinkedIn Easy Apply URL when available.","type":"string"},"employmentType":{"description":"Employment type (e.g. full_time, contract, part_time).","type":"string"},"experienceLevel":{"description":"Seniority / experience level (e.g. Mid-Senior level, Entry level).","type":"string"},"expireUtc":{"description":"UTC epoch timestamp in seconds (Unix time) the posting expires. Multiply by 1000 for a JS Date in milliseconds.","type":"number"},"hiringTeam":{"description":"LinkedIn members named on the posting as the hiring contacts.","items":{"description":"One named hiring contact.","properties":{"linkedinUrl":{"description":"Canonical LinkedIn profile URL.","type":"string"},"name":{"description":"Member name.","type":"string"},"position":{"description":"Member headline or job title.","type":"string"}},"type":"object"},"type":"array"},"id":{"description":"LinkedIn job posting id.","type":"string"},"industries":{"description":"Industries associated with the role.","items":{"type":"string"},"type":"array"},"jobState":{"description":"Posting state reported by LinkedIn (e.g. LISTED, CLOSED).","type":"string"},"location":{"description":"Job location (city, region, or country).","type":"string"},"remote":{"description":"Whether LinkedIn flags the role as remote-allowed.","type":"boolean"},"salary":{"description":"Salary range when disclosed by the poster.","properties":{"max":{"description":"Maximum salary.","type":"number"},"min":{"description":"Minimum salary.","type":"number"},"text":{"description":"Salary as displayed (e.g. '300,000 - 330,000 USD').","type":"string"}},"type":"object"},"state":{"description":"State or region of the job location.","type":"string"},"title":{"description":"Job title. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"url":{"description":"Canonical LinkedIn job posting URL.","type":"string"},"views":{"description":"Number of views LinkedIn reports for the posting.","type":"integer"},"workplaceType":{"description":"Workplace type (e.g. remote, on_site, hybrid).","type":"string"}},"required":["title","url"],"type":"object"}]},"found":{"description":"Whether the job posting was found.","type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"LinkedIn job output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"LinkedIn Job","tags":["linkedin"],"x-mint":{"href":"/api-reference/linkedin/job"},"x-payment-info":{"price":{"amount":"0.001500","currency":"USD","mode":"fixed"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"amount":"0.001500","currency":"USD","minimumUsd":"0.001000","mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"amount":"0.001500","currency":"USD","minimumUsd":null,"mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/linkedin.jobs":{"post":{"description":"Search LinkedIn job listings by title and location - full records with description, salary, applicant count, seniority, company details, and benefits. Up to 25 jobs per request.\n\n**Price:** billed per result - \\$1.10 per 1,000 requests base + \\$1.10 per 1,000 results, capped at \\$28.60 per 1,000 requests.\n\n**Routing:** one lane serves this API today, so a failed attempt has nowhere to fail over to. Payment outcome follows the selected rail's settlement policy.\n\n**Catalog:** [LinkedIn Jobs pricing and uptime](https://getanyapi.com/api/linkedin/jobs) - live USD price, lane routing, and measured 30-day uptime. [Every Linkedin endpoint](https://getanyapi.com/api/linkedin).","operationId":"linkedin_jobs","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"limit":3,"location":"United States","query":"software engineer","workplaceType":"remote"},"schema":{"additionalProperties":false,"example":{"limit":3,"location":"United States","query":"software engineer","workplaceType":"remote"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"company":{"description":"Filter to a specific company by name (e.g. Google).","type":"string"},"easyApply":{"description":"When true, only return jobs offering LinkedIn Easy Apply.","type":"boolean"},"employmentType":{"description":"Filter by employment type.","enum":["full-time","part-time","contract","internship","temporary"],"type":"string"},"experienceLevel":{"description":"Filter by required seniority/experience level.","enum":["internship","entry","associate","mid-senior","director","executive"],"type":"string"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"limit":{"description":"Maximum number of results to return (1-25, default 25). You are billed per result returned, so a lower limit costs less.","maximum":25,"minimum":1,"type":"integer"},"location":{"description":"City, region, or country to search within (e.g. United States, San Francisco).","type":"string"},"postedLimit":{"description":"Only jobs posted within this window (past hour, 24 hours, week, or month).","enum":["1h","24h","week","month"],"type":"string"},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"query":{"description":"Job title or keywords to search. Supports LinkedIn boolean operators.","type":"string"},"salary":{"description":"Filter by minimum base salary band (US dollars).","enum":["40k+","60k+","80k+","100k+","120k+","140k+","160k+","180k+","200k+"],"type":"string"},"sortBy":{"description":"Sort order: most recent (date) or best match (relevance).","enum":["date","relevance"],"type":"string"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"under10Applicants":{"description":"When true, only return jobs with fewer than 10 applicants (lower competition).","type":"boolean"},"workplaceType":{"description":"Filter by workplace type (remote, hybrid, or onsite).","enum":["remote","hybrid","onsite"],"type":"string"}},"required":["query"],"title":"LinkedIn Jobs input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"description":"The results wrapper, or null when nothing was found.","oneOf":[{"type":"null"},{"additionalProperties":false,"properties":{"items":{"description":"Full job listing records for the search. Populated whenever the provider has data for the entity.","items":{"description":"A LinkedIn job listing with full detail: title, description, salary, applicant count, seniority, company, and benefits.","properties":{"applicantTrackingSystem":{"description":"Applicant tracking system behind the external apply link (e.g. Greenhouse).","type":"string"},"applicants":{"description":"Number of applicants reported by LinkedIn. Populated whenever the provider has data for the entity.","type":"integer","x-anyapi-must-populate":true},"applyUrl":{"description":"External company apply URL when the job applies off-site.","type":"string"},"benefits":{"description":"Listed benefits.","items":{"type":"string"},"type":"array"},"city":{"description":"City of the job location.","type":"string"},"company":{"description":"Hiring company details.","properties":{"description":{"description":"Company About text.","type":"string"},"employeeCount":{"description":"Number of employees LinkedIn reports for the company.","type":"integer"},"followerCount":{"description":"Number of followers of the company page.","type":"integer"},"id":{"description":"LinkedIn's numeric company id, as a string.","type":"string"},"linkedinUrl":{"description":"Canonical LinkedIn company URL.","type":"string"},"logo":{"description":"Company logo image URL.","type":"string"},"name":{"description":"Company name.","type":"string"},"universalName":{"description":"Company LinkedIn universal (vanity) name.","type":"string"},"website":{"description":"Company website.","type":"string"}},"type":"object"},"country":{"description":"Country of the job location.","type":"string"},"countryCode":{"description":"Two-letter country code of the job location.","type":"string"},"createdUtc":{"description":"UTC epoch timestamp in seconds (Unix time) the job was posted. Multiply by 1000 for a JS Date in milliseconds.","type":"number"},"descriptionText":{"description":"Full job description as plain text. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"easyApplyUrl":{"description":"LinkedIn Easy Apply URL when available.","type":"string"},"employmentType":{"description":"Employment type (e.g. full_time, contract, part_time).","type":"string"},"experienceLevel":{"description":"Seniority / experience level (e.g. Mid-Senior level, Entry level).","type":"string"},"expireUtc":{"description":"UTC epoch timestamp in seconds (Unix time) the posting expires. Multiply by 1000 for a JS Date in milliseconds.","type":"number"},"id":{"description":"LinkedIn job listing id.","type":"string"},"industries":{"description":"Industries associated with the role.","items":{"type":"string"},"type":"array"},"jobState":{"description":"Posting state reported by LinkedIn (e.g. LISTED, CLOSED).","type":"string"},"location":{"description":"Job location (city, region, or country).","type":"string"},"remote":{"description":"Whether LinkedIn flags the role as remote-allowed.","type":"boolean"},"salary":{"description":"Salary range when disclosed by the poster.","properties":{"max":{"description":"Maximum salary.","type":"number"},"min":{"description":"Minimum salary.","type":"number"},"text":{"description":"Salary as displayed (e.g. '300,000 - 330,000 USD').","type":"string"}},"type":"object"},"state":{"description":"State or region of the job location.","type":"string"},"title":{"description":"Job title.","type":"string"},"url":{"description":"Canonical LinkedIn job listing URL.","type":"string"},"views":{"description":"Number of views LinkedIn reports for the posting.","type":"integer"},"workplaceType":{"description":"Workplace type (e.g. remote, on_site, hybrid).","type":"string"}},"required":["title","url"],"type":"object"},"type":"array","x-anyapi-must-populate":true}},"required":["items"],"type":"object"}]},"found":{"description":"True when at least one job listing was returned.","type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"LinkedIn Jobs output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"LinkedIn Jobs","tags":["linkedin"],"x-mint":{"href":"/api-reference/linkedin/jobs"},"x-payment-info":{"price":{"currency":"USD","max":"0.028600","min":"0.001100","mode":"dynamic"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"currency":"USD","max":"0.028600","min":"0.001100","minimumUsd":"0.001000","mode":"dynamic","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"currency":"USD","max":"0.028600","min":"0.001100","minimumUsd":null,"mode":"dynamic","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/linkedin.jobs_thin":{"post":{"description":"Cheap job index: title, company, location, posted date, URL. No description, salary, applicant counts, or seniority - for those use linkedin.jobs.\n\n**Price:** \\$0.50 per 1,000 requests (flat per request - same cost regardless of results returned).\n\n**Routing:** 2 independent lanes are available in execution order. A failed attempt uses the next lane only when the request's payment authorizes that lane's price; the normalized schema stays the same.\n\n**Catalog:** [LinkedIn Jobs (index) pricing and uptime](https://getanyapi.com/api/linkedin/jobs-thin) - live USD price, lane routing, and measured 30-day uptime. [Every Linkedin endpoint](https://getanyapi.com/api/linkedin).","operationId":"linkedin_jobs_thin","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"limit":3,"location":"United States","query":"software engineer","workplaceType":"remote"},"schema":{"additionalProperties":false,"example":{"limit":3,"location":"United States","query":"software engineer","workplaceType":"remote"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"companyId":{"description":"Filter to a specific company by its LinkedIn numeric company id.","type":"string"},"employmentType":{"description":"Filter by employment type.","enum":["full-time","part-time","contract","internship","temporary"],"type":"string"},"experienceLevel":{"description":"Filter by required seniority/experience level.","enum":["internship","entry","associate","mid-senior","director","executive"],"type":"string"},"geoId":{"description":"LinkedIn geo id to target a precise location (e.g. 103644278 for the United States); more exact than the free-text location.","type":"string"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"limit":{"description":"Maximum number of results to return (1-25, default 25).","maximum":25,"minimum":1,"type":"integer"},"location":{"description":"City, region, or country to search within.","type":"string"},"postedLimit":{"description":"Only jobs posted within this window (past 24 hours, week, or month).","enum":["24h","week","month"],"type":"string"},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"query":{"description":"Job title or keywords to search.","type":"string"},"requireFields":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Name the output fields this request must be able to return, for example `logoUrl`, and it is served only by a source that returns every one of them. Fields you do not name are still returned whenever the serving source has them. This can raise your price: when the cheapest source cannot return a named field, a dearer source serves, and you are quoted and charged its price. A named field can still be absent on a listing that genuinely lacks it. Naming a combination that no single source returns together is refused as invalid input, with no charge.","items":{"enum":["companyUrl","createdUtc","id","logoUrl"],"type":"string"},"type":"array","uniqueItems":true},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"workplaceType":{"description":"Filter by workplace type (remote, hybrid, or onsite).","enum":["remote","hybrid","onsite"],"type":"string"}},"required":["query"],"title":"LinkedIn Jobs (index) input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"description":"The results wrapper, or null when nothing was found.","oneOf":[{"type":"null"},{"additionalProperties":false,"properties":{"items":{"description":"Job listing index records for the search. Populated whenever the provider has data for the entity.","items":{"description":"A LinkedIn job listing index entry: title, company, location, posting date, and the listing URL.","properties":{"company":{"description":"Hiring company name. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"companyUrl":{"description":"Canonical LinkedIn company URL.","type":"string"},"createdUtc":{"description":"UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds.","type":"number"},"id":{"description":"LinkedIn job listing id.","type":"string"},"location":{"description":"Job location (city, region). Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"logoUrl":{"description":"Hiring company logo image URL.","type":"string"},"title":{"description":"Job title. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"url":{"description":"Canonical LinkedIn job listing URL. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true}},"required":["title","url"],"type":"object"},"type":"array","x-anyapi-must-populate":true}},"required":["items"],"type":"object"}]},"found":{"description":"True when at least one job listing was returned.","type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"LinkedIn Jobs (index) output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"LinkedIn Jobs (index)","tags":["linkedin"],"x-mint":{"href":"/api-reference/linkedin/jobs-thin"},"x-payment-info":{"price":{"amount":"0.000500","currency":"USD","mode":"fixed"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"amount":"0.001000","currency":"USD","minimumUsd":"0.001000","mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"amount":"0.000500","currency":"USD","minimumUsd":null,"mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/linkedin.post":{"post":{"description":"Fetch a single LinkedIn post or article by URL (title, text, author, like and comment counts, publish date).\n\n**Price:** \\$0.50 per 1,000 requests (flat per request - same cost regardless of results returned).\n\n**Routing:** 3 independent lanes are available in execution order. A failed attempt uses the next lane only when the request's payment authorizes that lane's price; the normalized schema stays the same.\n\n**Catalog:** [LinkedIn Post pricing and uptime](https://getanyapi.com/api/linkedin/post) - live USD price, lane routing, and measured 30-day uptime. [Every Linkedin endpoint](https://getanyapi.com/api/linkedin).","operationId":"linkedin_post","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"url":"https://www.linkedin.com/posts/stripe_last-week-agent-traffic-surpassed-human-activity-7470882737390940160-2Nxs"},"schema":{"additionalProperties":false,"example":{"url":"https://www.linkedin.com/posts/stripe_last-week-agent-traffic-surpassed-human-activity-7470882737390940160-2Nxs"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"requireFields":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Name the output fields this request must be able to return, for example `image`, and it is served only by a source that returns every one of them. Fields you do not name are still returned whenever the serving source has them. This can raise your price: when the cheapest source cannot return a named field, a dearer source serves, and you are quoted and charged its price. A named field can still be absent on a post that genuinely lacks it. Naming a combination that no single source returns together is refused as invalid input, with no charge.","items":{"enum":["authorImage","authorUrl","comments","image","likes","title"],"type":"string"},"type":"array","uniqueItems":true},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"url":{"description":"Full LinkedIn post or article URL.","type":"string"}},"required":["url"],"title":"LinkedIn post input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"description":"The post result, or null when not found.","oneOf":[{"type":"null"},{"properties":{"author":{"description":"Name of the post author. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"authorImage":{"description":"Author avatar or company logo image URL, or null when the serving source does not carry one. The query string is a signed token, so keep the URL intact.","type":["string","null"]},"authorUrl":{"description":"LinkedIn URL of the post author.","type":"string"},"comments":{"description":"Number of comments on the post.","type":"integer"},"createdUtc":{"description":"UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds. Populated whenever the provider has data for the entity.","type":"number","x-anyapi-must-populate":true},"image":{"description":"First image attached to the post, or null when the serving source does not carry one. The query string is a signed token, so keep the URL intact.","type":["string","null"]},"likes":{"description":"Number of likes on the post.","type":"integer"},"text":{"description":"Text content of the post. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"title":{"description":"Title of the post.","type":"string"},"url":{"description":"Canonical URL of the post. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true}},"required":["url","title","text","author","likes","comments","createdUtc"],"type":"object"}]},"found":{"description":"Whether the post was found.","type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"LinkedIn post output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"LinkedIn Post","tags":["linkedin"],"x-mint":{"href":"/api-reference/linkedin/post"},"x-payment-info":{"price":{"amount":"0.000500","currency":"USD","mode":"fixed"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"amount":"0.001000","currency":"USD","minimumUsd":"0.001000","mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"amount":"0.000500","currency":"USD","minimumUsd":null,"mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/linkedin.post_comments":{"post":{"description":"List comments on a LinkedIn post - full text, commenter name/URL/job title, timestamps, and engagement.\n\n**Price:** \\$5.00 per 1,000 requests (flat per request - same cost regardless of results returned).\n\n**Routing:** 3 independent lanes are available in execution order. A failed attempt uses the next lane only when the request's payment authorizes that lane's price; the normalized schema stays the same.\n\n**Catalog:** [LinkedIn Post Comments pricing and uptime](https://getanyapi.com/api/linkedin/post-comments) - live USD price, lane routing, and measured 30-day uptime. [Every Linkedin endpoint](https://getanyapi.com/api/linkedin).","operationId":"linkedin_post_comments","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"limit":10,"url":"https://www.linkedin.com/posts/stripe_philip-kl%C3%B6ckner-in-conversation-with-conor-activity-7477791740645564416-tIbZ"},"schema":{"additionalProperties":false,"example":{"limit":10,"url":"https://www.linkedin.com/posts/stripe_philip-kl%C3%B6ckner-in-conversation-with-conor-activity-7477791740645564416-tIbZ"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"limit":{"default":100,"description":"Maximum number of comments to return.","maximum":100,"minimum":1,"type":"integer"},"postedLimit":{"description":"Only return comments posted within this window (default any).","enum":["any","24h","week","month","3months","6months","year"],"type":"string"},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"url":{"description":"Full URL of the LinkedIn post to list comments for.","type":"string"}},"required":["url"],"title":"LinkedIn post comments input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"description":"The post comments result, or null when not found.","oneOf":[{"type":"null"},{"additionalProperties":false,"properties":{"items":{"description":"The post's comments. Populated whenever the provider has data for the entity.","items":{"properties":{"actor":{"description":"The commenter (a profile or a company).","properties":{"id":{"description":"LinkedIn identifier of the commenter.","type":"string"},"image":{"description":"Profile picture URL of the commenter. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"linkedinUrl":{"description":"Canonical LinkedIn URL of the commenter. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"name":{"description":"Display name of the commenter. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"position":{"description":"Commenter's headline or job title as displayed. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"type":{"description":"Commenter kind, e.g. 'profile' or 'company'.","type":"string"}},"type":"object"},"commentary":{"description":"Full text of the comment. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"createdUtc":{"description":"UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds. Populated whenever the provider has data for the entity.","type":"number","x-anyapi-must-populate":true},"edited":{"description":"Whether the comment has been edited.","type":"boolean"},"engagement":{"description":"Engagement metrics for the comment.","properties":{"comments":{"description":"Number of replies to the comment.","type":"integer"},"likes":{"description":"Number of likes on the comment.","type":"integer"}},"type":"object"},"id":{"description":"Unique identifier of the comment. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"pinned":{"description":"Whether the comment is pinned on the post.","type":"boolean"},"url":{"description":"Canonical permalink URL of the comment. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true}},"required":["id","commentary"],"type":"object"},"type":"array","x-anyapi-must-populate":true}},"required":["items"],"type":"object"}]},"found":{"description":"Whether comments were found for the post.","type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"LinkedIn post comments output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"LinkedIn Post Comments","tags":["linkedin"],"x-mint":{"href":"/api-reference/linkedin/post-comments"},"x-payment-info":{"price":{"amount":"0.005000","currency":"USD","mode":"fixed"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"amount":"0.005000","currency":"USD","minimumUsd":"0.001000","mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"amount":"0.005000","currency":"USD","minimumUsd":null,"mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/linkedin.post_reactions":{"post":{"description":"List who reacted to a LinkedIn post - reactor name, profile URL, job title, and reaction type. Lead-gen grade.\n\n**Price:** \\$5.00 per 1,000 requests (flat per request - same cost regardless of results returned).\n\n**Routing:** 2 independent lanes are available in execution order. A failed attempt uses the next lane only when the request's payment authorizes that lane's price; the normalized schema stays the same.\n\n**Catalog:** [LinkedIn Post Reactions pricing and uptime](https://getanyapi.com/api/linkedin/post-reactions) - live USD price, lane routing, and measured 30-day uptime. [Every Linkedin endpoint](https://getanyapi.com/api/linkedin).","operationId":"linkedin_post_reactions","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"limit":5,"url":"https://www.linkedin.com/posts/satyanadella_today-were-bringing-skills-to-copilot-for-activity-7475945433668694017--kvG"},"schema":{"additionalProperties":false,"example":{"limit":5,"url":"https://www.linkedin.com/posts/satyanadella_today-were-bringing-skills-to-copilot-for-activity-7475945433668694017--kvG"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"limit":{"description":"Maximum number of reactions to return (1-100, default 100).","maximum":100,"minimum":1,"type":"integer"},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"url":{"description":"URL of the LinkedIn post to list reactions for (a /posts/...-activity-... or /feed/update/urn:li:activity:... link).","minLength":1,"type":"string"}},"required":["url"],"title":"LinkedIn Post Reactions input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"oneOf":[{"type":"null"},{"additionalProperties":false,"properties":{"items":{"description":"Reactions on the post, one record per reactor.","items":{"properties":{"actor":{"description":"The reactor - the person or company that reacted.","properties":{"id":{"description":"LinkedIn member or company id of the reactor. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"linkedinUrl":{"description":"Canonical LinkedIn profile or company URL of the reactor. Populated whenever the provider has data for the entity.","format":"uri","type":"string","x-anyapi-must-populate":true},"name":{"description":"Full name of the reactor (or company name). Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"pictureUrl":{"description":"Profile picture URL of the reactor.","type":"string"},"position":{"description":"Reactor's current job title / headline (or follower count for a company). Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true}},"required":["name"],"type":"object"},"id":{"description":"LinkedIn identifier of the reaction.","type":"string"},"postId":{"description":"LinkedIn URN of the post that was reacted to. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"reactionType":{"description":"Reaction kind (e.g. LIKE, PRAISE, EMPATHY, INTEREST, APPRECIATION, ENTERTAINMENT).","type":"string"}},"required":["reactionType","actor"],"type":"object"},"type":"array"}},"required":["items"],"type":"object"}]},"found":{"type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"LinkedIn Post Reactions output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"LinkedIn Post Reactions","tags":["linkedin"],"x-mint":{"href":"/api-reference/linkedin/post-reactions"},"x-payment-info":{"price":{"amount":"0.005000","currency":"USD","mode":"fixed"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"amount":"0.005000","currency":"USD","minimumUsd":"0.001000","mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"amount":"0.005000","currency":"USD","minimumUsd":null,"mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/linkedin.post_transcript":{"post":{"description":"Get the spoken transcript of a LinkedIn video post by URL.\n\n**Price:** \\$1.20 per 1,000 requests (flat per request - same cost regardless of results returned).\n\n**Routing:** one lane serves this API today, so a failed attempt has nowhere to fail over to. Payment outcome follows the selected rail's settlement policy.\n\n**Catalog:** [LinkedIn Post Transcript pricing and uptime](https://getanyapi.com/api/linkedin/post-transcript) - live USD price, lane routing, and measured 30-day uptime. [Every Linkedin endpoint](https://getanyapi.com/api/linkedin).","operationId":"linkedin_post_transcript","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"url":"https://www.linkedin.com/posts/artificial-analysis_gemini-35-flash-is-a-step-forward-for-google-activity-7465082408409870337-4Pm-"},"schema":{"additionalProperties":false,"example":{"url":"https://www.linkedin.com/posts/artificial-analysis_gemini-35-flash-is-a-step-forward-for-google-activity-7465082408409870337-4Pm-"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"url":{"description":"The full URL of the LinkedIn post to get the video transcript from.","type":"string"}},"required":["url"],"title":"LinkedIn Post Transcript input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"oneOf":[{"type":"null"},{"properties":{"transcript":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"transcriptNotAvailable":{"type":"boolean"},"url":{"type":"string"}},"required":["url","transcript","transcriptNotAvailable"],"type":"object"}]},"found":{"type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"LinkedIn Post Transcript output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"LinkedIn Post Transcript","tags":["linkedin"],"x-mint":{"href":"/api-reference/linkedin/post-transcript"},"x-payment-info":{"price":{"amount":"0.001200","currency":"USD","mode":"fixed"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"amount":"0.001200","currency":"USD","minimumUsd":"0.001000","mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"amount":"0.001200","currency":"USD","minimumUsd":null,"mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/linkedin.profile":{"post":{"description":"Fetch a rich LinkedIn member profile by URL: name, headline, avatar, location, connections and followers, current position, and full work experience with job titles, descriptions, dates, employment/workplace type, and per-role skills, plus education, skills, certifications, honors and awards, languages, projects, publications, and verified/premium/open-to-work flags.\n\n**Price:** \\$4.00 per 1,000 requests (flat per request - same cost regardless of results returned).\n\n**Routing:** 2 independent lanes are available in execution order. A failed attempt uses the next lane only when the request's payment authorizes that lane's price; the normalized schema stays the same.\n\n**Catalog:** [LinkedIn Profile pricing and uptime](https://getanyapi.com/api/linkedin/profile) - live USD price, lane routing, and measured 30-day uptime. [Every Linkedin endpoint](https://getanyapi.com/api/linkedin).","operationId":"linkedin_profile","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"url":"https://www.linkedin.com/in/patrickcollison"},"schema":{"additionalProperties":false,"example":{"url":"https://www.linkedin.com/in/patrickcollison"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"url":{"description":"Full LinkedIn profile URL.","type":"string"}},"required":["url"],"title":"LinkedIn profile input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"description":"The profile result, or null when not found.","oneOf":[{"type":"null"},{"properties":{"about":{"description":"About/summary text of the profile.","type":"string"},"certifications":{"description":"Licenses and certifications.","items":{"properties":{"issuedAt":{"description":"Issue date text.","type":"string"},"issuedBy":{"description":"Issuing organization.","type":"string"},"title":{"description":"Certification title.","type":"string"}},"type":"object"},"type":"array"},"city":{"description":"City of the profile owner.","type":"string"},"connectionsCount":{"description":"Number of connections.","type":"integer"},"country":{"description":"Country of the profile owner.","type":"string"},"countryCode":{"description":"Two-letter country code of the profile owner.","type":"string"},"coverImage":{"description":"Profile cover (banner) image URL. The query string is a signed token, so keep the URL intact.","type":"string"},"creator":{"description":"Whether the member is in LinkedIn creator mode.","type":"boolean"},"currentPosition":{"description":"The member's current role(s).","items":{"properties":{"companyId":{"description":"LinkedIn's numeric company id, as a string.","type":"string"},"companyLinkedinUrl":{"description":"Company LinkedIn URL.","type":"string"},"companyName":{"description":"Company name.","type":"string"},"duration":{"description":"Human-readable tenure, e.g. '12 yrs 6 mos'.","type":"string"},"location":{"description":"Role location.","type":"string"},"position":{"description":"Job title.","type":"string"}},"type":"object"},"type":"array"},"education":{"description":"Education entries.","items":{"properties":{"degree":{"description":"Degree earned.","type":"string"},"endDate":{"description":"End date text.","type":"string"},"fieldOfStudy":{"description":"Field of study.","type":"string"},"school":{"description":"School name.","type":"string"},"schoolId":{"description":"LinkedIn's numeric school id, as a string.","type":"string"},"schoolUrl":{"description":"School LinkedIn URL.","type":"string"},"startDate":{"description":"Start date text.","type":"string"}},"required":["school"],"type":"object"},"type":"array"},"experience":{"description":"Full work experience with titles, descriptions, dates, and per-role skills. Populated whenever the provider has data for the entity.","items":{"properties":{"companyId":{"description":"LinkedIn's numeric company id, as a string.","type":"string"},"companyLinkedinUrl":{"description":"Company LinkedIn URL.","type":"string"},"companyName":{"description":"Company name.","type":"string"},"description":{"description":"Role description.","type":"string"},"duration":{"description":"Human-readable tenure, e.g. '3 yrs 2 mos'.","type":"string"},"employmentType":{"description":"Employment type, e.g. 'Full-time'.","type":"string"},"endDate":{"description":"End date text, e.g. 'Present'.","type":"string"},"location":{"description":"Role location.","type":"string"},"position":{"description":"Job title. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"skills":{"description":"Skills associated with this role.","items":{},"type":"array"},"startDate":{"description":"Start date text, e.g. 'Feb 2014'.","type":"string"},"workplaceType":{"description":"Workplace type, e.g. 'Remote' or 'On-site'.","type":"string"}},"required":["position"],"type":"object"},"type":"array","x-anyapi-must-populate":true},"firstName":{"description":"First name of the profile owner.","type":"string"},"followerCount":{"description":"Number of followers.","type":"integer"},"headline":{"description":"Professional headline shown under the name. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"hiring":{"description":"Whether the member shows the Hiring badge.","type":"boolean"},"honorsAndAwards":{"description":"Honors and awards.","items":{"properties":{"description":{"description":"Award description.","type":"string"},"issuedAt":{"description":"Issue date text.","type":"string"},"issuedBy":{"description":"Issuing organization.","type":"string"},"title":{"description":"Award title.","type":"string"}},"type":"object"},"type":"array"},"id":{"description":"LinkedIn member identifier.","type":"string"},"influencer":{"description":"Whether LinkedIn marks the member as an influencer.","type":"boolean"},"languages":{"description":"Languages, as returned by LinkedIn when present.","items":{},"type":"array"},"lastName":{"description":"Last name of the profile owner.","type":"string"},"location":{"description":"Location of the profile owner.","type":"string"},"openToWork":{"description":"Whether the member is open to work.","type":"boolean"},"photo":{"description":"URL of the profile photo.","type":"string"},"premium":{"description":"Whether the member has LinkedIn Premium.","type":"boolean"},"projects":{"description":"Projects, as returned by LinkedIn when present.","items":{},"type":"array"},"publicIdentifier":{"description":"LinkedIn public identifier (the /in/ handle).","type":"string"},"publications":{"description":"Publications.","items":{"properties":{"description":{"description":"Publication description.","type":"string"},"publishedText":{"description":"Publisher and/or date text as shown on LinkedIn.","type":"string"},"title":{"description":"Publication title.","type":"string"}},"type":"object"},"type":"array"},"skills":{"description":"The member's skills, as free-form strings when present.","items":{},"type":"array"},"state":{"description":"State or region of the profile owner.","type":"string"},"topSkills":{"description":"The member's top skills, as free-form strings when present.","items":{},"type":"array"},"url":{"description":"Canonical LinkedIn profile URL.","type":"string"},"verified":{"description":"Whether the profile is identity-verified.","type":"boolean"}},"required":["firstName","lastName","headline","url"],"type":"object"}]},"found":{"description":"Whether the profile was found.","type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"LinkedIn profile output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"LinkedIn Profile","tags":["linkedin"],"x-mint":{"href":"/api-reference/linkedin/profile"},"x-payment-info":{"price":{"amount":"0.004000","currency":"USD","mode":"fixed"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"amount":"0.004000","currency":"USD","minimumUsd":"0.001000","mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"amount":"0.004000","currency":"USD","minimumUsd":null,"mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/linkedin.profile_comments":{"post":{"description":"List the comments a LinkedIn member has left on other people's posts - the comment text, its permalink and timestamp, plus the post it was left on and that post's author and engagement.\n\n**Price:** \\$5.00 per 1,000 requests (flat per request - same cost regardless of results returned).\n\n**Routing:** one lane serves this API today, so a failed attempt has nowhere to fail over to. Payment outcome follows the selected rail's settlement policy.\n\n**Catalog:** [LinkedIn Profile Comments pricing and uptime](https://getanyapi.com/api/linkedin/profile-comments) - live USD price, lane routing, and measured 30-day uptime. [Every Linkedin endpoint](https://getanyapi.com/api/linkedin).","operationId":"linkedin_profile_comments","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"limit":10,"url":"https://www.linkedin.com/in/jeffweiner08"},"schema":{"additionalProperties":false,"example":{"limit":10,"url":"https://www.linkedin.com/in/jeffweiner08"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"limit":{"default":100,"description":"Maximum number of comments to return.","maximum":100,"minimum":1,"type":"integer"},"postedLimit":{"description":"Only return comments posted within this window (default any).","enum":["any","24h","week","month"],"type":"string"},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"url":{"description":"Full URL of the LinkedIn member profile whose comments on other people's posts should be listed.","type":"string"}},"required":["url"],"title":"LinkedIn profile comments input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"description":"The profile comments result, or null when not found.","oneOf":[{"type":"null"},{"additionalProperties":false,"properties":{"items":{"description":"Comments this member left on other people's posts, newest first, each with the post it was left on. Populated whenever the provider has data for the entity.","items":{"properties":{"actor":{"description":"The member who left the comment (a profile or a company).","properties":{"id":{"description":"LinkedIn identifier of the commenter.","type":"string"},"image":{"description":"Profile picture URL of the commenter. Populated whenever the provider has data for the entity.","format":"uri","type":"string","x-anyapi-must-populate":true},"linkedinUrl":{"description":"Canonical LinkedIn URL of the commenter. Populated whenever the provider has data for the entity.","format":"uri","type":"string","x-anyapi-must-populate":true},"name":{"description":"Display name of the commenter. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"position":{"description":"Commenter's headline or job title as displayed. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"type":{"description":"Commenter kind, e.g. 'profile' or 'company'.","type":"string"}},"type":"object"},"commentary":{"description":"Full text of the comment the member left. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"createdUtc":{"description":"UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds. Populated whenever the provider has data for the entity.","type":"number","x-anyapi-must-populate":true},"edited":{"description":"Whether the comment has been edited.","type":"boolean"},"engagement":{"description":"Engagement metrics for the comment.","properties":{"comments":{"description":"Number of replies to the comment.","minimum":0,"type":"integer"},"likes":{"description":"Number of likes on the comment.","minimum":0,"type":"integer"},"shares":{"description":"Number of shares of the comment.","minimum":0,"type":"integer"}},"type":"object"},"id":{"description":"Unique identifier of the comment. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"isAuthor":{"description":"Whether the commenter is also the author of the post.","type":"boolean"},"post":{"description":"The post the comment was left on, so the comment can be read in context. Populated whenever the provider has data for the entity.","properties":{"author":{"description":"Author of the post that was commented on.","properties":{"headline":{"description":"Public headline or company follower summary for the post author.","type":"string"},"image":{"description":"Profile or company image URL of the post author. Populated whenever the provider has data for the entity.","format":"uri","type":"string","x-anyapi-must-populate":true},"name":{"description":"Display name of the post author. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"profileUrl":{"description":"Canonical LinkedIn profile or company URL of the post author. Populated whenever the provider has data for the entity.","format":"uri","type":"string","x-anyapi-must-populate":true},"publicIdentifier":{"description":"LinkedIn public identifier (vanity slug) of the post author, for example \"williamhgates\". Stable across lanes, unlike the raw id.","type":"string"}},"type":"object"},"engagement":{"description":"Public engagement totals on the post that was commented on.","properties":{"comments":{"description":"Total comment count on the post.","minimum":0,"type":"integer"},"reactions":{"description":"Total reaction count on the post.","minimum":0,"type":"integer"},"reposts":{"description":"Total repost or share count on the post.","minimum":0,"type":"integer"}},"type":"object"},"id":{"description":"Unique identifier of the LinkedIn post that was commented on.","type":"string"},"postedUtc":{"description":"UTC epoch timestamp in seconds (Unix time) when the post was published. Multiply by 1000 for a JS Date in milliseconds. Populated whenever the provider has data for the entity.","type":"number","x-anyapi-must-populate":true},"text":{"description":"Text content of the post that was commented on. Empty when the post carries no commentary of its own, such as a bare reshare or an image-only post. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"url":{"description":"Canonical LinkedIn URL of the post that was commented on. Populated whenever the provider has data for the entity.","format":"uri","type":"string","x-anyapi-must-populate":true}},"type":"object","x-anyapi-must-populate":true},"url":{"description":"Canonical permalink URL of the comment. Populated whenever the provider has data for the entity.","format":"uri","type":"string","x-anyapi-must-populate":true}},"required":["id","commentary"],"type":"object"},"type":"array","x-anyapi-must-populate":true}},"required":["items"],"type":"object"}]},"found":{"description":"Whether comments by this member were found.","type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"LinkedIn profile comments output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"LinkedIn Profile Comments","tags":["linkedin"],"x-mint":{"href":"/api-reference/linkedin/profile-comments"},"x-payment-info":{"price":{"amount":"0.005000","currency":"USD","mode":"fixed"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"amount":"0.005000","currency":"USD","minimumUsd":"0.001000","mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"amount":"0.005000","currency":"USD","minimumUsd":null,"mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/linkedin.profile_posts_full":{"post":{"description":"Fetch recent public LinkedIn profile posts with enriched author, engagement, article, newsletter, media, annotation, repost, and social activity details.\n\n**Price:** \\$5.00 per 1,000 requests (flat per request - same cost regardless of results returned).\n\n**Routing:** 2 independent lanes are available in execution order. A failed attempt uses the next lane only when the request's payment authorizes that lane's price; the normalized schema stays the same.\n\n**Catalog:** [LinkedIn Profile Posts (full) pricing and uptime](https://getanyapi.com/api/linkedin/profile-posts-full) - live USD price, lane routing, and measured 30-day uptime. [Every Linkedin endpoint](https://getanyapi.com/api/linkedin).","operationId":"linkedin_profile_posts_full","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"limit":10,"url":"https://www.linkedin.com/in/williamhgates/"},"schema":{"additionalProperties":false,"example":{"limit":10,"url":"https://www.linkedin.com/in/williamhgates/"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"contextCountry":{"description":"Regional LinkedIn context used when retrieving posts.","enum":["any","US","GB","DE","FR"],"type":"string"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"includeQuotePosts":{"default":true,"description":"Whether to include quote posts that add commentary to shared content.","type":"boolean"},"includeReposts":{"default":true,"description":"Whether to include reposts that share content without added commentary.","type":"boolean"},"limit":{"default":10,"description":"Maximum number of posts to return (1-100, default 10).","maximum":100,"minimum":1,"type":"integer"},"postedLimit":{"description":"Only return posts published within this relative time window.","enum":["any","1h","24h","week","month","3months","6months","year"],"type":"string"},"postedLimitDate":{"description":"Only return posts published on or after this date or timestamp, using a JavaScript-compatible date-time string.","minLength":1,"type":"string"},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"url":{"description":"Full URL of the public LinkedIn profile whose posts should be returned.","format":"uri","type":"string"}},"required":["url"],"title":"LinkedIn Profile Posts (full) input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"description":"The enriched profile posts result, or null when no posts were found.","oneOf":[{"type":"null"},{"additionalProperties":false,"properties":{"items":{"description":"Recent enriched posts published by the profile. Populated whenever the provider has data for the entity.","items":{"properties":{"articleDescription":{"description":"Description excerpt of the attached article, when present.","type":"string"},"articleImage":{"description":"Image URL of the attached article, when present.","format":"uri","type":"string"},"articleImageHeight":{"description":"Height of the attached article image in pixels.","minimum":0,"type":"integer"},"articleImageWidth":{"description":"Width of the attached article image in pixels.","minimum":0,"type":"integer"},"articleLinkLabel":{"description":"Accessible display label for the attached article link, when present.","type":"string"},"articleSubtitle":{"description":"Subtitle or publisher label of the attached article, when present.","type":"string"},"articleTitle":{"description":"Title of the attached article, when present.","type":"string"},"articleUrl":{"description":"Canonical URL of the attached article, when present.","format":"uri","type":"string"},"author":{"description":"Detailed identity and publication information for the post author. Populated whenever the provider has data for the entity.","properties":{"handle":{"description":"Public LinkedIn profile handle of the author. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"headline":{"description":"Professional headline or follower summary displayed for the author. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"id":{"description":"Stable LinkedIn identifier of the author. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"image":{"description":"Profile or company image URL of the author. Populated whenever the provider has data for the entity.","format":"uri","type":"string","x-anyapi-must-populate":true},"imageHeight":{"description":"Height of the author image in pixels.","minimum":0,"type":"integer"},"imageWidth":{"description":"Width of the author image in pixels.","minimum":0,"type":"integer"},"name":{"description":"Display name of the author. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"profileUrl":{"description":"Canonical LinkedIn profile or company URL of the author. Populated whenever the provider has data for the entity.","format":"uri","type":"string","x-anyapi-must-populate":true},"type":{"description":"Author kind, such as profile or company. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"universalName":{"description":"Universal LinkedIn name used for company authors, when present.","type":"string"},"website":{"description":"Publication or website URL displayed by the author.","format":"uri","type":"string"},"websiteLabel":{"description":"Display label for the author's publication or website link.","type":"string"}},"type":"object","x-anyapi-must-populate":true},"contentAnnotations":{"description":"Structured mentions and links embedded in the post text.","items":{"properties":{"companyId":{"description":"LinkedIn identifier of a mentioned company, when present.","type":"string"},"companyName":{"description":"Display name of a mentioned company, when present.","type":"string"},"companyUrl":{"description":"Canonical LinkedIn URL of a mentioned company, when present.","format":"uri","type":"string"},"hyperlink":{"description":"Canonical hyperlink attached to the annotation, when present.","format":"uri","type":"string"},"length":{"description":"Length of the annotated text span.","minimum":0,"type":"integer"},"profileFirstName":{"description":"First name of a mentioned profile, when present.","type":"string"},"profileHandle":{"description":"Public LinkedIn handle of a mentioned profile, when present.","type":"string"},"profileId":{"description":"LinkedIn identifier of a mentioned profile, when present.","type":"string"},"profileLastName":{"description":"Last name of a mentioned profile, when present.","type":"string"},"profileUrl":{"description":"Canonical LinkedIn URL of a mentioned profile, when present.","format":"uri","type":"string"},"start":{"description":"Zero-based start offset of the annotation in the post text.","minimum":0,"type":"integer"},"textLink":{"description":"Canonical text link attached to the annotation, when present.","format":"uri","type":"string"},"type":{"description":"Kind of content annotation.","type":"string"}},"type":"object"},"type":"array"},"createdUtc":{"description":"UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds. Populated whenever the provider has data for the entity.","type":"number","x-anyapi-must-populate":true},"engagement":{"description":"Engagement totals and reaction breakdown for the post. Populated whenever the provider has data for the entity.","properties":{"breakdown":{"description":"Counts grouped by LinkedIn reaction type.","items":{"properties":{"count":{"description":"Number of reactions of this type.","minimum":0,"type":"integer"},"type":{"description":"LinkedIn reaction type.","type":"string"}},"required":["type","count"],"type":"object"},"type":"array"},"comments":{"description":"Total number of comments on the post. Populated whenever the provider has data for the entity.","minimum":0,"type":"integer","x-anyapi-must-populate":true},"reactions":{"description":"Total number of reactions on the post. Populated whenever the provider has data for the entity.","minimum":0,"type":"integer","x-anyapi-must-populate":true},"reposts":{"description":"Total number of reposts or shares of the post. Populated whenever the provider has data for the entity.","minimum":0,"type":"integer","x-anyapi-must-populate":true}},"type":"object","x-anyapi-must-populate":true},"id":{"description":"Unique identifier of the LinkedIn post. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"images":{"description":"Images attached to the post.","items":{"properties":{"height":{"description":"Height of the image in pixels.","minimum":0,"type":"integer"},"url":{"description":"URL of the attached image.","format":"uri","type":"string"},"width":{"description":"Width of the image in pixels.","minimum":0,"type":"integer"}},"required":["url"],"type":"object"},"type":"array"},"newsletterTitle":{"description":"Title of the LinkedIn newsletter associated with the post, when present.","type":"string"},"newsletterUrl":{"description":"Canonical URL of the LinkedIn newsletter associated with the post, when present.","format":"uri","type":"string"},"publicationUrl":{"description":"Canonical LinkedIn feed publication URL for the post. Populated whenever the provider has data for the entity.","format":"uri","type":"string","x-anyapi-must-populate":true},"repostArticleDescription":{"description":"Description excerpt of the reposted post's article, when present.","type":"string"},"repostArticleImage":{"description":"Image URL of the reposted post's article, when present.","format":"uri","type":"string"},"repostArticleImageHeight":{"description":"Height of the reposted post's article image in pixels.","minimum":0,"type":"integer"},"repostArticleImageWidth":{"description":"Width of the reposted post's article image in pixels.","minimum":0,"type":"integer"},"repostArticleLinkLabel":{"description":"Accessible display label for the reposted post's article link, when present.","type":"string"},"repostArticleSubtitle":{"description":"Subtitle or publisher label of the reposted post's article, when present.","type":"string"},"repostArticleTitle":{"description":"Title of the article attached to the reposted post, when present.","type":"string"},"repostArticleUrl":{"description":"Canonical URL of the reposted post's article, when present.","format":"uri","type":"string"},"repostAuthorHandle":{"description":"Public LinkedIn profile handle of the reposted post's author, when present.","type":"string"},"repostAuthorHeadline":{"description":"Headline or follower summary of the reposted post's author, when present.","type":"string"},"repostAuthorId":{"description":"Stable LinkedIn identifier of the reposted post's author, when present.","type":"string"},"repostAuthorImage":{"description":"Image URL of the reposted post's author, when present.","format":"uri","type":"string"},"repostAuthorName":{"description":"Display name of the reposted post's author, when present.","type":"string"},"repostAuthorType":{"description":"Author kind for the reposted post, when present.","type":"string"},"repostAuthorUniversalName":{"description":"Universal LinkedIn name of the reposted post's company author, when present.","type":"string"},"repostAuthorUrl":{"description":"Canonical LinkedIn URL of the reposted post's author, when present.","format":"uri","type":"string"},"repostCreatedUtc":{"description":"UTC epoch timestamp in seconds (Unix time) when the reposted post was published. Multiply by 1000 for a JS Date in milliseconds.","type":"number"},"repostId":{"description":"Unique identifier of the reposted post, when present.","type":"string"},"repostImages":{"description":"Images attached to the reposted post.","items":{"properties":{"height":{"description":"Height of the reposted image in pixels.","minimum":0,"type":"integer"},"url":{"description":"URL of an image attached to the reposted post.","format":"uri","type":"string"},"width":{"description":"Width of the reposted image in pixels.","minimum":0,"type":"integer"}},"required":["url"],"type":"object"},"type":"array"},"repostText":{"description":"Text content of the reposted post, when present.","type":"string"},"repostUrl":{"description":"Canonical URL of the reposted post, when present.","format":"uri","type":"string"},"socialContent":{"description":"LinkedIn visibility and action flags for the post.","properties":{"hideCommentAction":{"description":"Whether LinkedIn hides the comment action.","type":"boolean"},"hideCommentsCount":{"description":"Whether LinkedIn hides the comment count.","type":"boolean"},"hideReactAction":{"description":"Whether LinkedIn hides the react action.","type":"boolean"},"hideReactionsCount":{"description":"Whether LinkedIn hides the reaction count.","type":"boolean"},"hideRepostsCount":{"description":"Whether LinkedIn hides the repost count.","type":"boolean"},"hideSendAction":{"description":"Whether LinkedIn hides the send action.","type":"boolean"},"hideShareAction":{"description":"Whether LinkedIn hides the share action.","type":"boolean"},"hideSocialActivityCounts":{"description":"Whether LinkedIn hides social activity counts.","type":"boolean"},"hideViewsCount":{"description":"Whether LinkedIn hides the view count.","type":"boolean"},"shareUrl":{"description":"Canonical LinkedIn share URL for the post.","format":"uri","type":"string"},"showContributionExperience":{"description":"Whether LinkedIn enables the contribution experience.","type":"boolean"},"showSocialDetail":{"description":"Whether LinkedIn shows social detail.","type":"boolean"}},"type":"object"},"text":{"description":"Text content of the post. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"type":{"description":"LinkedIn record type reported for the post.","type":"string"},"url":{"description":"Canonical LinkedIn URL of the post. Populated whenever the provider has data for the entity.","format":"uri","type":"string","x-anyapi-must-populate":true},"videoThumbnail":{"description":"Thumbnail URL of the attached video, when present.","format":"uri","type":"string"},"videoUrl":{"description":"URL of the attached video, when present.","format":"uri","type":"string"}},"required":["id","url","text","createdUtc"],"type":"object"},"type":"array","x-anyapi-must-populate":true}},"required":["items"],"type":"object"}]},"found":{"description":"Whether profile posts were found.","type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"LinkedIn Profile Posts (full) output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"LinkedIn Profile Posts (full)","tags":["linkedin"],"x-mint":{"href":"/api-reference/linkedin/profile-posts-full"},"x-payment-info":{"price":{"amount":"0.005000","currency":"USD","mode":"fixed"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"amount":"0.005000","currency":"USD","minimumUsd":"0.001000","mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"amount":"0.005000","currency":"USD","minimumUsd":null,"mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/linkedin.profile_posts_thin":{"post":{"description":"Fetch recent public LinkedIn profile posts with portable identity, author, engagement, article, image, video, and repost fields.\n\n**Price:** \\$5.00 per 1,000 requests (flat per request - same cost regardless of results returned).\n\n**Routing:** 3 independent lanes are available in execution order. A failed attempt uses the next lane only when the request's payment authorizes that lane's price; the normalized schema stays the same.\n\n**Catalog:** [LinkedIn Profile Posts (basic) pricing and uptime](https://getanyapi.com/api/linkedin/profile-posts-thin) - live USD price, lane routing, and measured 30-day uptime. [Every Linkedin endpoint](https://getanyapi.com/api/linkedin).","operationId":"linkedin_profile_posts_thin","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"limit":10,"url":"https://www.linkedin.com/in/williamhgates/"},"schema":{"additionalProperties":false,"example":{"limit":10,"url":"https://www.linkedin.com/in/williamhgates/"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"limit":{"default":10,"description":"Maximum number of posts to return (10-100, default 10).","maximum":100,"minimum":10,"type":"integer"},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"url":{"description":"Full URL of the public LinkedIn profile whose posts should be returned.","format":"uri","type":"string"}},"required":["url"],"title":"LinkedIn Profile Posts (basic) input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"description":"The profile posts result, or null when no posts were found.","oneOf":[{"type":"null"},{"additionalProperties":false,"properties":{"items":{"description":"Recent posts published by the profile. Populated whenever the provider has data for the entity.","items":{"properties":{"articleImage":{"description":"Image URL of the attached article, when present.","format":"uri","type":"string"},"articleSubtitle":{"description":"Subtitle or publisher label of the attached article, when present.","type":"string"},"articleTitle":{"description":"Title of the attached article, when present.","type":"string"},"articleUrl":{"description":"Canonical URL of the attached article, when present.","format":"uri","type":"string"},"author":{"description":"Portable details about the post author. Populated whenever the provider has data for the entity.","properties":{"handle":{"description":"Public LinkedIn handle of the author. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"headline":{"description":"Professional headline displayed for the author. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"image":{"description":"Profile image URL of the author. Populated whenever the provider has data for the entity.","format":"uri","type":"string","x-anyapi-must-populate":true},"profileUrl":{"description":"Canonical LinkedIn profile URL of the author. Populated whenever the provider has data for the entity.","format":"uri","type":"string","x-anyapi-must-populate":true}},"type":"object","x-anyapi-must-populate":true},"createdUtc":{"description":"UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds. Populated whenever the provider has data for the entity.","type":"number","x-anyapi-must-populate":true},"engagement":{"description":"Portable engagement totals for the post. Populated whenever the provider has data for the entity.","properties":{"comments":{"description":"Total number of comments on the post. Populated whenever the provider has data for the entity.","minimum":0,"type":"integer","x-anyapi-must-populate":true},"reactions":{"description":"Total number of reactions on the post. Populated whenever the provider has data for the entity.","minimum":0,"type":"integer","x-anyapi-must-populate":true},"reposts":{"description":"Total number of reposts or shares of the post. Populated whenever the provider has data for the entity.","minimum":0,"type":"integer","x-anyapi-must-populate":true}},"type":"object","x-anyapi-must-populate":true},"id":{"description":"Unique identifier of the LinkedIn post. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"images":{"description":"Images attached to the post.","items":{"properties":{"url":{"description":"URL of an attached image.","format":"uri","type":"string"}},"required":["url"],"type":"object"},"type":"array"},"repostArticleImage":{"description":"Cover image URL of the article attached to the reposted post. The query string is a signed token, so keep the URL intact.","type":"string"},"repostArticleSubtitle":{"description":"Subtitle or source domain of the article attached to the reposted post.","type":"string"},"repostArticleTitle":{"description":"Title of the article attached to the reposted post, when present.","type":"string"},"repostArticleUrl":{"description":"Canonical URL of the article attached to the reposted post, when present.","format":"uri","type":"string"},"repostAuthorHeadline":{"description":"Headline or follower line of the author of the reposted post.","type":"string"},"repostAuthorImage":{"description":"Avatar or logo image URL of the author of the reposted post. The query string is a signed token, so keep the URL intact.","type":"string"},"repostAuthorUrl":{"description":"Canonical LinkedIn URL of the author of the reposted post.","format":"uri","type":"string"},"repostCreatedUtc":{"description":"UTC epoch timestamp in seconds (Unix time) when the reposted post was published. Multiply by 1000 for a JS Date in milliseconds.","type":"number"},"repostId":{"description":"Unique identifier of the reposted post, when present.","type":"string"},"repostText":{"description":"Text content of the reposted post, when present.","type":"string"},"repostUrl":{"description":"Canonical URL of the reposted post, when present.","format":"uri","type":"string"},"text":{"description":"Text content of the post. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"url":{"description":"Canonical LinkedIn URL of the post. Populated whenever the provider has data for the entity.","format":"uri","type":"string","x-anyapi-must-populate":true},"videoThumbnail":{"description":"Thumbnail URL of the attached video, when present.","format":"uri","type":"string"},"videoUrl":{"description":"URL of the attached video, when present.","format":"uri","type":"string"}},"required":["id","url","text","createdUtc"],"type":"object"},"type":"array","x-anyapi-must-populate":true}},"required":["items"],"type":"object"}]},"found":{"description":"Whether profile posts were found.","type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"LinkedIn Profile Posts (basic) output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"LinkedIn Profile Posts (basic)","tags":["linkedin"],"x-mint":{"href":"/api-reference/linkedin/profile-posts-thin"},"x-payment-info":{"price":{"amount":"0.005000","currency":"USD","mode":"fixed"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"amount":"0.005000","currency":"USD","minimumUsd":"0.001000","mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"amount":"0.005000","currency":"USD","minimumUsd":null,"mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/linkedin.profile_reactions":{"post":{"description":"List the posts a LinkedIn member has reacted to - the reaction, its timestamp, and the full post it was made on with author and engagement.\n\n**Price:** \\$5.00 per 1,000 requests (flat per request - same cost regardless of results returned).\n\n**Routing:** one lane serves this API today, so a failed attempt has nowhere to fail over to. Payment outcome follows the selected rail's settlement policy.\n\n**Catalog:** [LinkedIn Profile Reactions pricing and uptime](https://getanyapi.com/api/linkedin/profile-reactions) - live USD price, lane routing, and measured 30-day uptime. [Every Linkedin endpoint](https://getanyapi.com/api/linkedin).","operationId":"linkedin_profile_reactions","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"limit":10,"url":"https://www.linkedin.com/in/williamhgates"},"schema":{"additionalProperties":false,"example":{"limit":10,"url":"https://www.linkedin.com/in/williamhgates"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"limit":{"default":100,"description":"Maximum number of reactions to return. One upstream page holds 100.","maximum":100,"minimum":1,"type":"integer"},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"url":{"description":"Full URL of the LinkedIn member profile whose reactions to list, for example https://www.linkedin.com/in/williamhgates.","type":"string"}},"required":["url"],"title":"LinkedIn profile reactions input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"description":"The profile reactions result, or null when not found.","oneOf":[{"type":"null"},{"additionalProperties":false,"properties":{"items":{"description":"Posts the member has reacted to, newest first. One record per reaction, carrying both the reaction itself and the post it was made on. Populated whenever the provider has data for the entity.","items":{"properties":{"action":{"description":"LinkedIn's own display sentence for the reaction, for example \"Bill Gates likes this\" or \"Ali Abdaal liked Tobi Odutola's comment on this\". It is the only place the reaction kind appears on this endpoint, it names the member and sometimes a third party, and it distinguishes a reaction on the post from a reaction on a comment. It is free English text, not an enum: parse it only if you accept that LinkedIn may reword it. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"actor":{"description":"The member who reacted - the profile that was asked about. Populated whenever the provider has data for the entity.","properties":{"id":{"description":"LinkedIn member identifier of the reactor.","type":"string"},"image":{"description":"Profile picture URL of the reactor.","format":"uri","type":"string"},"linkedinUrl":{"description":"Canonical LinkedIn profile URL of the reactor. Populated whenever the provider has data for the entity.","format":"uri","type":"string","x-anyapi-must-populate":true}},"type":"object","x-anyapi-must-populate":true},"createdUtc":{"description":"UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds. Populated whenever the provider has data for the entity.","type":"number","x-anyapi-must-populate":true},"id":{"description":"LinkedIn activity identifier of the reaction event itself. This is not the identifier of the post that was reacted to - that is post.id. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"post":{"description":"The post the member reacted to. Populated whenever the provider has data for the entity.","properties":{"author":{"description":"Public author identity attached to the post. Populated whenever the provider has data for the entity.","properties":{"headline":{"description":"Public headline for a person, or the follower summary for a company. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"id":{"description":"LinkedIn identifier for the author.","type":"string"},"image":{"description":"Public profile or company image URL for the author.","format":"uri","type":"string"},"name":{"description":"Display name of the author. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"profileUrl":{"description":"Canonical LinkedIn profile or company URL for the author. Populated whenever the provider has data for the entity.","format":"uri","type":"string","x-anyapi-must-populate":true},"publicIdentifier":{"description":"LinkedIn public identifier (vanity slug) for the author, for example \"williamhgates\". Absent for company authors, which carry universalName instead.","type":"string"},"type":{"description":"Author kind, such as profile or company.","type":"string"},"universalName":{"description":"Universal LinkedIn name used for company authors, when present.","type":"string"}},"type":"object","x-anyapi-must-populate":true},"engagement":{"description":"Public engagement totals attached to the post. Populated whenever the provider has data for the entity.","properties":{"breakdown":{"description":"Reaction counts on the post grouped by LinkedIn reaction type.","items":{"properties":{"count":{"description":"Number of reactions of this type.","minimum":0,"type":"integer"},"type":{"description":"LinkedIn reaction type.","type":"string"}},"required":["type","count"],"type":"object"},"type":"array"},"comments":{"description":"Total comment count.","minimum":0,"type":"integer"},"reactions":{"description":"Total reaction count.","minimum":0,"type":"integer"},"reposts":{"description":"Total repost or share count.","minimum":0,"type":"integer"}},"type":"object","x-anyapi-must-populate":true},"id":{"description":"LinkedIn activity identifier of the post that was reacted to. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"postedUtc":{"description":"UTC epoch timestamp in seconds (Unix time) the post was published. Multiply by 1000 for a JS Date in milliseconds.","type":"number"},"repostId":{"description":"Unique identifier of the post this one reshares, when it is a reshare.","type":"string"},"text":{"description":"Text content of the post. Empty string when the post carries no commentary of its own, such as a bare reshare or an image-only post. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"url":{"description":"Canonical LinkedIn URL of the post. Populated whenever the provider has data for the entity.","format":"uri","type":"string","x-anyapi-must-populate":true}},"type":"object","x-anyapi-must-populate":true},"url":{"description":"Canonical LinkedIn feed URL of the reaction event. Use post.url for the post itself. Populated whenever the provider has data for the entity.","format":"uri","type":"string","x-anyapi-must-populate":true}},"required":["id","action"],"type":"object"},"type":"array","x-anyapi-must-populate":true}},"required":["items"],"type":"object"}]},"found":{"description":"Whether reactions were found for the profile.","type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"LinkedIn profile reactions output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"LinkedIn Profile Reactions","tags":["linkedin"],"x-mint":{"href":"/api-reference/linkedin/profile-reactions"},"x-payment-info":{"price":{"amount":"0.005000","currency":"USD","mode":"fixed"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"amount":"0.005000","currency":"USD","minimumUsd":"0.001000","mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"amount":"0.005000","currency":"USD","minimumUsd":null,"mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/linkedin.profile_thin":{"post":{"description":"Lightweight profile: name, avatar, location, followers, and a basic experience/education list (company + dates only, no job titles, descriptions, or skills; past companies may be redacted). For full experience detail, skills, certifications, connections, and verified flags use linkedin.profile.\n\n**Price:** \\$0.80 per 1,000 requests (flat per request - same cost regardless of results returned).\n\n**Routing:** 2 independent lanes are available in execution order. A failed attempt uses the next lane only when the request's payment authorizes that lane's price; the normalized schema stays the same.\n\n**Catalog:** [LinkedIn Profile (basic) pricing and uptime](https://getanyapi.com/api/linkedin/profile-thin) - live USD price, lane routing, and measured 30-day uptime. [Every Linkedin endpoint](https://getanyapi.com/api/linkedin).","operationId":"linkedin_profile_thin","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"url":"https://www.linkedin.com/in/williamhgates"},"schema":{"additionalProperties":false,"example":{"url":"https://www.linkedin.com/in/williamhgates"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"requireFields":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Name the output fields this request must be able to return, for example `headline` or `recentPosts`, and it is served only by a source that returns every one of them. Fields you do not name are still returned whenever the serving source has them. This can raise your price: when the cheapest source cannot return a named field, a dearer source serves, and you are quoted and charged its price. A named field can still be absent on a profile that genuinely lacks it. Naming a combination that no single source returns together is refused as invalid input, with no charge.","items":{"enum":["about","activityType","articles","avatarUrl","company","companyUrl","createdUtc","education","endDate","followers","headline","id","location","name","recentPosts","school","schoolUrl","startDate","text","url"],"type":"string"},"type":"array","uniqueItems":true},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"url":{"description":"Full LinkedIn profile URL.","type":"string"}},"required":["url"],"title":"LinkedIn profile (basic) input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"description":"The profile result, or null when not found.","oneOf":[{"type":"null"},{"properties":{"about":{"description":"About/summary text of the profile.","type":"string"},"articles":{"description":"The profile's published articles, or null when the serving source does not publish them.","items":{"properties":{"createdUtc":{"description":"UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds.","type":"number"},"headline":{"description":"Headline of the article.","type":"string"},"url":{"description":"Canonical URL of the article.","type":"string"}},"required":["headline"],"type":"object"},"type":["array","null"]},"avatarUrl":{"description":"URL of the profile avatar image.","type":"string"},"education":{"description":"Education entries.","items":{"properties":{"endDate":{"description":"End date of study.","type":"string"},"school":{"description":"Name of the school.","type":"string"},"schoolUrl":{"description":"URL of the school page.","type":"string"},"startDate":{"description":"Start date of study.","type":"string"}},"required":["school"],"type":"object"},"type":"array"},"experience":{"description":"Work experience entries (company and dates only in this basic tier). Populated whenever the provider has data for the entity.","items":{"properties":{"company":{"description":"Name of the company.","type":"string"},"companyUrl":{"description":"URL of the company page.","type":"string"},"endDate":{"description":"End date of the role.","type":"string"},"startDate":{"description":"Start date of the role.","type":"string"}},"required":["company"],"type":"object"},"type":"array","x-anyapi-must-populate":true},"followers":{"description":"Number of followers.","type":"integer"},"headline":{"description":"Profile headline, or null when the serving source does not publish it.","type":["string","null"]},"location":{"description":"Location of the profile owner.","type":"string"},"name":{"description":"Full name of the profile owner.","type":"string"},"recentPosts":{"description":"The profile's recent posts, or null when the serving source does not publish them.","items":{"properties":{"activityType":{"description":"Type of activity for the post.","type":"string"},"createdUtc":{"description":"UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds.","type":"number"},"id":{"description":"Unique identifier of the post.","type":"string"},"text":{"description":"Text content of the post.","type":"string"},"url":{"description":"Canonical URL of the post.","type":"string"}},"required":["id"],"type":"object"},"type":["array","null"]}},"required":["name"],"type":"object"}]},"found":{"description":"Whether the profile was found.","type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"LinkedIn profile (basic) output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"LinkedIn Profile (basic)","tags":["linkedin"],"x-mint":{"href":"/api-reference/linkedin/profile-thin"},"x-payment-info":{"price":{"amount":"0.000800","currency":"USD","mode":"fixed"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"amount":"0.001000","currency":"USD","minimumUsd":"0.001000","mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"amount":"0.000800","currency":"USD","minimumUsd":null,"mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/linkedin.search_companies":{"post":{"description":"Search LinkedIn companies by keyword with optional location filtering, returning normalized company records.\n\n**Price:** \\$5.00 per 1,000 requests (flat per request - same cost regardless of results returned).\n\n**Routing:** 2 independent lanes are available in execution order. A failed attempt uses the next lane only when the request's payment authorizes that lane's price; the normalized schema stays the same.\n\n**Catalog:** [LinkedIn Company Search pricing and uptime](https://getanyapi.com/api/linkedin/search-companies) - live USD price, lane routing, and measured 30-day uptime. [Every Linkedin endpoint](https://getanyapi.com/api/linkedin).","operationId":"linkedin_search_companies","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"limit":3,"query":"fintech"},"schema":{"additionalProperties":false,"example":{"limit":3,"query":"fintech"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"limit":{"default":20,"description":"Maximum number of results to return (1-20, default 20).","maximum":20,"minimum":1,"type":"integer"},"location":{"description":"Optional location filter, written out in full (e.g. United Kingdom or San Francisco).","type":"string"},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"query":{"description":"Keyword to search LinkedIn companies for (e.g. marketing agency).","type":"string"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true}},"required":["query"],"title":"LinkedIn company search input","type":"object","x-aliases":{"keyword":"query"}}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"description":"The results wrapper, or null when nothing was found.","oneOf":[{"type":"null"},{"additionalProperties":false,"properties":{"items":{"description":"Matching company records. Populated whenever the provider has data for the entity.","items":{"description":"A LinkedIn company: name, URL, industry, location, follower count, and description.","properties":{"description":{"description":"Company summary / about text. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"followersText":{"description":"Follower count as a display string (e.g. 105K followers). Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"handle":{"description":"Company universal name (the vanity slug in the URL). Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"id":{"description":"LinkedIn company id. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"image":{"description":"Company logo image URL. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"industry":{"description":"Company industry. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"location":{"description":"Company location as a single string (city, region). Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"name":{"description":"Company name. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"url":{"description":"Canonical LinkedIn company URL. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true}},"required":["id","name","url"],"type":"object"},"type":"array","x-anyapi-must-populate":true}},"required":["items"],"type":"object"}]},"found":{"description":"True when at least one company was returned.","type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"LinkedIn company search output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"LinkedIn Company Search","tags":["linkedin"],"x-mint":{"href":"/api-reference/linkedin/search-companies"},"x-payment-info":{"price":{"amount":"0.005000","currency":"USD","mode":"fixed"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"amount":"0.005000","currency":"USD","minimumUsd":"0.001000","mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"amount":"0.005000","currency":"USD","minimumUsd":null,"mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/linkedin.search_posts":{"post":{"description":"Search public LinkedIn posts by keyword (text, link, publish date).\n\n**Price:** \\$1.20 per 1,000 requests (flat per request - same cost regardless of results returned).\n\n**Routing:** 2 independent lanes are available in execution order. A failed attempt uses the next lane only when the request's payment authorizes that lane's price; the normalized schema stays the same.\n\n**Catalog:** [LinkedIn Post Search pricing and uptime](https://getanyapi.com/api/linkedin/search-posts) - live USD price, lane routing, and measured 30-day uptime. [Every Linkedin endpoint](https://getanyapi.com/api/linkedin).","operationId":"linkedin_search_posts","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"datePosted":"last-week","query":"hiring"},"schema":{"additionalProperties":false,"example":{"datePosted":"last-week","query":"hiring"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"cursor":{"description":"Pagination cursor from a previous response.","type":"string"},"datePosted":{"description":"Filter by recency. One of last-hour, last-day, last-week, last-month, last-year.","enum":["last-hour","last-day","last-week","last-month","last-year"],"type":"string"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"query":{"description":"The post search query.","type":"string"},"requireCursor":{"deprecated":true,"description":"Deprecated. Every source for this search returns a nextCursor, so this changes nothing about the price or which source serves you; it stays accepted so callers that already send it keep working.","type":"boolean"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true}},"required":["query"],"title":"LinkedIn post search input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"description":"The search result, or null when not found.","oneOf":[{"type":"null"},{"additionalProperties":false,"properties":{"nextCursor":{"description":"Opaque cursor for the next page of posts, or null when this lane has no more. Pass it back as cursor to continue.","type":["string","null"]},"posts":{"description":"Posts matching the search query. Populated whenever the provider has data for the entity.","items":{"properties":{"authorName":{"description":"Display name of the post's author. Empty when the upstream omits it.","type":"string"},"authorUrl":{"description":"Canonical profile URL of the post's author, with tracking query params stripped. Empty when the upstream omits it.","type":"string"},"avatarUrl":{"description":"URL of the post author's profile avatar image.","type":"string"},"commentCount":{"description":"Total number of comments on the post.","type":"integer"},"createdUtc":{"description":"UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds. Populated whenever the provider has data for the entity.","type":"number","x-anyapi-must-populate":true},"id":{"description":"The post's LinkedIn activity ID, as a string. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"reactionCount":{"description":"Total number of reactions on the post.","type":"integer"},"text":{"description":"Text content of the post. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"url":{"description":"Canonical URL of the post. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true}},"required":["id","url","text","createdUtc"],"type":"object"},"type":"array","x-anyapi-must-populate":true}},"required":["posts"],"type":"object"}]},"found":{"description":"Whether matching posts were found.","type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"LinkedIn post search output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"LinkedIn Post Search","tags":["linkedin"],"x-mint":{"href":"/api-reference/linkedin/search-posts"},"x-payment-info":{"price":{"amount":"0.001200","currency":"USD","mode":"fixed"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"amount":"0.001200","currency":"USD","minimumUsd":"0.001000","mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"amount":"0.001200","currency":"USD","minimumUsd":null,"mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/linkedin.search_posts_full":{"post":{"description":"Search public LinkedIn posts with rich author, engagement, attachment, and poll details.\n\n**Price:** \\$5.00 per 1,000 requests (flat per request - same cost regardless of results returned).\n\n**Routing:** 3 independent lanes are available in execution order. A failed attempt uses the next lane only when the request's payment authorizes that lane's price; the normalized schema stays the same.\n\n**Catalog:** [LinkedIn Post Search (full) pricing and uptime](https://getanyapi.com/api/linkedin/search-posts-full) - live USD price, lane routing, and measured 30-day uptime. [Every Linkedin endpoint](https://getanyapi.com/api/linkedin).","operationId":"linkedin_search_posts_full","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"datePosted":"last-week","limit":10,"query":"artificial intelligence","sort":"relevance"},"schema":{"additionalProperties":false,"example":{"datePosted":"last-week","limit":10,"query":"artificial intelligence","sort":"relevance"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"authorCompanyNames":{"description":"Only return posts by people associated with these company names.","items":{"minLength":1,"type":"string"},"maxItems":20,"type":"array"},"authorIndustryIds":{"description":"Only return posts by authors associated with these LinkedIn industry IDs.","items":{"minLength":1,"type":"string"},"maxItems":20,"type":"array"},"authorKeywords":{"description":"Only return posts whose author profile headline or job title contains at least one of these keywords.","minLength":1,"type":"string"},"authorUrls":{"description":"Only return posts authored by these LinkedIn profile or company URLs.","items":{"format":"uri","type":"string"},"maxItems":10,"type":"array"},"contentType":{"description":"Only return posts carrying this content type.","enum":["all","videos","images","jobs","live-videos","documents","collaborative-articles"],"type":"string"},"datePosted":{"default":"last-day","description":"Only return posts published within this relative time window. Last-hour and windows beyond one month route to the provider that supports them.","enum":["last-hour","last-day","last-week","last-month","last-three-months","last-six-months","last-year"],"type":"string"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"limit":{"default":10,"description":"Maximum number of posts to return (1-100, default 10). The upper bound is one LinkedIn search page.","maximum":100,"minimum":1,"type":"integer"},"mentioningMemberUrls":{"description":"Only return posts mentioning these LinkedIn member profile URLs.","items":{"format":"uri","type":"string"},"maxItems":10,"type":"array"},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"query":{"description":"LinkedIn post search query, including quoted terms or Boolean operators accepted by LinkedIn search.","minLength":1,"type":"string"},"sort":{"default":"relevance","description":"Order results by search relevance or publication date.","enum":["relevance","date"],"type":"string"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true}},"required":["query"],"title":"LinkedIn Post Search (full) input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"description":"The matching LinkedIn posts, or null when no result was found.","oneOf":[{"type":"null"},{"additionalProperties":false,"properties":{"posts":{"description":"LinkedIn posts matching the search query. Populated whenever the provider has data for the entity.","items":{"properties":{"attachmentDescription":{"description":"Short description of the attached content, as LinkedIn shows it on the preview card. Best effort on article attachments: depending on the search it may be absent, so treat it as optional. To read an article's content reliably, pass attachmentUrl to the linkedin.article endpoint.","type":"string"},"attachmentImage":{"description":"Image URL associated with the attachment.","format":"uri","type":"string"},"attachmentSubtitle":{"description":"Subtitle of the attached structured content.","type":"string"},"attachmentTitle":{"description":"Title of the attached article, job, or other structured content.","type":"string"},"attachmentType":{"description":"Kind of structured content attached to the post, such as article, job, poll, video, or document.","type":"string"},"attachmentUrl":{"description":"Canonical destination URL of the attachment. When attachmentType is article, pass this URL to the linkedin.article endpoint to read the article's full body text.","format":"uri","type":"string"},"author":{"description":"Public author identity attached to the post. Populated whenever the provider has data for the entity.","properties":{"headline":{"description":"Public headline or company follower summary for the author.","type":"string"},"id":{"description":"LinkedIn identifier for the author.","type":"string"},"image":{"description":"Public profile or company image URL for the author.","format":"uri","type":"string"},"name":{"description":"Display name of the author.","type":"string"},"profileUrl":{"description":"Canonical LinkedIn profile or company URL for the author.","format":"uri","type":"string"},"publicIdentifier":{"description":"LinkedIn public identifier (vanity slug) for the author, for example \"williamhgates\". Stable across lanes, unlike the raw id.","type":"string"},"type":{"description":"Kind of LinkedIn entity that authored the post, derived from the author URL.","enum":["person","company","showcase"],"type":"string"}},"type":"object","x-anyapi-must-populate":true},"createdUtc":{"description":"UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds. Populated whenever the provider has data for the entity.","type":"number","x-anyapi-must-populate":true},"engagement":{"description":"Public engagement totals attached to the post. Populated whenever the provider has data for the entity.","properties":{"breakdown":{"description":"Reaction counts grouped by LinkedIn reaction type.","items":{"properties":{"count":{"description":"Number of reactions of this type.","minimum":0,"type":"integer"},"type":{"description":"LinkedIn reaction type.","type":"string"}},"required":["type","count"],"type":"object"},"type":"array"},"comments":{"description":"Total comment count.","minimum":0,"type":"integer"},"reactions":{"description":"Total reaction count.","minimum":0,"type":"integer"},"reposts":{"description":"Total repost or share count.","minimum":0,"type":"integer"}},"type":"object","x-anyapi-must-populate":true},"id":{"description":"Stable LinkedIn activity identifier for the post. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"pollClosed":{"description":"Whether the attached poll is closed.","type":"boolean"},"pollOptions":{"description":"Options and public vote counts for an attached poll.","items":{"properties":{"text":{"description":"Poll option text.","type":"string"},"votes":{"description":"Votes recorded for this option.","minimum":0,"type":"integer"}},"required":["text","votes"],"type":"object"},"type":"array"},"pollQuestion":{"description":"Question asked by an attached LinkedIn poll.","type":"string"},"pollTotalVotes":{"description":"Total votes recorded by the attached poll.","minimum":0,"type":"integer"},"text":{"description":"Text content of the post. Empty string when the post carries no commentary of its own, such as a bare article share or an image-only post. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"url":{"description":"Canonical URL of the LinkedIn post. Populated whenever the provider has data for the entity.","format":"uri","type":"string","x-anyapi-must-populate":true}},"required":["id","url","text","createdUtc","author","engagement"],"type":"object"},"type":"array","x-anyapi-must-populate":true}},"required":["posts"],"type":"object"}]},"found":{"description":"Whether matching LinkedIn posts were found.","type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"LinkedIn Post Search (full) output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"LinkedIn Post Search (full)","tags":["linkedin"],"x-mint":{"href":"/api-reference/linkedin/search-posts-full"},"x-payment-info":{"price":{"amount":"0.005000","currency":"USD","mode":"fixed"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"amount":"0.005000","currency":"USD","minimumUsd":"0.001000","mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"amount":"0.005000","currency":"USD","minimumUsd":null,"mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/linkedin.search_profiles":{"post":{"description":"Search LinkedIn profiles by keyword with optional location and job-title filters. Each match returns a full profile record: name, headline, location, current position, work experience, education, and skills, plus the profile URL, handle, and id. For a cheaper name/headline/URL-only search use linkedin.search_profiles_thin; add emails with linkedin.search_profiles_email.\n\n**Price:** billed per result - \\$88.00 per 1,000 requests base + \\$4.40 per 1,000 results, capped at \\$198.00 per 1,000 requests.\n\n**Routing:** one lane serves this API today, so a failed attempt has nowhere to fail over to. Payment outcome follows the selected rail's settlement policy.\n\n**Catalog:** [LinkedIn Profile Search pricing and uptime](https://getanyapi.com/api/linkedin/search-profiles) - live USD price, lane routing, and measured 30-day uptime. [Every Linkedin endpoint](https://getanyapi.com/api/linkedin).","operationId":"linkedin_search_profiles","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"currentCompanies":["Google"],"limit":3,"query":"engineer"},"schema":{"additionalProperties":false,"example":{"currentCompanies":["Google"],"limit":3,"query":"engineer"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"companyHeadcount":{"description":"Filter by current company size (employee count). Codes: A=Self-Employed, B=1-10, C=11-50, D=51-200, E=201-500, F=501-1,000, G=1,001-5,000, H=5,001-10,000, I=10,001+.","items":{"enum":["A","B","C","D","E","F","G","H","I"],"type":"string"},"type":"array"},"companyHeadquarterLocations":{"description":"Filter by the location of the person's current company headquarters, by place name (e.g. ['United States']).","items":{"type":"string"},"type":"array"},"currentCompanies":{"description":"Filter to people who currently work at any of these companies, by name (e.g. ['Google','Meta']). Multiple names widen the match (OR).","items":{"type":"string"},"type":"array"},"excludeCompanyHeadquarterLocations":{"description":"Exclude people whose current company is headquartered in any of these locations.","items":{"type":"string"},"type":"array"},"excludeCurrentCompanies":{"description":"Exclude people who currently work at any of these companies, by name.","items":{"type":"string"},"type":"array"},"excludeCurrentJobTitles":{"description":"Exclude people whose current job title matches any of these.","items":{"type":"string"},"type":"array"},"excludeFunctionIds":{"description":"Exclude these job functions (same codes as functionIds).","items":{"enum":["1","2","3","4","5","6","7","8","9","10","11","12","13","14","15","16","17","18","19","20","21","22","23","24","25","26"],"type":"string"},"type":"array"},"excludeLocations":{"description":"Exclude people in any of these locations, by place name.","items":{"type":"string"},"type":"array"},"excludePastCompanies":{"description":"Exclude people who previously worked at any of these companies, by name.","items":{"type":"string"},"type":"array"},"excludePastJobTitles":{"description":"Exclude people who held any of these past job titles.","items":{"type":"string"},"type":"array"},"excludeSchools":{"description":"Exclude people who attended any of these schools, by name.","items":{"type":"string"},"type":"array"},"excludeSeniorityLevelIds":{"description":"Exclude these seniority levels (same codes as seniorityLevelIds).","items":{"enum":["100","110","120","130","200","210","220","300","310","320"],"type":"string"},"type":"array"},"firstNames":{"description":"Filter to people whose first name matches any of these.","items":{"type":"string"},"type":"array"},"functionIds":{"description":"Filter by job function. Codes: 1=Accounting, 2=Administrative, 3=Arts and Design, 4=Business Development, 5=Community and Social Services, 6=Consulting, 7=Education, 8=Engineering, 9=Entrepreneurship, 10=Finance, 11=Healthcare Services, 12=Human Resources, 13=Information Technology, 14=Legal, 15=Marketing, 16=Media and Communication, 17=Military and Protective Services, 18=Operations, 19=Product Management, 20=Program and Project Management, 21=Purchasing, 22=Quality Assurance, 23=Real Estate, 24=Research, 25=Sales, 26=Customer Success and Support.","items":{"enum":["1","2","3","4","5","6","7","8","9","10","11","12","13","14","15","16","17","18","19","20","21","22","23","24","25","26"],"type":"string"},"type":"array"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"jobTitle":{"description":"Optional current job title filter (e.g. 'Software Engineer').","type":"string"},"lastNames":{"description":"Filter to people whose last name matches any of these.","items":{"type":"string"},"type":"array"},"limit":{"description":"Maximum number of full profiles to return (1-25, default 10). You are billed per profile returned, so a lower limit costs less.","maximum":25,"minimum":1,"type":"integer"},"location":{"description":"Optional location filter (e.g. 'San Francisco').","type":"string"},"pastCompanies":{"description":"Filter to people who previously worked at any of these companies, by name.","items":{"type":"string"},"type":"array"},"pastJobTitles":{"description":"Filter by a past job title the person held (e.g. ['Product Manager']).","items":{"type":"string"},"type":"array"},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"profileLanguages":{"description":"Filter by the profile's primary language.","items":{"enum":["Arabic","English","Spanish","Portuguese","Chinese","French","Italian","Russian","German","Dutch","Turkish","Tagalog","Polish","Korean","Japanese","Malay","Norwegian","Danish","Romanian","Swedish","Bahasa Indonesia","Czech"],"type":"string"},"type":"array"},"query":{"description":"Search query for LinkedIn profiles: a role, name, or keywords (e.g. 'Marketing Manager').","type":"string"},"recentlyChangedJobs":{"description":"When true, only return people who recently changed jobs (a strong sales/recruiting signal).","type":"boolean"},"recentlyPostedOnLinkedIn":{"description":"When true, only return people who recently posted on LinkedIn (an activity signal).","type":"boolean"},"schools":{"description":"Filter to people who attended any of these schools, by name.","items":{"type":"string"},"type":"array"},"seniorityLevelIds":{"description":"Filter by seniority level. Codes: 100=In Training, 110=Entry Level, 120=Senior, 130=Strategic, 200=Entry Level Manager, 210=Experienced Manager, 220=Director, 300=Vice President, 310=CXO, 320=Owner/Partner.","items":{"enum":["100","110","120","130","200","210","220","300","310","320"],"type":"string"},"type":"array"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"yearsAtCurrentCompanyIds":{"description":"Filter by tenure at the current company. Codes: 1=Less than 1 year, 2=1 to 2 years, 3=3 to 5 years, 4=6 to 10 years, 5=More than 10 years.","items":{"enum":["1","2","3","4","5"],"type":"string"},"type":"array"},"yearsOfExperienceIds":{"description":"Filter by total years of experience. Codes: 1=Less than 1 year, 2=1 to 2 years, 3=3 to 5 years, 4=6 to 10 years, 5=More than 10 years.","items":{"enum":["1","2","3","4","5"],"type":"string"},"type":"array"}},"required":["query"],"title":"LinkedIn profile search input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"description":"The results wrapper, or null when nothing was found.","oneOf":[{"type":"null"},{"additionalProperties":false,"properties":{"items":{"description":"Matched profile records. Populated whenever the provider has data for the entity.","items":{"description":"A full LinkedIn profile: name, headline, location, about, current position, work experience, education, and skills, plus the profile URL, handle, and id.","properties":{"about":{"description":"Profile about / summary text. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"city":{"description":"City of the member.","type":"string"},"connectionsCount":{"description":"Number of connections on the profile.","type":"integer"},"country":{"description":"Country of the member.","type":"string"},"countryCode":{"description":"Two-letter country code of the member.","type":"string"},"coverImage":{"description":"Profile cover (banner) image URL. The query string is a signed token, so keep the URL intact.","type":"string"},"creator":{"description":"Whether the member is in LinkedIn creator mode.","type":"boolean"},"currentPosition":{"description":"Current role(s). Each entry is an open object with the position title, company, dates, and location; shape can vary by profile.","items":{"type":"object"},"type":"array"},"education":{"description":"Education history. Each entry is an open object with school, degree, and field of study; shape can vary by profile.","items":{"type":"object"},"type":"array"},"experience":{"description":"Full work history. Each entry is an open object with the position title, company, dates, and location; shape can vary by profile. Populated whenever the provider has data for the entity.","items":{"type":"object"},"type":"array","x-anyapi-must-populate":true},"firstName":{"description":"Member's first name. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"followerCount":{"description":"Number of followers of the profile.","type":"integer"},"handle":{"description":"Public profile identifier (the vanity slug in the URL). Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"headline":{"description":"Profile headline (the tagline under the name). Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"hiring":{"description":"Whether the member shows the Hiring badge.","type":"boolean"},"id":{"description":"LinkedIn member URN id for the profile.","type":"string"},"image":{"description":"Profile picture URL. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"influencer":{"description":"Whether LinkedIn marks the member as an influencer.","type":"boolean"},"lastName":{"description":"Member's last name. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"location":{"description":"Member's location as a single string (city, region, country). Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"openToWork":{"description":"Whether the member has the Open to Work flag set.","type":"boolean"},"premium":{"description":"Whether the member has a LinkedIn Premium subscription.","type":"boolean"},"skills":{"description":"Listed skills, as free-form strings when present.","items":{},"type":"array"},"state":{"description":"State or region of the member.","type":"string"},"url":{"description":"Canonical LinkedIn profile URL. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"verified":{"description":"Whether LinkedIn has verified the member's identity.","type":"boolean"}},"required":["id","url"],"type":"object"},"type":"array","x-anyapi-must-populate":true}},"required":["items"],"type":"object"}]},"found":{"description":"True when at least one profile was returned.","type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"LinkedIn profile search output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"LinkedIn Profile Search","tags":["linkedin"],"x-mint":{"href":"/api-reference/linkedin/search-profiles"},"x-payment-info":{"price":{"currency":"USD","max":"0.198000","min":"0.088000","mode":"dynamic"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"currency":"USD","max":"0.198000","min":"0.088000","minimumUsd":"0.001000","mode":"dynamic","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"currency":"USD","max":"0.198000","min":"0.088000","minimumUsd":null,"mode":"dynamic","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/linkedin.search_profiles_email":{"post":{"description":"People search returning a full profile AND a verified work email for each hit. Search LinkedIn profiles by keyword with optional location and job-title filters; each match returns the full profile record (name, headline, location, current position, work experience, education, and skills, plus the profile URL, handle, and id) together with an emails array carrying the discovered work email and its deliverability. Email discovery is best effort and needs the profile to expose a resolvable company domain, so on a broad search many matches return an empty emails array while still billing the email rate. If you already have names and company domains, email.find, email_finding.icypeas, and email_finding.dropleads resolve addresses directly for less, and linkedin.email enriches a single known profile URL. For a full profile without email use linkedin.search_profiles; for a cheaper name/headline/URL-only search use linkedin.search_profiles_thin.\n\n**Price:** billed per result - \\$88.00 per 1,000 requests base + \\$9.90 per 1,000 results, capped at \\$336.00 per 1,000 requests.\n\n**Routing:** one lane serves this API today, so a failed attempt has nowhere to fail over to. Payment outcome follows the selected rail's settlement policy.\n\n**Catalog:** [LinkedIn Profile Search + Email pricing and uptime](https://getanyapi.com/api/linkedin/search-profiles-email) - live USD price, lane routing, and measured 30-day uptime. [Every Linkedin endpoint](https://getanyapi.com/api/linkedin).","operationId":"linkedin_search_profiles_email","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"companyHeadcount":["B"],"limit":5,"query":"founder"},"schema":{"additionalProperties":false,"example":{"companyHeadcount":["B"],"limit":5,"query":"founder"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"companyHeadcount":{"description":"Filter by current company size (employee count). Codes: A=Self-Employed, B=1-10, C=11-50, D=51-200, E=201-500, F=501-1,000, G=1,001-5,000, H=5,001-10,000, I=10,001+.","items":{"enum":["A","B","C","D","E","F","G","H","I"],"type":"string"},"type":"array"},"companyHeadquarterLocations":{"description":"Filter by the location of the person's current company headquarters, by place name (e.g. ['United States']).","items":{"type":"string"},"type":"array"},"currentCompanies":{"description":"Filter to people who currently work at any of these companies, by name (e.g. ['Google','Meta']). Multiple names widen the match (OR).","items":{"type":"string"},"type":"array"},"excludeCompanyHeadquarterLocations":{"description":"Exclude people whose current company is headquartered in any of these locations.","items":{"type":"string"},"type":"array"},"excludeCurrentCompanies":{"description":"Exclude people who currently work at any of these companies, by name.","items":{"type":"string"},"type":"array"},"excludeCurrentJobTitles":{"description":"Exclude people whose current job title matches any of these.","items":{"type":"string"},"type":"array"},"excludeFunctionIds":{"description":"Exclude these job functions (same codes as functionIds).","items":{"enum":["1","2","3","4","5","6","7","8","9","10","11","12","13","14","15","16","17","18","19","20","21","22","23","24","25","26"],"type":"string"},"type":"array"},"excludeLocations":{"description":"Exclude people in any of these locations, by place name.","items":{"type":"string"},"type":"array"},"excludePastCompanies":{"description":"Exclude people who previously worked at any of these companies, by name.","items":{"type":"string"},"type":"array"},"excludePastJobTitles":{"description":"Exclude people who held any of these past job titles.","items":{"type":"string"},"type":"array"},"excludeSchools":{"description":"Exclude people who attended any of these schools, by name.","items":{"type":"string"},"type":"array"},"excludeSeniorityLevelIds":{"description":"Exclude these seniority levels (same codes as seniorityLevelIds).","items":{"enum":["100","110","120","130","200","210","220","300","310","320"],"type":"string"},"type":"array"},"firstNames":{"description":"Filter to people whose first name matches any of these.","items":{"type":"string"},"type":"array"},"functionIds":{"description":"Filter by job function. Codes: 1=Accounting, 2=Administrative, 3=Arts and Design, 4=Business Development, 5=Community and Social Services, 6=Consulting, 7=Education, 8=Engineering, 9=Entrepreneurship, 10=Finance, 11=Healthcare Services, 12=Human Resources, 13=Information Technology, 14=Legal, 15=Marketing, 16=Media and Communication, 17=Military and Protective Services, 18=Operations, 19=Product Management, 20=Program and Project Management, 21=Purchasing, 22=Quality Assurance, 23=Real Estate, 24=Research, 25=Sales, 26=Customer Success and Support.","items":{"enum":["1","2","3","4","5","6","7","8","9","10","11","12","13","14","15","16","17","18","19","20","21","22","23","24","25","26"],"type":"string"},"type":"array"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"jobTitle":{"description":"Optional current job title filter (e.g. 'Software Engineer').","type":"string"},"lastNames":{"description":"Filter to people whose last name matches any of these.","items":{"type":"string"},"type":"array"},"limit":{"description":"Maximum number of full profiles (with email) to return (1-25, default 10). You are billed per profile returned, so a lower limit costs less.","maximum":25,"minimum":1,"type":"integer"},"location":{"description":"Optional location filter (e.g. 'San Francisco').","type":"string"},"pastCompanies":{"description":"Filter to people who previously worked at any of these companies, by name.","items":{"type":"string"},"type":"array"},"pastJobTitles":{"description":"Filter by a past job title the person held (e.g. ['Product Manager']).","items":{"type":"string"},"type":"array"},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"profileLanguages":{"description":"Filter by the profile's primary language.","items":{"enum":["Arabic","English","Spanish","Portuguese","Chinese","French","Italian","Russian","German","Dutch","Turkish","Tagalog","Polish","Korean","Japanese","Malay","Norwegian","Danish","Romanian","Swedish","Bahasa Indonesia","Czech"],"type":"string"},"type":"array"},"query":{"description":"Search query for LinkedIn profiles: a role, name, or keywords (e.g. 'Marketing Manager').","type":"string"},"recentlyChangedJobs":{"description":"When true, only return people who recently changed jobs (a strong sales/recruiting signal).","type":"boolean"},"recentlyPostedOnLinkedIn":{"description":"When true, only return people who recently posted on LinkedIn (an activity signal).","type":"boolean"},"schools":{"description":"Filter to people who attended any of these schools, by name.","items":{"type":"string"},"type":"array"},"seniorityLevelIds":{"description":"Filter by seniority level. Codes: 100=In Training, 110=Entry Level, 120=Senior, 130=Strategic, 200=Entry Level Manager, 210=Experienced Manager, 220=Director, 300=Vice President, 310=CXO, 320=Owner/Partner.","items":{"enum":["100","110","120","130","200","210","220","300","310","320"],"type":"string"},"type":"array"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"yearsAtCurrentCompanyIds":{"description":"Filter by tenure at the current company. Codes: 1=Less than 1 year, 2=1 to 2 years, 3=3 to 5 years, 4=6 to 10 years, 5=More than 10 years.","items":{"enum":["1","2","3","4","5"],"type":"string"},"type":"array"},"yearsOfExperienceIds":{"description":"Filter by total years of experience. Codes: 1=Less than 1 year, 2=1 to 2 years, 3=3 to 5 years, 4=6 to 10 years, 5=More than 10 years.","items":{"enum":["1","2","3","4","5"],"type":"string"},"type":"array"}},"required":["query"],"title":"LinkedIn profile search + email input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"description":"The results wrapper, or null when nothing was found.","oneOf":[{"type":"null"},{"additionalProperties":false,"properties":{"items":{"description":"Matched profile records, each with a discovered work email. Populated whenever the provider has data for the entity.","items":{"description":"A full LinkedIn profile: name, headline, location, about, current position, work experience, education, and skills, plus the profile URL, handle, id, and a discovered work email with deliverability.","properties":{"about":{"description":"Profile about / summary text. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"city":{"description":"City of the member.","type":"string"},"connectionsCount":{"description":"Number of connections on the profile.","type":"integer"},"country":{"description":"Country of the member.","type":"string"},"countryCode":{"description":"Two-letter country code of the member.","type":"string"},"coverImage":{"description":"Profile cover (banner) image URL. The query string is a signed token, so keep the URL intact.","type":"string"},"creator":{"description":"Whether the member is in LinkedIn creator mode.","type":"boolean"},"currentPosition":{"description":"Current role(s). Each entry is an open object with the position title, company, dates, and location; shape can vary by profile.","items":{"type":"object"},"type":"array"},"education":{"description":"Education history. Each entry is an open object with school, degree, and field of study; shape can vary by profile.","items":{"type":"object"},"type":"array"},"emails":{"description":"Discovered work email(s) for the member. Each entry is an open object with the email address plus deliverability signals (deliverable, disposable, catchAllDomain, validEmailServer, qualityScore, status); may be empty when no email could be verified. Populated whenever the provider has data for the entity.","items":{"type":"object"},"type":"array","x-anyapi-must-populate":true},"experience":{"description":"Full work history. Each entry is an open object with the position title, company, dates, and location; shape can vary by profile. Populated whenever the provider has data for the entity.","items":{"type":"object"},"type":"array","x-anyapi-must-populate":true},"firstName":{"description":"Member's first name. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"followerCount":{"description":"Number of followers of the profile.","type":"integer"},"handle":{"description":"Public profile identifier (the vanity slug in the URL). Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"headline":{"description":"Profile headline (the tagline under the name). Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"hiring":{"description":"Whether the member shows the Hiring badge.","type":"boolean"},"id":{"description":"LinkedIn member URN id for the profile.","type":"string"},"image":{"description":"Profile picture URL. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"influencer":{"description":"Whether LinkedIn marks the member as an influencer.","type":"boolean"},"lastName":{"description":"Member's last name. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"location":{"description":"Member's location as a single string (city, region, country). Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"openToWork":{"description":"Whether the member has the Open to Work flag set.","type":"boolean"},"premium":{"description":"Whether the member has a LinkedIn Premium subscription.","type":"boolean"},"skills":{"description":"Listed skills, as free-form strings when present.","items":{},"type":"array"},"state":{"description":"State or region of the member.","type":"string"},"url":{"description":"Canonical LinkedIn profile URL. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"verified":{"description":"Whether LinkedIn has verified the member's identity.","type":"boolean"}},"required":["id","url"],"type":"object"},"type":"array","x-anyapi-must-populate":true}},"required":["items"],"type":"object"}]},"found":{"description":"True when at least one profile was returned.","type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"LinkedIn profile search + email output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"LinkedIn Profile Search + Email","tags":["linkedin"],"x-mint":{"href":"/api-reference/linkedin/search-profiles-email"},"x-payment-info":{"price":{"currency":"USD","max":"0.336000","min":"0.088000","mode":"dynamic"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"currency":"USD","max":"0.336000","min":"0.088000","minimumUsd":"0.001000","mode":"dynamic","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"currency":"USD","max":"0.336000","min":"0.088000","minimumUsd":null,"mode":"dynamic","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/linkedin.search_profiles_thin":{"post":{"description":"Cheap people search: name/handle, headline, VANITY profile URL, location. No full profile or email - for full profiles per hit use linkedin.search_profiles, add emails with linkedin.search_profiles_email.\n\n**Price:** \\$36.00 per 1,000 requests (flat per request - same cost regardless of results returned).\n\n**Routing:** one lane serves this API today, so a failed attempt has nowhere to fail over to. Payment outcome follows the selected rail's settlement policy.\n\n**Catalog:** [LinkedIn Profile Search (basic) pricing and uptime](https://getanyapi.com/api/linkedin/search-profiles-thin) - live USD price, lane routing, and measured 30-day uptime. [Every Linkedin endpoint](https://getanyapi.com/api/linkedin).","operationId":"linkedin_search_profiles_thin","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"query":"recruiter"},"schema":{"additionalProperties":false,"example":{"query":"recruiter"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"currentCompanyId":{"description":"Filter by current employer, using a numeric LinkedIn company id. Comma-separate for several.","type":"string"},"cursor":{"description":"Opaque pagination cursor from a previous response's nextCursor. Omit for the first page; a page holds 10 profiles.","type":"string"},"firstName":{"description":"Filter by first name (e.g. Jane).","type":"string"},"followerOfUrn":{"description":"Return only people who follow this member, given the member's LinkedIn URN.","type":"string"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"industryId":{"description":"Filter by industry, using a LinkedIn industry id.","type":"string"},"lastName":{"description":"Filter by last name (e.g. Okafor).","type":"string"},"locationId":{"description":"Filter by location, using a LinkedIn geocode id.","type":"string"},"pastCompanyId":{"description":"Filter by a previous employer, using a numeric LinkedIn company id.","type":"string"},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"profileLanguage":{"description":"Filter by the language the profile is written in (ISO 2-letter code, e.g. en).","type":"string"},"query":{"description":"Search query for LinkedIn profiles - a role, name, or keywords (e.g. 'Marketing Manager').","type":"string"},"schoolId":{"description":"Filter by school, using a LinkedIn school id.","type":"string"},"serviceCategoryId":{"description":"Filter by service category, using a numeric service-category id.","type":"string"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"title":{"description":"Filter by job title or headline (e.g. Head of Talent).","type":"string"}},"required":["query"],"title":"LinkedIn basic profile search input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"description":"The results wrapper, or null when nothing was found.","oneOf":[{"type":"null"},{"additionalProperties":false,"properties":{"items":{"description":"Matched profile records (basic fields only). Populated whenever the provider has data for the entity.","items":{"description":"A basic LinkedIn profile record: name, handle, headline, vanity profile URL, and location.","properties":{"handle":{"description":"Public profile identifier (the vanity slug in the URL). Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"headline":{"description":"Profile headline (the tagline under the name). Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"id":{"description":"LinkedIn member URN id for the profile.","type":"string"},"image":{"description":"Profile picture URL.","type":"string"},"location":{"description":"Member's location as a single string (city, region, country).","type":"string"},"name":{"description":"Member's display name.","type":"string"},"premium":{"description":"Whether the member has LinkedIn Premium.","type":"boolean"},"url":{"description":"Canonical LinkedIn vanity profile URL. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"verified":{"description":"Whether LinkedIn has verified the member's identity.","type":"boolean"}},"required":["url"],"type":"object"},"type":"array","x-anyapi-must-populate":true},"nextCursor":{"description":"Opaque cursor for the next page of profiles, or null/empty when there are no more. Pass it back as cursor to continue.","type":["string","null"]}},"required":["items"],"type":"object"}]},"found":{"description":"True when at least one profile was returned.","type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"LinkedIn basic profile search output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"LinkedIn Profile Search (basic)","tags":["linkedin"],"x-mint":{"href":"/api-reference/linkedin/search-profiles-thin"},"x-payment-info":{"price":{"amount":"0.036000","currency":"USD","mode":"fixed"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"amount":"0.036000","currency":"USD","minimumUsd":"0.001000","mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"amount":"0.036000","currency":"USD","minimumUsd":null,"mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/maps.contacts":{"post":{"description":"Search Google Maps for businesses and enrich each result with contact details (emails, phones, and social profiles from their websites), up to 20 records per request.\n\n**Price:** billed per result - \\$0.06 per 1,000 requests base + \\$4.95 per 1,000 results, capped at \\$99.10 per 1,000 requests.\n\n**Routing:** one lane serves this API today, so a failed attempt has nowhere to fail over to. Payment outcome follows the selected rail's settlement policy.\n\n**Catalog:** [Google Maps Contacts pricing and uptime](https://getanyapi.com/api/maps/contacts) - live USD price, lane routing, and measured 30-day uptime. [Every Maps endpoint](https://getanyapi.com/api/maps).","operationId":"maps_contacts","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"limit":3,"location":"Austin, TX","placeMinimumStars":"four","query":"coffee shop","website":"withWebsite"},"schema":{"additionalProperties":false,"example":{"limit":3,"location":"Austin, TX","placeMinimumStars":"four","query":"coffee shop","website":"withWebsite"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"categoryFilterWords":{"description":"Optional list of Google Maps place-category names to keep; results are limited to places whose category matches one of these. Use lowercase category names as shown on Google Maps (e.g. [\"dentist\", \"orthodontist\"]). Omit to include all categories.","items":{"type":"string"},"type":"array"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"language":{"default":"en","description":"Two-letter language code for the results (e.g. en).","type":"string"},"limit":{"description":"Maximum number of results to return (1-20, default 20). You are billed per result returned, so a lower limit costs less.","maximum":20,"minimum":1,"type":"integer"},"location":{"description":"Free-text location to search in, ideally city plus country (e.g. Denver, USA).","type":"string"},"placeMinimumStars":{"description":"Only return places with at least this average rating: two (2+), twoAndHalf (2.5+), three (3+), threeAndHalf (3.5+), four (4+), or fourAndHalf (4.5+). Places with no reviews are excluded. Omit for no rating filter.","enum":["two","twoAndHalf","three","threeAndHalf","four","fourAndHalf"],"type":"string"},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"query":{"description":"What you would type in the Google Maps search bar (e.g. dentist).","type":"string"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"website":{"description":"Filter places by whether they list a website: allPlaces (default), withWebsite (only places that have a website), or withoutWebsite (only places without one). Contact enrichment pulls emails and social profiles from a place's website, so withWebsite targets leads that can be enriched.","enum":["allPlaces","withWebsite","withoutWebsite"],"type":"string"}},"required":["query","location"],"title":"Google Maps contacts input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"description":"The result wrapper, or null when nothing matched.","oneOf":[{"type":"null"},{"additionalProperties":false,"properties":{"items":{"description":"Matching business records, each enriched with contact details scraped from the business website. Populated whenever the provider has data for the entity.","items":{"properties":{"address":{"description":"Full formatted street address.","type":"string"},"categories":{"description":"Every Google Maps category listed for the business.","items":{"type":"string"},"type":"array"},"category":{"description":"Primary business category.","type":"string"},"cid":{"description":"Google customer/place id (cid).","type":"string"},"city":{"description":"City the business is in.","type":"string"},"countryCode":{"description":"Two-letter country code.","type":"string"},"domain":{"description":"Registrable domain of the business website.","type":"string"},"emails":{"description":"Email addresses scraped from the business website.","items":{"type":"string"},"type":"array"},"facebooks":{"description":"Facebook profile URLs found on the business website.","items":{"type":"string"},"type":"array"},"image":{"description":"Primary business photo URL.","type":"string"},"instagrams":{"description":"Instagram profile URLs found on the business website.","items":{"type":"string"},"type":"array"},"language":{"description":"Two-letter language code of the listing Google served.","type":"string"},"latitude":{"description":"Latitude of the business in decimal degrees.","type":"number"},"linkedIns":{"description":"LinkedIn profile URLs found on the business website.","items":{"type":"string"},"type":"array"},"longitude":{"description":"Longitude of the business in decimal degrees.","type":"number"},"name":{"description":"Business name. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"neighborhood":{"description":"Neighborhood the business is in.","type":"string"},"phone":{"description":"Business phone number in E.164 format, when listed on Google Maps.","type":"string"},"phones":{"description":"Additional phone numbers scraped from the business website.","items":{"type":"string"},"type":"array"},"placeId":{"description":"Google Maps place id (stable identifier for the business). Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"postalCode":{"description":"Postal code of the business.","type":"string"},"rank":{"description":"One-based position of the business in the Google Maps result order.","type":"integer"},"rating":{"description":"Average star rating out of 5.","type":"number"},"reviewCount":{"description":"Total number of reviews.","type":"number"},"state":{"description":"State or region the business is in.","type":"string"},"street":{"description":"Street portion of the address.","type":"string"},"tiktoks":{"description":"TikTok profile URLs found on the business website.","items":{"type":"string"},"type":"array"},"twitters":{"description":"X/Twitter profile URLs found on the business website.","items":{"type":"string"},"type":"array"},"url":{"description":"Canonical Google Maps URL for the business. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"website":{"description":"The business website URL, when listed.","type":"string"},"youtubes":{"description":"YouTube channel URLs found on the business website.","items":{"type":"string"},"type":"array"}},"required":["placeId","name","url"],"type":"object"},"type":"array","x-anyapi-must-populate":true}},"required":["items"],"type":"object"}]},"found":{"description":"True when the search returned at least one matching business.","type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"Google Maps contacts output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"Google Maps Contacts","tags":["maps"],"x-mint":{"href":"/api-reference/maps/contacts"},"x-payment-info":{"price":{"currency":"USD","max":"0.099100","min":"0.000060","mode":"dynamic"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"currency":"USD","max":"0.099100","min":"0.001000","minimumUsd":"0.001000","mode":"dynamic","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"currency":"USD","max":"0.099100","min":"0.000060","minimumUsd":null,"mode":"dynamic","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/maps.place":{"post":{"description":"Look up a place on Google Maps by name or search query (optionally scoped to a location) and get the best-matching place with available address, contact, rating, and coordinate details as normalized JSON.\n\n**Price:** \\$1.75 per 1,000 requests (flat per request - same cost regardless of results returned).\n\n**Routing:** 3 independent lanes are available in execution order. A failed attempt uses the next lane only when the request's payment authorizes that lane's price; the normalized schema stays the same.\n\n**Catalog:** [Google Maps Place Lookup pricing and uptime](https://getanyapi.com/api/maps/place) - live USD price, lane routing, and measured 30-day uptime. [Every Maps endpoint](https://getanyapi.com/api/maps).","operationId":"maps_place","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"location":"San Francisco, CA","query":"Blue Bottle Coffee"},"schema":{"additionalProperties":false,"example":{"location":"San Francisco, CA","query":"Blue Bottle Coffee"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"categoryFilterWords":{"description":"Optional list of Google Maps place-category names to keep; the match is limited to a place whose category is one of these. Use lowercase category names as shown on Google Maps (e.g. [\"coffee shop\"]). Omit to allow any category and stay on the cheapest price; a category filter routes to a dearer source.","items":{"type":"string"},"type":"array"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"language":{"default":"en","description":"Two-letter language code for the result details (e.g. en).","type":"string"},"location":{"description":"Optional free-text location to scope the search, ideally city plus state or country (e.g. San Francisco, CA). Narrows the query to the best match in that area.","type":"string"},"placeMinimumStars":{"description":"Only match a place with at least this average rating: two (2+), twoAndHalf (2.5+), three (3+), threeAndHalf (3.5+), four (4+), or fourAndHalf (4.5+). Places with no reviews are excluded. Omit this field to stay on the cheapest price; a rating floor routes to a dearer source.","enum":["two","twoAndHalf","three","threeAndHalf","four","fourAndHalf"],"type":"string"},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"query":{"description":"The business name or search text to look up, as you would type it into the Google Maps search bar (e.g. Blue Bottle Coffee).","type":"string"},"requireFields":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Name the output fields this request must be able to return, for example `hours` or `plusCode`, and it is served only by a source that returns every one of them. Fields you do not name are still returned whenever the serving source has them. This can raise your price: when the cheapest source cannot return a named field, a dearer source serves, and you are quoted and charged its price. A named field can still be absent on a place that genuinely lacks it. Naming a combination that no single source returns together is refused as invalid input, with no charge.","items":{"enum":["categories","city","countryCode","hours","image","neighborhood","permanentlyClosed","phone","plusCode","postalCode","priceLevel","rating","reviewsCount","state","street","website"],"type":"string"},"type":"array","uniqueItems":true},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"website":{"description":"Filter by whether the place lists a website: allPlaces (default), withWebsite (only if it has a website), or withoutWebsite (only if it has none). Omit this field, or send allPlaces, to stay on the cheapest price; withWebsite and withoutWebsite route to a dearer source.","enum":["allPlaces","withWebsite","withoutWebsite"],"type":"string"}},"required":["query"],"title":"Google Maps place lookup input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"oneOf":[{"type":"null"},{"additionalProperties":false,"properties":{"items":{"description":"The best-matching place for the query, with available address, contact, category, rating, opening-hours, and coordinate details. Up to one element (empty when nothing matched). Populated whenever the provider has data for the entity.","items":{"properties":{"address":{"description":"Full formatted street address. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"categories":{"description":"Every Google Maps category listed for the place.","items":{"type":"string"},"type":"array"},"category":{"description":"Primary Google Maps category (e.g. Coffee shop). Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"city":{"type":"string"},"countryCode":{"description":"Two-letter country code.","type":"string"},"hours":{"description":"Opening hours by day: each element is an object with the day name and its hours.","items":{"type":"object"},"type":"array"},"image":{"description":"URL of the primary place photo.","type":"string"},"latitude":{"description":"Populated whenever the provider has data for the entity.","type":"number","x-anyapi-must-populate":true},"longitude":{"description":"Populated whenever the provider has data for the entity.","type":"number","x-anyapi-must-populate":true},"name":{"description":"Business or place name. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"neighborhood":{"type":"string"},"permanentlyClosed":{"description":"Whether the place is permanently closed.","type":"boolean"},"phone":{"description":"Formatted phone number.","type":"string"},"placeId":{"description":"Google Maps place id. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"plusCode":{"description":"Google Plus Code for the location.","type":"string"},"postalCode":{"type":"string"},"priceLevel":{"description":"Price level indicator (e.g. a price range).","type":"string"},"rating":{"description":"Average star rating.","type":"number"},"reviewsCount":{"description":"Total number of reviews.","type":"integer"},"state":{"description":"State or region name.","type":"string"},"street":{"description":"Street portion of the address.","type":"string"},"url":{"description":"Google Maps URL for the place. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"website":{"description":"Business website URL.","type":"string"}},"required":["name","url"],"type":"object"},"type":"array","x-anyapi-must-populate":true}},"required":["items"],"type":"object"}]},"found":{"type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"Google Maps place lookup output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"Google Maps Place Lookup","tags":["maps"],"x-mint":{"href":"/api-reference/maps/place"},"x-payment-info":{"price":{"amount":"0.001750","currency":"USD","mode":"fixed"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"amount":"0.001750","currency":"USD","minimumUsd":"0.001000","mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"amount":"0.001750","currency":"USD","minimumUsd":null,"mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/maps.reviews":{"post":{"description":"Fetch up to 100 Google Maps reviews for a place by place ID, sorted the way you need, in one normalized response.\n\n**Price:** \\$3.50 per 1,000 requests (flat per request - same cost regardless of results returned).\n\n**Routing:** 3 independent lanes are available in execution order. A failed attempt uses the next lane only when the request's payment authorizes that lane's price; the normalized schema stays the same.\n\n**Catalog:** [Google Maps Reviews pricing and uptime](https://getanyapi.com/api/maps/reviews) - live USD price, lane routing, and measured 30-day uptime. [Every Maps endpoint](https://getanyapi.com/api/maps).","operationId":"maps_reviews","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"limit":3,"placeId":"ChIJN1t_tDeuEmsRUsoyG83frY4"},"schema":{"additionalProperties":false,"example":{"limit":3,"placeId":"ChIJN1t_tDeuEmsRUsoyG83frY4"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"language":{"default":"en","description":"Two-letter language code for the review details (e.g. en).","type":"string"},"limit":{"description":"Maximum number of results to return (1-100, default 100).","maximum":100,"minimum":1,"type":"integer"},"placeId":{"description":"The Google Maps place ID to fetch reviews for (e.g. ChIJj61dQgK6j4AR4GeTYWZsKWw).","type":"string"},"postedLimit":{"description":"Only return reviews posted within this window: 24h (past 24 hours), week (past 7 days), month (past month), or year (past year). Omit for no recency filter.","enum":["24h","week","month","year"],"type":"string"},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"requireFields":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Name the output fields this request must be able to return, for example `isLocalGuide` or `placeId`, and it is served only by a source that returns every one of them. Fields you do not name are still returned whenever the serving source has them. This can raise your price: when the cheapest source cannot return a named field, a dearer source serves, and you are quoted and charged its price. A named field can still be absent on a review that genuinely lacks it. Naming a combination that no single source returns together is refused as invalid input, with no charge.","items":{"enum":["authorUrl","avatarUrl","isLocalGuide","likes","origin","ownerResponse","ownerResponseAt","placeId","publishedAgo","rating","reviewerId","reviewerReviewsCount","text"],"type":"string"},"type":"array","uniqueItems":true},"reviewsFilterString":{"description":"Only return reviews whose text contains this keyword or phrase (case-insensitive). Omit to return all reviews (e.g. parking).","type":"string"},"sort":{"default":"newest","description":"Order in which reviews are returned (e.g. newest).","enum":["newest","mostRelevant","highestRanking","lowestRanking"],"type":"string"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true}},"required":["placeId"],"title":"Google Maps reviews input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"description":"The reviews result, or null when not found.","oneOf":[{"type":"null"},{"additionalProperties":false,"properties":{"items":{"description":"Review records: reviewer, star rating, review text (empty when the reviewer left only a rating), publish date, likes, and owner response where present. Populated whenever the provider has data for the entity.","items":{"properties":{"author":{"description":"Reviewer display name. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"authorUrl":{"description":"Google Maps contributor page URL for the reviewer.","type":"string"},"avatarUrl":{"description":"Reviewer profile photo URL.","type":"string"},"createdUtc":{"description":"UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds. Populated whenever the provider has data for the entity.","type":"number","x-anyapi-must-populate":true},"isLocalGuide":{"description":"Whether the reviewer is a Google Local Guide.","type":"boolean"},"likes":{"description":"Number of likes on the review.","type":"integer"},"origin":{"description":"Source of the review (e.g. Google).","type":"string"},"ownerResponse":{"description":"Owner's reply text; empty when there is none.","type":"string"},"ownerResponseAt":{"description":"ISO 8601 timestamp of the owner's reply; empty when there is none.","type":"string"},"placeId":{"description":"Google Maps place id the review belongs to. Echoes the requested placeId; a lane that does not repeat it per review omits it.","type":"string"},"publishedAgo":{"description":"Human-relative publish time (e.g. '7 hours ago').","type":"string"},"rating":{"description":"Star rating the reviewer gave (1-5).","type":"number"},"reviewId":{"description":"Stable Google review id. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"reviewerId":{"description":"Stable Google id of the reviewer.","type":"string"},"reviewerReviewsCount":{"description":"Total number of reviews the reviewer has written.","type":"integer"},"text":{"description":"Review text; empty string when the reviewer left only a star rating.","type":"string"},"url":{"description":"Direct URL to the review on Google Maps. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true}},"required":["reviewId"],"type":"object"},"type":"array","x-anyapi-must-populate":true}},"required":["items"],"type":"object"}]},"found":{"description":"Whether reviews were found.","type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"Google Maps reviews output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"Google Maps Reviews","tags":["maps"],"x-mint":{"href":"/api-reference/maps/reviews"},"x-payment-info":{"price":{"amount":"0.003500","currency":"USD","mode":"fixed"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"amount":"0.003500","currency":"USD","minimumUsd":"0.001000","mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"amount":"0.003500","currency":"USD","minimumUsd":null,"mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/maps.search":{"post":{"description":"Search Google Maps for places matching a query and location: up to 20 normalized place records with ratings, addresses, and contact basics per request.\n\n**Price:** \\$1.75 per 1,000 requests (flat per request - same cost regardless of results returned).\n\n**Routing:** 3 independent lanes are available in execution order. A failed attempt uses the next lane only when the request's payment authorizes that lane's price; the normalized schema stays the same.\n\n**Catalog:** [Google Maps Search pricing and uptime](https://getanyapi.com/api/maps/search) - live USD price, lane routing, and measured 30-day uptime. [Every Maps endpoint](https://getanyapi.com/api/maps).","operationId":"maps_search","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"limit":3,"location":"Austin, TX","query":"coffee"},"schema":{"additionalProperties":false,"example":{"limit":3,"location":"Austin, TX","query":"coffee"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"categoryFilterWords":{"description":"Optional list of Google Maps place-category names to keep; results are limited to places whose category matches one of these. Use lowercase category names as shown on Google Maps (e.g. [\"coffee shop\", \"restaurant\"]). Omit to include all categories and stay on the cheapest price; a category filter routes to a dearer source.","items":{"type":"string"},"type":"array"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"language":{"default":"en","description":"Two-letter language code for the results (e.g. en).","type":"string"},"limit":{"description":"Maximum number of results to return (1-20, default 20). Pricing depends on the selected provider and may be flat per request.","maximum":20,"minimum":1,"type":"integer"},"location":{"description":"Free-text location to search in, ideally city plus country (e.g. Austin, USA).","minLength":1,"type":"string"},"placeMinimumStars":{"description":"Only return places with at least this average rating: two (2+), twoAndHalf (2.5+), three (3+), threeAndHalf (3.5+), four (4+), or fourAndHalf (4.5+). Places with no reviews are excluded. Omit this field to stay on the cheapest price; a rating floor routes to a dearer source.","enum":["two","twoAndHalf","three","threeAndHalf","four","fourAndHalf"],"type":"string"},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"query":{"description":"What you would type in the Google Maps search bar (e.g. coffee shop).","type":"string"},"requireFields":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Name the output fields this request must be able to return, for example `cid` or `street`, and it is served only by a source that returns every one of them. Fields you do not name are still returned whenever the serving source has them. This can raise your price: when the cheapest source cannot return a named field, a dearer source serves, and you are quoted and charged its price. A named field can still be absent on a place that genuinely lacks it. Naming a combination that no single source returns together is refused as invalid input, with no charge.","items":{"enum":["address","categories","category","cid","city","countryCode","image","latitude","longitude","permanentlyClosed","phone","postalCode","priceLevel","rating","reviewCount","state","street","website"],"type":"string"},"type":"array","uniqueItems":true},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"website":{"description":"Filter places by whether they list a website: allPlaces (default), withWebsite (only places that have a website), or withoutWebsite (only places without one). Omit this field, or send allPlaces, to stay on the cheapest price; withWebsite and withoutWebsite route to a dearer source.","enum":["allPlaces","withWebsite","withoutWebsite"],"type":"string"}},"required":["query","location"],"title":"Google Maps search input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"description":"The result wrapper, or null when nothing matched.","oneOf":[{"type":"null"},{"additionalProperties":false,"properties":{"items":{"description":"Matching Google Maps place records. Populated whenever the provider has data for the entity.","items":{"properties":{"address":{"description":"Full formatted street address.","type":"string"},"categories":{"description":"Every Google Maps category listed for the place.","items":{"type":"string"},"type":"array"},"category":{"description":"Primary place category (e.g. Coffee shop).","type":"string"},"cid":{"description":"Google customer/place id (cid).","type":"string"},"city":{"description":"City the place is in.","type":"string"},"countryCode":{"description":"Two-letter country code.","type":"string"},"image":{"description":"Primary place photo URL.","type":"string"},"latitude":{"description":"Latitude of the place in decimal degrees.","type":"number"},"longitude":{"description":"Longitude of the place in decimal degrees.","type":"number"},"name":{"description":"Place name. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"permanentlyClosed":{"description":"True when the place is marked permanently closed.","type":"boolean"},"phone":{"description":"Business phone number in E.164 format, when listed.","type":"string"},"placeId":{"description":"Google Maps place id (stable identifier for the place). Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"postalCode":{"description":"Postal code of the place.","type":"string"},"priceLevel":{"description":"Relative price level indicator (e.g. $, $10-20).","type":"string"},"rating":{"description":"Average star rating out of 5.","type":"number"},"reviewCount":{"description":"Total number of reviews.","type":"number"},"state":{"description":"State or region the place is in.","type":"string"},"street":{"description":"Street line of the address.","type":"string"},"url":{"description":"Canonical Google Maps URL for the place. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"website":{"description":"The place's own website URL, when listed.","type":"string"}},"required":["placeId","name","url"],"type":"object"},"type":"array","x-anyapi-must-populate":true}},"required":["items"],"type":"object"}]},"found":{"description":"True when the search returned at least one matching place.","type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"Google Maps search output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"Google Maps Search","tags":["maps"],"x-mint":{"href":"/api-reference/maps/search"},"x-payment-info":{"price":{"amount":"0.001750","currency":"USD","mode":"fixed"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"amount":"0.001750","currency":"USD","minimumUsd":"0.001000","mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"amount":"0.001750","currency":"USD","minimumUsd":null,"mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/maps.search_nearby":{"post":{"description":"Search Google Maps around an exact latitude and longitude and get up to 20 normalized places per call, each with the address broken into street, city, state, postal code and country. Use this when you have coordinates and want the map viewport centred on them; use maps.search when you only have a place name. Pass the returned nextCursor back as cursor for the next 20 places.\n\n**Price:** \\$1.30 per 1,000 requests (flat per request - same cost regardless of results returned).\n\n**Routing:** one lane serves this API today, so a failed attempt has nowhere to fail over to. Payment outcome follows the selected rail's settlement policy.\n\n**Catalog:** [Google Maps Nearby Search pricing and uptime](https://getanyapi.com/api/maps/search-nearby) - live USD price, lane routing, and measured 30-day uptime. [Every Maps endpoint](https://getanyapi.com/api/maps).","operationId":"maps_search_nearby","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"coordinates":{"latitude":30.2672,"longitude":-97.7431},"limit":20,"query":"coffee shop"},"schema":{"additionalProperties":false,"example":{"coordinates":{"latitude":30.2672,"longitude":-97.7431},"limit":20,"query":"coffee shop"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"coordinates":{"additionalProperties":false,"description":"The exact map centre to search around. Use maps.search instead if you only have a place name.","properties":{"latitude":{"description":"Latitude of the map centre in decimal degrees.","maximum":90,"minimum":-90,"type":"number"},"longitude":{"description":"Longitude of the map centre in decimal degrees.","maximum":180,"minimum":-180,"type":"number"}},"required":["latitude","longitude"],"type":"object"},"cursor":{"description":"Opaque cursor from a previous response's nextCursor. Pass it back to get the next page of places.","type":["string","null"]},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"language":{"default":"en","description":"Two-letter language code for the results (e.g. en).","type":"string"},"limit":{"default":20,"description":"Maximum number of places to return in this response (1-20). Google Maps returns one viewport of about 20 places per call; page with cursor for more. Price is flat per request.","maximum":20,"minimum":1,"type":"integer"},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"query":{"description":"What you would type in the Google Maps search bar (e.g. coffee shop).","minLength":1,"type":"string"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"zoom":{"default":13.1,"description":"Google Maps viewport zoom. Lower covers a wider area, higher focuses more tightly around the coordinates.","maximum":21,"minimum":3,"type":"number"}},"required":["query","coordinates"],"title":"Google Maps nearby search input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"description":"The result wrapper, or null when nothing matched.","oneOf":[{"type":"null"},{"additionalProperties":false,"properties":{"items":{"description":"Matching Google Maps place records, nearest the requested coordinates first. Populated whenever the provider has data for the entity.","items":{"properties":{"address":{"description":"Full formatted street address.","type":"string"},"categories":{"description":"Every Google Maps category listed for the place.","items":{"type":"string"},"type":"array"},"category":{"description":"Primary place category (e.g. Coffee shop).","type":"string"},"cid":{"description":"Google customer/place id (cid).","type":"string"},"city":{"description":"City the place is in.","type":"string"},"countryCode":{"description":"Two-letter country code.","type":"string"},"description":{"description":"Google's one-line description of the place.","type":"string"},"domain":{"description":"Registrable domain of the place website.","type":"string"},"image":{"description":"Thumbnail photo URL for the place.","type":"string"},"latitude":{"description":"Latitude of the place in decimal degrees.","type":"number"},"longitude":{"description":"Longitude of the place in decimal degrees.","type":"number"},"name":{"description":"Place name. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"neighborhood":{"description":"Neighborhood the place is in.","type":"string"},"phone":{"description":"Business phone number, when listed.","type":"string"},"placeId":{"description":"Google Maps place id (stable identifier for the place). Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"postalCode":{"description":"Postal code of the place.","type":"string"},"rank":{"description":"One-based position of the place in the Google Maps result order.","type":"integer"},"rating":{"description":"Average Google rating out of 5.","type":"number"},"reviewCount":{"description":"Number of Google reviews the place has.","type":"integer"},"state":{"description":"State or region the place is in, spelled in full (e.g. Texas).","type":"string"},"street":{"description":"Street line of the address.","type":"string"},"url":{"description":"Canonical Google Maps URL for the place. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"website":{"description":"The place's own website URL, when listed.","type":"string"}},"required":["placeId","name","url"],"type":"object"},"type":"array","x-anyapi-must-populate":true},"nextCursor":{"description":"Opaque cursor for the next page of places, or null when this search is complete. Pass it back as cursor to continue.","type":["string","null"]}},"required":["items"],"type":"object"}]},"found":{"description":"True when the search returned at least one matching place.","type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"Google Maps nearby search output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"Google Maps Nearby Search","tags":["maps"],"x-mint":{"href":"/api-reference/maps/search-nearby"},"x-payment-info":{"price":{"amount":"0.001300","currency":"USD","mode":"fixed"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"amount":"0.001300","currency":"USD","minimumUsd":"0.001000","mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"amount":"0.001300","currency":"USD","minimumUsd":null,"mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/mobile_phone.ai_ark":{"post":{"description":"Find a person's mobile phone from a LinkedIn URL or from a domain and full name.\n\n**Price:** \\$84.00 per 1,000 requests (flat per request - same cost regardless of results returned).\n\n**Routing:** one lane serves this API today, so a failed attempt has nowhere to fail over to. Payment outcome follows the selected rail's settlement policy.\n\n**Catalog:** [Mobile Phone - AI Ark pricing and uptime](https://getanyapi.com/api/mobile-phone/ai-ark) - live USD price, lane routing, and measured 30-day uptime. [Every Mobile_phone endpoint](https://getanyapi.com/api/mobile-phone).","operationId":"mobile_phone_ai_ark","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"linkedinUrl":"https://www.linkedin.com/in/tim-zheng"},"schema":{"additionalProperties":false,"anyOf":[{"required":["linkedinUrl"]},{"required":["domain","fullName"]}],"example":{"linkedinUrl":"https://www.linkedin.com/in/tim-zheng"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"domain":{"description":"Person's company domain.","minLength":1,"type":"string"},"fullName":{"description":"Person's full name.","minLength":1,"type":"string"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"linkedinUrl":{"description":"Person's LinkedIn profile URL.","format":"uri","type":"string"},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true}},"title":"Mobile Phone - AI Ark input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"description":"Normalized mobile-phone result, or null when no phone matched.","oneOf":[{"type":"null"},{"properties":{"linkedinUrl":{"description":"Canonical LinkedIn profile URL returned with the match.","format":"uri","type":"string"},"phone":{"description":"Matched mobile phone number.","minLength":1,"type":"string"},"phoneGroups":{"description":"Every phone group the source returned, in source order: an array of groups where each group is an array of numbers. Untyped passthrough, because the source may return more than one group and this field carries all of them unchanged rather than reshaping them. The phone and phones fields are the first number and the first group of this same structure."},"phones":{"description":"Every mobile phone number returned for the match, in source order. The first entry is the same value as phone.","items":{"type":"string"},"type":"array"},"recordId":{"description":"The source's own record identifier for this match, exposed so you can trace a result back to the record it came from.","type":"string"}},"required":["phone"],"type":"object"}]},"found":{"description":"Whether a mobile phone was found.","type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"Mobile Phone - AI Ark output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"Mobile Phone - AI Ark","tags":["mobile-phone"],"x-mint":{"href":"/api-reference/mobile-phone/ai-ark"},"x-payment-info":{"price":{"amount":"0.084000","currency":"USD","mode":"fixed"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"amount":"0.084000","currency":"USD","minimumUsd":"0.001000","mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"amount":"0.084000","currency":"USD","minimumUsd":null,"mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/mobile_phone.leadmagic":{"post":{"description":"Find a person's mobile phone from a profile URL or email. A no-match answer is a successful, billable result.\n\n**Price:** \\$201.60 per 1,000 requests (flat per request - same cost regardless of results returned).\n\n**Routing:** one lane serves this API today, so a failed attempt has nowhere to fail over to. Payment outcome follows the selected rail's settlement policy.\n\n**Catalog:** [Mobile Phone - LeadMagic pricing and uptime](https://getanyapi.com/api/mobile-phone/leadmagic) - live USD price, lane routing, and measured 30-day uptime. [Every Mobile_phone endpoint](https://getanyapi.com/api/mobile-phone).","operationId":"mobile_phone_leadmagic","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"profileUrl":"https://www.linkedin.com/in/tim-zheng"},"schema":{"additionalProperties":false,"anyOf":[{"required":["profileUrl"]},{"required":["workEmail"]},{"required":["personalEmail"]},{"required":["email"]}],"example":{"profileUrl":"https://www.linkedin.com/in/tim-zheng"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"email":{"format":"email","type":"string"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"personalEmail":{"format":"email","type":"string"},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"profileUrl":{"format":"uri","type":"string"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"workEmail":{"format":"email","type":"string"}},"title":"Mobile Phone - LeadMagic input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"description":"Normalized mobile-phone result, or null when no phone matched.","oneOf":[{"type":"null"},{"properties":{"message":{"description":"Source's own description of the match outcome.","type":"string"},"mobile":{"description":"Matched mobile phone number.","type":"string"},"profileUrl":{"description":"Canonical profile URL the match was resolved against.","format":"uri","type":"string"}},"required":["mobile"],"type":"object"}]},"found":{"description":"Whether a mobile phone was found.","type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"Mobile Phone - LeadMagic output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"Mobile Phone - LeadMagic","tags":["mobile-phone"],"x-mint":{"href":"/api-reference/mobile-phone/leadmagic"},"x-payment-info":{"price":{"amount":"0.201600","currency":"USD","mode":"fixed"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"amount":"0.201600","currency":"USD","minimumUsd":"0.001000","mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"amount":"0.201600","currency":"USD","minimumUsd":null,"mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/naver.blog_search":{"post":{"description":"Search up to five enriched Naver blog results by keyword with stable cursor pagination: result rank, title, excerpt, post and blogger URLs, blogger name, publish time, and Naver's total match count.\n\n**Price:** \\$36.00 per 1,000 requests (flat per request - same cost regardless of results returned).\n\n**Routing:** one lane serves this API today, so a failed attempt has nowhere to fail over to. Payment outcome follows the selected rail's settlement policy.\n\n**Catalog:** [Naver Blog Search pricing and uptime](https://getanyapi.com/api/naver/blog-search) - live USD price, lane routing, and measured 30-day uptime. [Every Naver endpoint](https://getanyapi.com/api/naver).","operationId":"naver_blog_search","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"limit":5,"query":"제주도 맛집","sort":"relevance"},"schema":{"additionalProperties":false,"example":{"limit":5,"query":"제주도 맛집","sort":"relevance"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"cursor":{"description":"Opaque pagination cursor from a previous response's nextCursor.","type":"string"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"limit":{"description":"Maximum number of title-enriched posts to return, from 1 to 5 (default 5).","maximum":5,"minimum":1,"type":"integer"},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"query":{"description":"Keyword phrase to search across Naver blogs.","minLength":1,"type":"string"},"sort":{"description":"Order posts by Naver relevance or newest publication date (default relevance).","enum":["relevance","recent"],"type":"string"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true}},"required":["query"],"title":"Naver Blog Search input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"description":"The result wrapper, or null when nothing was found.","oneOf":[{"type":"null"},{"additionalProperties":false,"properties":{"items":{"description":"Blog posts in Naver's requested search order. Populated whenever the provider has data for the entity.","items":{"properties":{"bloggerName":{"description":"Blogger display name.","minLength":1,"type":"string"},"bloggerUrl":{"description":"Public root URL for the blog that published the post.","format":"uri","type":"string"},"createdUtc":{"description":"Publication date as a UTC epoch timestamp in seconds.","type":"number"},"description":{"description":"Search-result excerpt from the post.","minLength":1,"type":"string"},"language":{"description":"Two-letter language code Naver detected for the post text.","type":"string"},"rank":{"description":"One-based rank within this result page.","minimum":1,"type":"integer"},"title":{"description":"Blog post title.","minLength":1,"type":"string"},"url":{"description":"Public blog post URL.","format":"uri","type":"string"}},"required":["rank","title","url","description","bloggerName","bloggerUrl","createdUtc"],"type":"object"},"type":"array","x-anyapi-must-populate":true},"nextCursor":{"description":"Opaque cursor for the next page, or an empty string when no next page is available.","type":["string","null"]},"total":{"description":"Naver's reported number of matching blog posts.","minimum":0,"type":"integer"}},"required":["total","items","nextCursor"],"type":"object"}]},"found":{"description":"True when Naver returned at least one matching blog post.","type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"Naver Blog Search output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"Naver Blog Search","tags":["naver"],"x-mint":{"href":"/api-reference/naver/blog-search"},"x-payment-info":{"price":{"amount":"0.036000","currency":"USD","mode":"fixed"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"amount":"0.036000","currency":"USD","minimumUsd":"0.001000","mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"amount":"0.036000","currency":"USD","minimumUsd":null,"mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/nextdoor.business":{"post":{"description":"Fetch one Nextdoor business page by its slug, with phone, email, website, and street address.\n\n**Price:** billed per result - \\$5.50 per 1,000 requests base + \\$2.86 per 1,000 results, capped at \\$8.36 per 1,000 requests.\n\n**Routing:** one lane serves this API today, so a failed attempt has nowhere to fail over to. Payment outcome follows the selected rail's settlement policy.\n\n**Catalog:** [Nextdoor Business pricing and uptime](https://getanyapi.com/api/nextdoor/business) - live USD price, lane routing, and measured 30-day uptime. [Every Nextdoor endpoint](https://getanyapi.com/api/nextdoor).","operationId":"nextdoor_business","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"pageSlug":"radiant-plumbing-air-conditioning-austin-tx"},"schema":{"additionalProperties":false,"example":{"pageSlug":"radiant-plumbing-air-conditioning-austin-tx"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"limit":{"description":"Maximum number of records to return. A business page resolves to one record, so this is always 1.","maximum":1,"minimum":1,"type":"integer"},"market":{"description":"Nextdoor market the page belongs to: \"us\" (nextdoor.com), \"gb\" (nextdoor.co.uk), or \"ca\" (ca.nextdoor.com). Defaults to \"us\".","enum":["us","gb","ca"],"type":"string"},"pageSlug":{"description":"Slug of the Nextdoor business page, the last path segment of its /pages/ URL, e.g. \"radiant-plumbing-air-conditioning-austin-tx\".","minLength":1,"type":"string"},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true}},"required":["pageSlug"],"title":"Nextdoor Business input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"description":"Business wrapper, or null when the page slug resolved to no business.","oneOf":[{"type":"null"},{"additionalProperties":false,"properties":{"items":{"description":"The Nextdoor business record for the requested page slug. Populated whenever the provider has data for the entity.","items":{"properties":{"address":{"description":"Full street address on one line; absent when the business hides or omits it.","type":"string"},"addressLine":{"description":"Street line of the address; absent when the business hides or omits it.","type":"string"},"addressUnit":{"description":"Unit, suite, or floor; absent when the address has none.","type":"string"},"categories":{"description":"Nextdoor trade categories the business is listed under, e.g. [\"Plumber\", \"Air conditioning service\"].","items":{"type":"string"},"type":"array"},"city":{"description":"City or locality; absent when the business hides or omits its address.","type":"string"},"country":{"description":"ISO 3166-1 alpha-2 country code, e.g. \"US\".","type":"string"},"description":{"description":"Business description written by the owner; absent when the page has none.","type":"string"},"email":{"description":"Primary contact email; absent when the page lists none. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"faveCount":{"description":"Number of neighbours who have faved (recommended) the business; 0 when none have.","type":"integer"},"hideAddress":{"description":"True when the business chose to hide its street address, which is why the address fields can be absent.","type":"boolean"},"id":{"description":"Stable Nextdoor business id, e.g. \"business_2345302\". Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"latitude":{"description":"Latitude of the business address; absent when Nextdoor publishes no coordinates.","type":"number"},"licenseId":{"description":"Trade or contractor licence number the business published; absent when it published none.","type":"string"},"locationStatus":{"description":"Operating status Nextdoor reports, e.g. \"OPEN\" or \"PERMANENTLY_CLOSED\"; empty when unreported.","type":"string"},"longitude":{"description":"Longitude of the business address; absent when Nextdoor publishes no coordinates.","type":"number"},"name":{"description":"Business name as listed on Nextdoor. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"phone":{"description":"Primary phone number in E.164 form, e.g. \"+15122639988\"; absent when the page lists none. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"phoneType":{"description":"Line type of the primary phone, e.g. \"landline\" or \"mobile\"; absent when Nextdoor does not report it.","type":"string"},"postalCode":{"description":"Postal or ZIP code; absent when the business hides or omits its address.","type":"string"},"slug":{"description":"Page slug for this business. Pass it to nextdoor.business to refetch this record on its own. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"state":{"description":"State, province, or region code, e.g. \"TX\"; absent when the business hides or omits its address.","type":"string"},"url":{"description":"Canonical Nextdoor business page URL. Populated whenever the provider has data for the entity.","format":"uri","type":"string","x-anyapi-must-populate":true},"website":{"description":"Business website URL; absent when the page lists none.","format":"uri","type":"string"}},"required":["id","name","slug","url"],"type":"object"},"type":"array","x-anyapi-must-populate":true}},"required":["items"],"type":"object"}]},"found":{"description":"True when the page slug resolved to a business.","type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"Nextdoor Business output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"Nextdoor Business","tags":["nextdoor"],"x-mint":{"href":"/api-reference/nextdoor/business"},"x-payment-info":{"price":{"currency":"USD","max":"0.008360","min":"0.005500","mode":"dynamic"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"currency":"USD","max":"0.008360","min":"0.005500","minimumUsd":"0.001000","mode":"dynamic","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"currency":"USD","max":"0.008360","min":"0.005500","minimumUsd":null,"mode":"dynamic","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/nextdoor.search":{"post":{"description":"Find local businesses listed on Nextdoor by city and trade category, with phone, email, website, and street address.\n\n**Price:** billed per result - \\$5.50 per 1,000 requests base + \\$2.86 per 1,000 results, capped at \\$62.70 per 1,000 requests.\n\n**Routing:** one lane serves this API today, so a failed attempt has nowhere to fail over to. Payment outcome follows the selected rail's settlement policy.\n\n**Catalog:** [Nextdoor Business Search pricing and uptime](https://getanyapi.com/api/nextdoor/search) - live USD price, lane routing, and measured 30-day uptime. [Every Nextdoor endpoint](https://getanyapi.com/api/nextdoor).","operationId":"nextdoor_search","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"city":"austin--tx","limit":5,"query":"plumber"},"schema":{"additionalProperties":false,"example":{"city":"austin--tx","limit":5,"query":"plumber"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"city":{"description":"Nextdoor city slug, lowercase, with the city and its state or region joined by two hyphens, e.g. \"austin--tx\" or \"york--england\".","minLength":1,"type":"string"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"limit":{"description":"Maximum number of businesses to return (1-20, default 20). You are billed per result returned, so a lower limit costs less.","maximum":20,"minimum":1,"type":"integer"},"market":{"description":"Nextdoor market the city belongs to: \"us\" (nextdoor.com), \"gb\" (nextdoor.co.uk), or \"ca\" (ca.nextdoor.com). Defaults to \"us\".","enum":["us","gb","ca"],"type":"string"},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"query":{"description":"Business category to look for in that city, e.g. \"plumber\", \"bakery\", \"electrician\".","minLength":1,"type":"string"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true}},"required":["city","query"],"title":"Nextdoor Business Search input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"description":"Search result wrapper, or null when no business matched.","oneOf":[{"type":"null"},{"additionalProperties":false,"properties":{"items":{"description":"Nextdoor business records matching the city and category, one per business. Populated whenever the provider has data for the entity.","items":{"properties":{"address":{"description":"Full street address on one line; absent when the business hides or omits it.","type":"string"},"addressLine":{"description":"Street line of the address; absent when the business hides or omits it.","type":"string"},"addressUnit":{"description":"Unit, suite, or floor; absent when the address has none.","type":"string"},"categories":{"description":"Nextdoor trade categories the business is listed under, e.g. [\"Plumber\", \"Air conditioning service\"].","items":{"type":"string"},"type":"array"},"city":{"description":"City or locality; absent when the business hides or omits its address.","type":"string"},"country":{"description":"ISO 3166-1 alpha-2 country code, e.g. \"US\".","type":"string"},"description":{"description":"Business description written by the owner; absent when the page has none.","type":"string"},"email":{"description":"Primary contact email; absent when the page lists none. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"faveCount":{"description":"Number of neighbours who have faved (recommended) the business; 0 when none have.","type":"integer"},"hideAddress":{"description":"True when the business chose to hide its street address, which is why the address fields can be absent.","type":"boolean"},"id":{"description":"Stable Nextdoor business id, e.g. \"business_2345302\". Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"latitude":{"description":"Latitude of the business address; absent when Nextdoor publishes no coordinates.","type":"number"},"licenseId":{"description":"Trade or contractor licence number the business published; absent when it published none.","type":"string"},"locationStatus":{"description":"Operating status Nextdoor reports, e.g. \"OPEN\" or \"PERMANENTLY_CLOSED\"; empty when unreported.","type":"string"},"longitude":{"description":"Longitude of the business address; absent when Nextdoor publishes no coordinates.","type":"number"},"name":{"description":"Business name as listed on Nextdoor. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"phone":{"description":"Primary phone number in E.164 form, e.g. \"+15122639988\"; absent when the page lists none. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"phoneType":{"description":"Line type of the primary phone, e.g. \"landline\" or \"mobile\"; absent when Nextdoor does not report it.","type":"string"},"postalCode":{"description":"Postal or ZIP code; absent when the business hides or omits its address.","type":"string"},"slug":{"description":"Page slug for this business. Pass it to nextdoor.business to refetch this record on its own. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"state":{"description":"State, province, or region code, e.g. \"TX\"; absent when the business hides or omits its address.","type":"string"},"url":{"description":"Canonical Nextdoor business page URL. Populated whenever the provider has data for the entity.","format":"uri","type":"string","x-anyapi-must-populate":true},"website":{"description":"Business website URL; absent when the page lists none.","format":"uri","type":"string"}},"required":["id","name","slug","url"],"type":"object"},"type":"array","x-anyapi-must-populate":true}},"required":["items"],"type":"object"}]},"found":{"description":"True when at least one business matched the city and category.","type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"Nextdoor Business Search output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"Nextdoor Business Search","tags":["nextdoor"],"x-mint":{"href":"/api-reference/nextdoor/search"},"x-payment-info":{"price":{"currency":"USD","max":"0.062700","min":"0.005500","mode":"dynamic"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"currency":"USD","max":"0.062700","min":"0.005500","minimumUsd":"0.001000","mode":"dynamic","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"currency":"USD","max":"0.062700","min":"0.005500","minimumUsd":null,"mode":"dynamic","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/people_search.ai_ark":{"post":{"description":"Search professional profiles with account, contact, and saved-list filters.\n\n**Price:** billed per result - \\$8.40 per 1,000 results, capped at \\$840.00 per 1,000 requests.\n\n**Routing:** one lane serves this API today, so a failed attempt has nowhere to fail over to. Payment outcome follows the selected rail's settlement policy.\n\n**Catalog:** [People Search - AI Ark pricing and uptime](https://getanyapi.com/api/people-search/ai-ark) - live USD price, lane routing, and measured 30-day uptime. [Every People_search endpoint](https://getanyapi.com/api/people-search).","operationId":"people_search_ai_ark","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"page":0,"size":1},"schema":{"additionalProperties":false,"example":{"page":0,"size":1},"properties":{"account":{"additionalProperties":true,"description":"Company-level filters, keyed by filter name. Accepted names: domain, employeeSize, foundedYear, funding, geoLocation, industries, keyword, language, linkedin, metric, naics, name, phoneNumber, productAndServices, retailSize, revenue, socialMedia, socialMediaLink, technologies, technology, type, url, location. Any other name is rejected. Most names take {\"any\"|\"all\": {\"include\": [...], \"exclude\": [...]}}, for example {\"type\": {\"any\": {\"include\": [\"PUBLIC_COMPANY\"]}}}. The any/all object goes INSIDE the filter name, never at the top of account. Size and money filters (employeeSize, foundedYear, revenue, retailSize) instead take {\"type\": \"RANGE\", \"range\": {\"start\": 50, \"end\": 200}} or {\"type\": \"ALL\"|\"NONE\"}; geoLocation takes {\"position\": {\"lat\": 0, \"lng\": 0}, \"radius\": 50, \"unit\": \"km\"|\"mi\"}; keyword takes {\"any\"|\"all\": {\"include\"|\"exclude\": {\"content\": [\"...\"], \"sources\": [{\"mode\": \"WORD\"|\"SMART\"|\"STRICT\", \"source\": \"NAME\"|\"KEYWORD\"|\"SEO\"|\"DESCRIPTION\"|\"INDUSTRY\"}]}}}.","type":"object"},"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"contact":{"additionalProperties":true,"description":"Person-level filters, keyed by filter name. Accepted names: certification, certifications, company, contactLanguage, contactLocation, currentCompany, department, departmentAndFunction, education, experience, fullName, function, keyword, language, linkedin, location, name, pastCompany, profileBadge, seniority, skill, skills, socialMedia, socialMediaFollower, socialMediaLink, socialProfile, title. Any other name is rejected. Names take {\"any\"|\"all\": {\"include\": [...], \"exclude\": [...]}}, with the any/all object INSIDE the filter name rather than at the top of contact. Free-text search goes through keyword, which takes {\"any\"|\"all\": {\"include\"|\"exclude\": {\"content\": [\"...\"], \"sources\": [{\"mode\": \"WORD\"|\"SMART\"|\"STRICT\", \"source\": \"HEADLINE\"|\"SUMMARY\"|\"ORGANIZATION\"|\"SKILL\"|\"WORK_HISTORY_DESCRIPTION\"|\"EDUCATION_DESCRIPTION\"|\"CERTIFICATION\"|\"PUBLICATION\"|\"PATENT\"|\"AWARD\"|\"COURSE\"|\"PROJECTS\"|\"VOLUNTEERING\"|\"LANGUAGE_SKILL\"|\"TEST_SCORE\"}]}}}, for example {\"keyword\": {\"any\": {\"include\": {\"content\": [\"engineer\"], \"sources\": [{\"mode\": \"SMART\", \"source\": \"HEADLINE\"}]}}}}.","type":"object"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"lists":{"additionalProperties":true,"description":"AI Ark saved-list filter expression.","type":"object"},"page":{"default":0,"description":"Zero-based result page.","minimum":0,"type":"integer"},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"size":{"default":10,"description":"Maximum people to return on this page.","maximum":100,"minimum":1,"type":"integer"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true}},"title":"People Search - AI Ark input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"description":"Normalized people and page metadata, or null when no people matched.","oneOf":[{"type":"null"},{"additionalProperties":false,"properties":{"page":{"description":"Zero-based page number returned by the source.","minimum":0,"type":"integer"},"people":{"description":"People returned on this page.","items":{"properties":{"birthDate":{"description":"Birthday as published on the profile, in YYYY-MM-DD form. LinkedIn lets a member hide the year, and the source encodes that as the placeholder year 1600 - treat the year as unknown when it reads 1600 rather than as a real date.","type":"string"},"careerStartUtc":{"description":"UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds.","type":"integer"},"city":{"description":"Location city.","type":"string"},"companyAcquisitionCount":{"description":"Number of acquisitions the source records for the current company.","minimum":0,"type":"integer"},"companyAcquisitions":{"description":"Acquisitions the source records for the current company, with the role telling you which side the company was on.","items":{"properties":{"announcedUtc":{"description":"UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds.","type":"integer"},"imageKey":{"description":"The source's internal image key for the counterparty. It is a bare key, not a URL.","type":"string"},"name":{"description":"Counterparty organization name.","type":"string"},"recordId":{"description":"The source's own slug for the counterparty organization.","type":"string"},"role":{"description":"The current company's side of the deal, for example acquiree.","type":"string"}},"type":"object"},"type":"array"},"companyAddress":{"description":"Current company headquarters address as published by the source.","type":"string"},"companyCity":{"description":"Current company headquarters city.","type":"string"},"companyContinent":{"description":"Current company headquarters continent.","type":"string"},"companyCountry":{"description":"Current company headquarters country.","type":"string"},"companyCrunchbaseUrl":{"description":"Current company's Crunchbase URL.","format":"uri","type":"string"},"companyDescription":{"description":"Current company description.","type":"string"},"companyDomain":{"description":"Current company domain.","type":"string"},"companyDomainLtd":{"description":"The source's second copy of the current company's domain. Usually identical to companyDomain; it can differ when the source resolves a redirect or a country domain differently, so compare the two rather than assuming they match.","type":"string"},"companyEmployeeCount":{"description":"Estimated employees at the current company.","minimum":0,"type":"integer"},"companyEmployeeRangeMin":{"description":"Lower bound of the current company's published employee range.","minimum":0,"type":"integer"},"companyFacebookUrl":{"description":"Current company's canonical Facebook URL.","format":"uri","type":"string"},"companyFoundedYear":{"description":"Year the current company was founded.","type":"integer"},"companyId":{"description":"The source's own record identifier for the current company, exposed so you can trace a result back to the record it came from.","type":"string"},"companyImage":{"description":"Current company logo URL. This is a SIGNED, EXPIRING image-proxy URL - the path carries an exp: epoch roughly five days out - so fetch and store the image promptly rather than storing this URL.","format":"uri","type":"string"},"companyIndustries":{"description":"Additional industries for the current company.","items":{"type":"string"},"type":"array"},"companyIndustry":{"description":"Current company's primary industry.","type":"string"},"companyKeywords":{"description":"Keywords describing the current company.","items":{"type":"string"},"type":"array"},"companyLanguages":{"description":"Languages the current company publishes in.","items":{"type":"string"},"type":"array"},"companyLatitude":{"description":"Current company headquarters latitude in decimal degrees.","type":"number"},"companyLegalName":{"description":"Current company's registered legal name.","type":"string"},"companyLinkedinUrl":{"description":"Current company's canonical LinkedIn URL.","format":"uri","type":"string"},"companyLocations":{"description":"Every office the source lists for the current company, including the headquarters already reported in the companyCountry/companyCity fields.","items":{"properties":{"address":{"description":"Office address as published by the source.","type":"string"},"city":{"description":"Office city.","type":"string"},"continent":{"description":"Office continent.","type":"string"},"country":{"description":"Office country.","type":"string"},"latitude":{"description":"Office latitude in decimal degrees.","type":"number"},"longitude":{"description":"Office longitude in decimal degrees.","type":"number"},"postalCode":{"description":"Office postal code.","type":"string"},"state":{"description":"Office state or region.","type":"string"},"street":{"description":"Office street or neighbourhood line.","type":"string"}},"type":"object"},"type":"array"},"companyLongitude":{"description":"Current company headquarters longitude in decimal degrees.","type":"number"},"companyNaics":{"description":"NAICS codes for the current company.","items":{"type":"string"},"type":"array"},"companyName":{"description":"Current company name.","type":"string"},"companyOverview":{"description":"Longer overview of the current company. Overlaps companyDescription but is a separately maintained blurb and is often longer or more current.","type":"string"},"companyPostalCode":{"description":"Current company headquarters postal code.","type":"string"},"companyRevenueMax":{"description":"Upper bound of the current company's estimated annual revenue in USD.","minimum":0,"type":"integer"},"companyRevenueMin":{"description":"Lower bound of the current company's estimated annual revenue in USD.","minimum":0,"type":"integer"},"companyRevenueRange":{"description":"The same annual revenue estimate as a single hyphenated range string, for example 500000000-1000000000. It duplicates companyRevenueMin and companyRevenueMax; use those for arithmetic.","type":"string"},"companySeoDescription":{"description":"The meta description the source scraped from the current company's website. It is site copy, not the source's own writing, so it may be in another language or out of date.","type":"string"},"companyStartUtc":{"description":"UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds.","type":"integer"},"companyState":{"description":"Current company headquarters state or region.","type":"string"},"companyStreet":{"description":"Current company headquarters street or neighbourhood line.","type":"string"},"companySubOrganizations":{"description":"The source's own record identifiers for the current company's sub-organizations, exposed so you can look each one up in the company endpoints.","items":{"type":"string"},"type":"array"},"companyTechnologies":{"description":"Technologies detected on the current company's web presence.","items":{"properties":{"category":{"description":"Technology category.","type":"string"},"name":{"description":"Technology name.","type":"string"}},"type":"object"},"type":"array"},"companyTwitterUrl":{"description":"Current company's canonical X (Twitter) URL.","format":"uri","type":"string"},"companyType":{"description":"Current company's organization type.","type":"string"},"companyUpdatedUtc":{"description":"UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds.","type":"integer"},"companyWebsiteUrl":{"description":"Current company website URL.","format":"uri","type":"string"},"connectionCount":{"description":"LinkedIn connection count.","minimum":0,"type":"integer"},"country":{"description":"Location country.","type":"string"},"creator":{"description":"Whether the profile is in LinkedIn creator mode.","type":"boolean"},"departments":{"description":"Departments the current role belongs to.","items":{"type":"string"},"type":"array"},"educations":{"description":"Education history listed on the profile.","items":{"properties":{"degreeName":{"description":"Degree earned.","type":"string"},"endUtc":{"description":"UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds.","type":"integer"},"fieldOfStudy":{"description":"Field of study.","type":"string"},"grade":{"description":"Grade as published on the profile.","type":"string"},"schoolId":{"description":"The source's own record identifier for the school. Untyped passthrough: the source returns null on the profiles observed so far, so its populated shape is not yet proven and this field carries whatever the source sends without reshaping it."},"schoolImage":{"description":"The school logo as the source returns it. Untyped passthrough: the source returns null on the profiles observed so far, so its populated shape is not yet proven and this field carries whatever the source sends without reshaping it."},"schoolName":{"description":"School name.","type":"string"},"schoolUrl":{"description":"Canonical school page URL.","format":"uri","type":"string"},"startUtc":{"description":"UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds.","type":"integer"}},"type":"object"},"type":"array"},"experience":{"description":"Work history grouped by company, most recent first.","items":{"properties":{"companyEmployeeRangeMax":{"description":"Upper bound of this company's published employee range.","minimum":0,"type":"integer"},"companyEmployeeRangeMin":{"description":"Lower bound of this company's published employee range.","minimum":0,"type":"integer"},"companyId":{"description":"The source's own record identifier for this company, exposed so you can trace a result back to the record it came from.","type":"string"},"companyImage":{"description":"Company logo URL. This is a SIGNED, EXPIRING image-proxy URL - the path carries an exp: epoch roughly five days out - so fetch and store the image promptly rather than storing this URL.","format":"uri","type":"string"},"companyLinkedinUrl":{"description":"Canonical LinkedIn URL for this company.","format":"uri","type":"string"},"companyName":{"description":"Company name for this block of work history.","type":"string"},"endUtc":{"description":"UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds.","type":"integer"},"positions":{"description":"Individual roles held at this company.","items":{"properties":{"companyName":{"description":"Company name as published on the role.","type":"string"},"description":{"description":"Role description.","type":"string"},"employmentType":{"description":"Employment type, for example Full-time.","type":"string"},"endUtc":{"description":"UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds.","type":"integer"},"location":{"description":"Role location.","type":"string"},"startUtc":{"description":"UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds.","type":"integer"},"title":{"description":"Role title.","type":"string"}},"type":"object"},"type":"array"},"startUtc":{"description":"UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds.","type":"integer"}},"type":"object"},"type":"array"},"facebookUrl":{"description":"Canonical Facebook profile URL.","format":"uri","type":"string"},"firstName":{"description":"Person's first name.","type":"string"},"followable":{"description":"Whether the profile can be followed without connecting. Untyped passthrough: the source returns null for most profiles, so its populated shape is not yet proven and this field carries whatever the source sends without reshaping it."},"followerCount":{"description":"LinkedIn follower count.","minimum":0,"type":"integer"},"fullName":{"description":"Person's full name.","minLength":1,"type":"string"},"functions":{"description":"Job functions the current role covers.","items":{"type":"string"},"type":"array"},"githubUrl":{"description":"Canonical GitHub profile URL.","format":"uri","type":"string"},"headline":{"description":"Professional profile headline.","type":"string"},"hiring":{"description":"Whether the profile is flagged as hiring.","type":"boolean"},"image":{"description":"Profile photo URL. This is a SIGNED, EXPIRING image-proxy URL - the path carries an exp: epoch roughly five days out - so fetch and store the image promptly rather than storing this URL.","format":"uri","type":"string"},"industry":{"description":"Industry the person works in.","type":"string"},"influencer":{"description":"Whether the profile carries a LinkedIn influencer badge.","type":"boolean"},"lastName":{"description":"Person's last name.","type":"string"},"linkedinHandle":{"description":"LinkedIn public profile handle, the trailing segment of the profile URL.","type":"string"},"linkedinUrl":{"description":"Canonical LinkedIn profile URL.","format":"uri","type":"string"},"location":{"description":"Formatted location.","type":"string"},"locationPosition":{"description":"Coordinates for the person's location as the source returns them. Untyped passthrough: the source returns null for most profiles, so its populated shape is not yet proven and this field carries whatever the source sends without reshaping it."},"locationShort":{"description":"Shorter form of the same location, usually city and state without country or continent. It duplicates part of location.","type":"string"},"middleName":{"description":"Person's middle name.","type":"string"},"networkInfluencer":{"description":"The same influencer flag as the badge above, carried on the source's network statistics instead of its badge block. Expected to agree with influencer; compare them if the distinction matters to you.","type":"boolean"},"openToWork":{"description":"Whether the profile is flagged open to work.","type":"boolean"},"premium":{"description":"Whether the profile carries a LinkedIn premium badge.","type":"boolean"},"previousJobTitles":{"description":"Job titles the person held before the current one, as the source returns them. Untyped passthrough: the source returns null for most profiles, so its populated shape is not yet proven and this field carries whatever the source sends without reshaping it. The experience array carries the same history in a typed form."},"primaryLanguage":{"description":"Primary profile language code.","type":"string"},"primaryLanguageCountry":{"description":"Country code paired with the primary profile language, for example US.","type":"string"},"profileBackground":{"description":"The profile background or cover image as the source returns it. Untyped passthrough: the source returns null for most profiles, so its populated shape is not yet proven and this field carries whatever the source sends without reshaping it."},"profileId":{"description":"The source's own record identifier for this person, exposed so you can trace a result back to the record it came from.","type":"string"},"profileLanguages":{"description":"Languages the person lists on the profile, as the source returns them. Untyped passthrough: the source returns null for most profiles, so its populated shape is not yet proven and this field carries whatever the source sends without reshaping it."},"seniority":{"description":"Seniority level inferred for the current role.","type":"string"},"skills":{"description":"Skills listed on the profile.","items":{"type":"string"},"type":"array"},"state":{"description":"Location state or region.","type":"string"},"subDepartments":{"description":"Sub-departments the current role belongs to.","items":{"type":"string"},"type":"array"},"summary":{"description":"Profile summary or about section.","type":"string"},"supportedLocales":{"description":"Every locale the profile is available in. The first entry usually repeats primaryLanguage and primaryLanguageCountry.","items":{"properties":{"country":{"description":"Country code for this locale.","type":"string"},"language":{"description":"Language code for this locale.","type":"string"}},"type":"object"},"type":"array"},"title":{"description":"Current job title.","type":"string"},"titleStartUtc":{"description":"UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds.","type":"integer"},"twitterUrl":{"description":"Canonical X (Twitter) profile URL.","format":"uri","type":"string"},"updatedUtc":{"description":"UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds.","type":"integer"},"verified":{"description":"Whether LinkedIn has verified the profile.","type":"boolean"}},"required":["fullName","linkedinUrl"],"type":"object"},"type":"array"},"size":{"description":"Configured page size.","minimum":0,"type":"integer"},"total":{"description":"Total matching people.","minimum":0,"type":"integer"},"totalPages":{"description":"Total result pages.","minimum":0,"type":"integer"}},"required":["people","page","size","total","totalPages"],"type":"object"}]},"found":{"description":"Whether the search returned at least one person.","type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"People Search - AI Ark output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"People Search - AI Ark","tags":["people-search"],"x-mint":{"href":"/api-reference/people-search/ai-ark"},"x-payment-info":{"price":{"currency":"USD","max":"0.840000","min":"0.000000","mode":"dynamic"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"currency":"USD","max":"0.840000","min":"0.001000","minimumUsd":"0.001000","mode":"dynamic","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"currency":"USD","max":"0.840000","min":"0.000000","minimumUsd":null,"mode":"dynamic","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/people_search.crustdata_v3":{"post":{"description":"Find up to 100 professional profiles by company domain and title keywords.\n\n**Price:** \\$144.00 per 1,000 requests (flat per request - same cost regardless of results returned).\n\n**Routing:** one lane serves this API today, so a failed attempt has nowhere to fail over to. Payment outcome follows the selected rail's settlement policy.\n\n**Catalog:** [People Search - Crustdata v3 pricing and uptime](https://getanyapi.com/api/people-search/crustdata-v3) - live USD price, lane routing, and measured 30-day uptime. [Every People_search endpoint](https://getanyapi.com/api/people-search).","operationId":"people_search_crustdata_v3","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"companyDomain":"posthog.com","limit":1,"titleKeywords":"engineer"},"schema":{"additionalProperties":false,"example":{"companyDomain":"posthog.com","limit":1,"titleKeywords":"engineer"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"companyDomain":{"description":"Company domain without a path.","minLength":1,"type":"string"},"country":{"minLength":1,"type":"string"},"fuzzyTitle":{"default":true,"type":"boolean"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"limit":{"default":3,"maximum":100,"minimum":1,"type":"integer"},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"profileKeywords":{"oneOf":[{"minLength":1,"type":"string"},{"items":{"minLength":1,"type":"string"},"minItems":1,"type":"array"}]},"requireVerifiedEmail":{"default":false,"type":"boolean"},"seniority":{"oneOf":[{"minLength":1,"type":"string"},{"items":{"minLength":1,"type":"string"},"minItems":1,"type":"array"}]},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"titleKeywords":{"oneOf":[{"minLength":1,"type":"string"},{"items":{"minLength":1,"type":"string"},"minItems":1,"type":"array"}]}},"required":["companyDomain","titleKeywords"],"title":"People Search - Crustdata v3 input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"oneOf":[{"type":"null"},{"additionalProperties":false,"properties":{"hasMore":{"description":"True when more profiles exist beyond this page.","type":"boolean"},"profiles":{"description":"Matching professional profiles.","items":{"properties":{"allEmployers":{"description":"Every employer on the profile, current and past. Duplicates the contents of currentEmployers and pastEmployers in one combined list.","items":{"properties":{"businessEmailVerified":{"description":"True when a business email at this employer has been verified.","type":"boolean"},"companyDomain":{"description":"Employer website domain.","type":"string"},"companyHeadcount":{"description":"Latest observed employee count at the employer.","type":"integer"},"companyHeadcountRange":{"description":"Employer headcount band, e.g. 51-200.","type":"string"},"companyHeadquartersCountry":{"description":"Country of the employer's headquarters.","type":"string"},"companyHqLocation":{"description":"Full headquarters location of the employer.","type":"string"},"companyHqLocationAddressComponents":{"description":"The employer's headquarters location split into address components (city, county, state, country). Restates companyHqLocation in parts.","items":{"type":"string"},"type":"array"},"companyId":{"description":"Crustdata company identifier for this employer, accepted by the Company Enrichment endpoint.","type":"string"},"companyIndustries":{"description":"All LinkedIn industries listed for the employer.","items":{"type":"string"},"type":"array"},"companyIndustry":{"description":"Primary LinkedIn industry of the employer.","type":"string"},"companyLinkedinId":{"description":"LinkedIn's own numeric identifier for the employer company page.","type":"string"},"companyLinkedinUrl":{"description":"Employer LinkedIn company page URL.","format":"uri","type":"string"},"companyName":{"description":"Employer name.","type":"string"},"companyType":{"description":"Employer company type, e.g. Privately Held or Public Company.","type":"string"},"companyWebsite":{"description":"Employer website URL.","format":"uri","type":"string"},"description":{"description":"Role description as written on the profile.","type":"string"},"employmentType":{"description":"Employment type, e.g. Full-time or Contract.","type":"string"},"endUtc":{"description":"UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds. End of the role.","type":"integer"},"functionCategory":{"description":"Job function category, e.g. Engineering or Sales.","type":"string"},"linkedinId":{"description":"LinkedIn's own numeric identifier for the employer page. Crustdata returns the same value as companyLinkedinId on this record.","type":"string"},"location":{"description":"Location of the role.","type":"string"},"positionId":{"description":"Crustdata identifier for this specific position record.","type":"string"},"primaryEmployer":{"description":"True when this is the profile's primary listed position.","type":"boolean"},"seniority":{"description":"Seniority level of the role, e.g. Entry Level or Owner / Partner.","type":"string"},"startUtc":{"description":"UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds. Start of the role.","type":"integer"},"title":{"description":"Job title held at this employer.","type":"string"},"updatedUtc":{"description":"UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds. Last time this employment record was refreshed.","type":"integer"},"yearsAtCompany":{"description":"Whole years spent at this employer.","type":"integer"},"yearsAtCompanyRange":{"description":"Human-readable tenure band, e.g. 3 to 5 years.","type":"string"}},"type":"object"},"type":"array"},"certifications":{"description":"Certifications listed on the profile.","items":{"properties":{"certificationId":{"description":"Crustdata identifier for this certification record.","type":"string"},"expiresUtc":{"description":"UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds. When the certification expires.","type":"integer"},"issuedUtc":{"description":"UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds. When the certification was issued.","type":"integer"},"issuer":{"description":"Organization that issued the certification.","type":"string"},"issuerLinkedinId":{"description":"LinkedIn's own numeric identifier for the issuing organization page.","type":"string"},"name":{"description":"Certification name.","type":"string"},"url":{"description":"Link to the certification.","format":"uri","type":"string"}},"type":"object"},"type":"array"},"city":{"description":"City of residence.","type":"string"},"connectionCount":{"description":"Number of LinkedIn connections.","type":"integer"},"contactUpdatedUtc":{"description":"UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds. Last time the contact section was refreshed.","type":"integer"},"continent":{"description":"Continent of residence.","type":"string"},"country":{"description":"Country of residence.","type":"string"},"currentEmployers":{"description":"Positions the person currently holds.","items":{"properties":{"businessEmailVerified":{"description":"True when a business email at this employer has been verified.","type":"boolean"},"companyDomain":{"description":"Employer website domain.","type":"string"},"companyHeadcount":{"description":"Latest observed employee count at the employer.","type":"integer"},"companyHeadcountRange":{"description":"Employer headcount band, e.g. 51-200.","type":"string"},"companyHeadquartersCountry":{"description":"Country of the employer's headquarters.","type":"string"},"companyHqLocation":{"description":"Full headquarters location of the employer.","type":"string"},"companyHqLocationAddressComponents":{"description":"The employer's headquarters location split into address components (city, county, state, country). Restates companyHqLocation in parts.","items":{"type":"string"},"type":"array"},"companyId":{"description":"Crustdata company identifier for this employer, accepted by the Company Enrichment endpoint.","type":"string"},"companyIndustries":{"description":"All LinkedIn industries listed for the employer.","items":{"type":"string"},"type":"array"},"companyIndustry":{"description":"Primary LinkedIn industry of the employer.","type":"string"},"companyLinkedinId":{"description":"LinkedIn's own numeric identifier for the employer company page.","type":"string"},"companyLinkedinUrl":{"description":"Employer LinkedIn company page URL.","format":"uri","type":"string"},"companyName":{"description":"Employer name.","type":"string"},"companyType":{"description":"Employer company type, e.g. Privately Held or Public Company.","type":"string"},"companyWebsite":{"description":"Employer website URL.","format":"uri","type":"string"},"description":{"description":"Role description as written on the profile.","type":"string"},"employmentType":{"description":"Employment type, e.g. Full-time or Contract.","type":"string"},"functionCategory":{"description":"Job function category, e.g. Engineering or Sales.","type":"string"},"linkedinId":{"description":"LinkedIn's own numeric identifier for the employer page. Crustdata returns the same value as companyLinkedinId on this record.","type":"string"},"location":{"description":"Location of the role.","type":"string"},"positionId":{"description":"Crustdata identifier for this specific position record.","type":"string"},"primaryEmployer":{"description":"True when this is the profile's primary listed position.","type":"boolean"},"seniority":{"description":"Seniority level of the role, e.g. Entry Level or Owner / Partner.","type":"string"},"startUtc":{"description":"UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds. Start of the role.","type":"integer"},"title":{"description":"Job title held at this employer.","type":"string"},"updatedUtc":{"description":"UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds. Last time this employment record was refreshed.","type":"integer"},"yearsAtCompany":{"description":"Whole years spent at this employer.","type":"integer"},"yearsAtCompanyRange":{"description":"Human-readable tenure band, e.g. 3 to 5 years.","type":"string"}},"type":"object"},"type":"array"},"educationBackground":{"description":"Education history exactly as Crustdata returns it. Untyped passthrough: the structure ships verbatim and is not validated, because it was empty for every profile we captured."},"educationUpdatedUtc":{"description":"UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds. Last time the education section was refreshed.","type":"integer"},"emails":{"description":"Email addresses found for the person.","items":{"type":"string"},"type":"array"},"employerUpdatedUtc":{"description":"UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds. Last time the employment section was refreshed.","type":"integer"},"firstName":{"description":"Given name of the person.","type":"string"},"flagshipProfileUrl":{"description":"LinkedIn flagship profile URL. Usually the same value as linkedinUrl; Crustdata returns both and they can differ when the profile has a vanity URL.","format":"uri","type":"string"},"followerCount":{"description":"Number of LinkedIn followers.","type":"integer"},"headline":{"description":"LinkedIn headline.","type":"string"},"honors":{"description":"Honors and awards exactly as Crustdata returns them. Untyped passthrough: the structure ships verbatim and is not validated, because it was empty for every profile we captured."},"image":{"description":"Profile picture URL.","format":"uri","type":"string"},"indexedUtc":{"description":"UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds. When Crustdata last indexed the record for search, which is usually just after recordUpdatedUtc.","type":"integer"},"languages":{"description":"Languages listed on the profile.","items":{"type":"string"},"type":"array"},"lastName":{"description":"Family name of the person.","type":"string"},"linkedinUrl":{"description":"LinkedIn profile URL.","format":"uri","type":"string"},"name":{"description":"Full name of the person.","type":"string"},"openToCards":{"description":"LinkedIn open-to cards (open to work, hiring, providing services) exactly as Crustdata returns them. Untyped passthrough: the structure ships verbatim and is not validated, because it was empty for every profile we captured."},"pastEmployers":{"description":"Positions the person previously held.","items":{"properties":{"businessEmailVerified":{"description":"True when a business email at this employer has been verified.","type":"boolean"},"companyDomain":{"description":"Employer website domain.","type":"string"},"companyHeadcount":{"description":"Latest observed employee count at the employer.","type":"integer"},"companyHeadcountRange":{"description":"Employer headcount band, e.g. 51-200.","type":"string"},"companyHeadquartersCountry":{"description":"Country of the employer's headquarters.","type":"string"},"companyHqLocation":{"description":"Full headquarters location of the employer.","type":"string"},"companyHqLocationAddressComponents":{"description":"The employer's headquarters location split into address components (city, county, state, country). Restates companyHqLocation in parts.","items":{"type":"string"},"type":"array"},"companyId":{"description":"Crustdata company identifier for this employer, accepted by the Company Enrichment endpoint.","type":"string"},"companyIndustries":{"description":"All LinkedIn industries listed for the employer.","items":{"type":"string"},"type":"array"},"companyIndustry":{"description":"Primary LinkedIn industry of the employer.","type":"string"},"companyLinkedinId":{"description":"LinkedIn's own numeric identifier for the employer company page.","type":"string"},"companyLinkedinUrl":{"description":"Employer LinkedIn company page URL.","format":"uri","type":"string"},"companyName":{"description":"Employer name.","type":"string"},"companyType":{"description":"Employer company type, e.g. Privately Held or Public Company.","type":"string"},"companyWebsite":{"description":"Employer website URL.","format":"uri","type":"string"},"description":{"description":"Role description as written on the profile.","type":"string"},"employmentType":{"description":"Employment type, e.g. Full-time or Contract.","type":"string"},"endUtc":{"description":"UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds. End of the role.","type":"integer"},"functionCategory":{"description":"Job function category, e.g. Engineering or Sales.","type":"string"},"linkedinId":{"description":"LinkedIn's own numeric identifier for the employer page. Crustdata returns the same value as companyLinkedinId on this record.","type":"string"},"location":{"description":"Location of the role.","type":"string"},"positionId":{"description":"Crustdata identifier for this specific position record.","type":"string"},"primaryEmployer":{"description":"True when this is the profile's primary listed position.","type":"boolean"},"seniority":{"description":"Seniority level of the role, e.g. Entry Level or Owner / Partner.","type":"string"},"startUtc":{"description":"UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds. Start of the role.","type":"integer"},"title":{"description":"Job title held at this employer.","type":"string"},"updatedUtc":{"description":"UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds. Last time this employment record was refreshed.","type":"integer"},"yearsAtCompany":{"description":"Whole years spent at this employer.","type":"integer"},"yearsAtCompanyRange":{"description":"Human-readable tenure band, e.g. 3 to 5 years.","type":"string"}},"type":"object"},"type":"array"},"personId":{"description":"Crustdata identifier for this person.","type":"string"},"profileLanguage":{"description":"Language the profile itself is written in.","type":"string"},"profilePictureUrl":{"description":"Profile photo URL as LinkedIn serves it, query string intact because LinkedIn signs these URLs. The image field carries Crustdata's cached copy of the same photo, which does not expire.","format":"uri","type":"string"},"profileUpdatedUtc":{"description":"UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds. Last time the profile section was refreshed.","type":"integer"},"recentlyChangedJobs":{"description":"True when the person changed employer recently.","type":"boolean"},"recordUpdatedUtc":{"description":"UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds. When Crustdata last wrote the record. Differs from updatedUtc, which reports the profile's own last-updated stamp.","type":"integer"},"region":{"description":"Region string as published on the profile.","type":"string"},"regionAddressComponents":{"description":"The region string split into address components (city, county, state, country). Restates region in parts.","items":{"type":"string"},"type":"array"},"skills":{"description":"Skills listed on the profile.","items":{"type":"string"},"type":"array"},"state":{"description":"State or province of residence.","type":"string"},"summary":{"description":"Profile summary or About section text.","type":"string"},"twitterHandle":{"description":"X (Twitter) handle listed on the profile.","type":"string"},"updatedUtc":{"description":"UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds. Last time any part of this profile record was refreshed.","type":"integer"},"yearsOfExperience":{"description":"Total whole years of professional experience.","type":"integer"},"yearsOfExperienceRange":{"description":"Human-readable experience band, e.g. More than 10 years.","type":"string"}},"required":["name"],"type":"object"},"type":"array"},"totalCount":{"description":"Total number of profiles matching the search.","minimum":0,"type":"integer"}},"required":["profiles"],"type":"object"}]},"found":{"description":"False when the search matched no professional profiles.","type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"People Search - Crustdata v3 output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"People Search - Crustdata v3","tags":["people-search"],"x-mint":{"href":"/api-reference/people-search/crustdata-v3"},"x-payment-info":{"price":{"amount":"0.144000","currency":"USD","mode":"fixed"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"amount":"0.144000","currency":"USD","minimumUsd":"0.001000","mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"amount":"0.144000","currency":"USD","minimumUsd":null,"mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/people_search.fullenrich":{"post":{"description":"Prospect FullEnrich's person database by title, seniority, function, skill, language and location, plus any current or past employer firmographic. Every row carries the person's employer record. Billed per person returned.\n\n**Price:** billed per result - \\$25.20 per 1,000 results, capped at \\$2,520.00 per 1,000 requests.\n\n**Routing:** one lane serves this API today, so a failed attempt has nowhere to fail over to. Payment outcome follows the selected rail's settlement policy.\n\n**Catalog:** [People Search - FullEnrich pricing and uptime](https://getanyapi.com/api/people-search/fullenrich) - live USD price, lane routing, and measured 30-day uptime. [Every People_search endpoint](https://getanyapi.com/api/people-search).","operationId":"people_search_fullenrich","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"currentCompanyDomains":[{"exact_match":true,"value":"stripe.com"}],"limit":1},"schema":{"additionalProperties":false,"example":{"currentCompanyDomains":[{"exact_match":true,"value":"stripe.com"}],"limit":1},"minProperties":1,"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"currentCompanyDomains":{"description":"Filter by current employer domain. Each entry is an object taking a `value` string and an optional `exact_match` boolean, e.g. [{\"value\": \"stripe.com\", \"exact_match\": true}]. A bare string is rejected.","items":{"additionalProperties":true,"properties":{"exact_match":{"description":"Require an exact match rather than a fuzzy one.","type":"boolean"},"value":{"description":"The value to match.","type":"string"}},"type":"object"},"type":"array"},"currentCompanyFoundedYears":{"description":"Filter by current employer founding year. Each entry is an object taking a `value` string and an optional `exact_match` boolean, e.g. [{\"value\": \"stripe.com\", \"exact_match\": true}]. A bare string is rejected.","items":{"additionalProperties":true,"properties":{"exact_match":{"description":"Require an exact match rather than a fuzzy one.","type":"boolean"},"value":{"description":"The value to match.","type":"string"}},"type":"object"},"type":"array"},"currentCompanyHeadcounts":{"description":"Filter by current employer headcount band. Each entry is an object taking a `value` string and an optional `exact_match` boolean, e.g. [{\"value\": \"stripe.com\", \"exact_match\": true}]. A bare string is rejected.","items":{"additionalProperties":true,"properties":{"exact_match":{"description":"Require an exact match rather than a fuzzy one.","type":"boolean"},"value":{"description":"The value to match.","type":"string"}},"type":"object"},"type":"array"},"currentCompanyHeadquarters":{"description":"Filter by current employer headquarters location. Each entry is an object taking a `value` string and an optional `exact_match` boolean, e.g. [{\"value\": \"stripe.com\", \"exact_match\": true}]. A bare string is rejected.","items":{"additionalProperties":true,"properties":{"exact_match":{"description":"Require an exact match rather than a fuzzy one.","type":"boolean"},"value":{"description":"The value to match.","type":"string"}},"type":"object"},"type":"array"},"currentCompanyIds":{"description":"Filter by FullEnrich company id of the current employer. Each entry is an object taking a `value` string and an optional `exact_match` boolean, e.g. [{\"value\": \"stripe.com\", \"exact_match\": true}]. A bare string is rejected.","items":{"additionalProperties":true,"properties":{"exact_match":{"description":"Require an exact match rather than a fuzzy one.","type":"boolean"},"value":{"description":"The value to match.","type":"string"}},"type":"object"},"type":"array"},"currentCompanyIndustries":{"description":"Filter by current employer industry. Each entry is an object taking a `value` string and an optional `exact_match` boolean, e.g. [{\"value\": \"stripe.com\", \"exact_match\": true}]. A bare string is rejected.","items":{"additionalProperties":true,"properties":{"exact_match":{"description":"Require an exact match rather than a fuzzy one.","type":"boolean"},"value":{"description":"The value to match.","type":"string"}},"type":"object"},"type":"array"},"currentCompanyLinkedinUrls":{"description":"Filter by current employer LinkedIn URL. Each entry is an object taking a `value` string and an optional `exact_match` boolean, e.g. [{\"value\": \"stripe.com\", \"exact_match\": true}]. A bare string is rejected.","items":{"additionalProperties":true,"properties":{"exact_match":{"description":"Require an exact match rather than a fuzzy one.","type":"boolean"},"value":{"description":"The value to match.","type":"string"}},"type":"object"},"type":"array"},"currentCompanyNames":{"description":"Filter by current employer name. Each entry is an object taking a `value` string and an optional `exact_match` boolean, e.g. [{\"value\": \"stripe.com\", \"exact_match\": true}]. A bare string is rejected.","items":{"additionalProperties":true,"properties":{"exact_match":{"description":"Require an exact match rather than a fuzzy one.","type":"boolean"},"value":{"description":"The value to match.","type":"string"}},"type":"object"},"type":"array"},"currentCompanySpecialties":{"description":"Filter by a current employer specialty. Each entry is an object taking a `value` string and an optional `exact_match` boolean, e.g. [{\"value\": \"stripe.com\", \"exact_match\": true}]. A bare string is rejected.","items":{"additionalProperties":true,"properties":{"exact_match":{"description":"Require an exact match rather than a fuzzy one.","type":"boolean"},"value":{"description":"The value to match.","type":"string"}},"type":"object"},"type":"array"},"currentCompanyTypes":{"description":"Filter by current employer ownership type. Each entry is an object taking a `value` string and an optional `exact_match` boolean, e.g. [{\"value\": \"stripe.com\", \"exact_match\": true}]. A bare string is rejected.","items":{"additionalProperties":true,"properties":{"exact_match":{"description":"Require an exact match rather than a fuzzy one.","type":"boolean"},"value":{"description":"The value to match.","type":"string"}},"type":"object"},"type":"array"},"currentPositionJobFunctions":{"description":"Filter by current job function. Each entry is an object taking a `value` string and an optional `exact_match` boolean, e.g. [{\"value\": \"stripe.com\", \"exact_match\": true}]. A bare string is rejected.","items":{"additionalProperties":true,"properties":{"exact_match":{"description":"Require an exact match rather than a fuzzy one.","type":"boolean"},"value":{"description":"The value to match.","type":"string"}},"type":"object"},"type":"array"},"currentPositionSeniorityLevel":{"description":"Filter by seniority, e.g. Owner, Founder, C-level, VP, Director, Manager. Each entry is an object taking a `value` string and an optional `exact_match` boolean, e.g. [{\"value\": \"stripe.com\", \"exact_match\": true}]. A bare string is rejected.","items":{"additionalProperties":true,"properties":{"exact_match":{"description":"Require an exact match rather than a fuzzy one.","type":"boolean"},"value":{"description":"The value to match.","type":"string"}},"type":"object"},"type":"array"},"currentPositionSubFunctions":{"description":"Filter by current job sub-function. Each entry is an object taking a `value` string and an optional `exact_match` boolean, e.g. [{\"value\": \"stripe.com\", \"exact_match\": true}]. A bare string is rejected.","items":{"additionalProperties":true,"properties":{"exact_match":{"description":"Require an exact match rather than a fuzzy one.","type":"boolean"},"value":{"description":"The value to match.","type":"string"}},"type":"object"},"type":"array"},"currentPositionTitles":{"description":"Filter by current job title. Each entry is an object taking a `value` string and an optional `exact_match` boolean, e.g. [{\"value\": \"stripe.com\", \"exact_match\": true}]. A bare string is rejected.","items":{"additionalProperties":true,"properties":{"exact_match":{"description":"Require an exact match rather than a fuzzy one.","type":"boolean"},"value":{"description":"The value to match.","type":"string"}},"type":"object"},"type":"array"},"currentPositionYearsIn":{"description":"Filter by years spent in the current position. Each entry is an object taking a `value` string and an optional `exact_match` boolean, e.g. [{\"value\": \"stripe.com\", \"exact_match\": true}]. A bare string is rejected.","items":{"additionalProperties":true,"properties":{"exact_match":{"description":"Require an exact match rather than a fuzzy one.","type":"boolean"},"value":{"description":"The value to match.","type":"string"}},"type":"object"},"type":"array"},"cursor":{"description":"Cursor from a previous response's nextCursor. Works at any depth, including past the 10000 offset ceiling.","type":"string"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"limit":{"default":10,"description":"Rows to return on this page, up to FullEnrich's maximum of 100. Every row returned is billed.","maximum":100,"minimum":1,"type":"integer"},"offset":{"default":0,"description":"Rows to skip. FullEnrich caps offset at 10000; past that, page with cursor.","minimum":0,"type":"integer"},"pastCompanyDomains":{"description":"Filter by the domain of a past employer. Each entry is an object taking a `value` string and an optional `exact_match` boolean, e.g. [{\"value\": \"stripe.com\", \"exact_match\": true}]. A bare string is rejected.","items":{"additionalProperties":true,"properties":{"exact_match":{"description":"Require an exact match rather than a fuzzy one.","type":"boolean"},"value":{"description":"The value to match.","type":"string"}},"type":"object"},"type":"array"},"pastCompanyNames":{"description":"Filter by an employer the person worked at before. Each entry is an object taking a `value` string and an optional `exact_match` boolean, e.g. [{\"value\": \"stripe.com\", \"exact_match\": true}]. A bare string is rejected.","items":{"additionalProperties":true,"properties":{"exact_match":{"description":"Require an exact match rather than a fuzzy one.","type":"boolean"},"value":{"description":"The value to match.","type":"string"}},"type":"object"},"type":"array"},"pastPositionTitles":{"description":"Filter by a job title the person held before. Each entry is an object taking a `value` string and an optional `exact_match` boolean, e.g. [{\"value\": \"stripe.com\", \"exact_match\": true}]. A bare string is rejected.","items":{"additionalProperties":true,"properties":{"exact_match":{"description":"Require an exact match rather than a fuzzy one.","type":"boolean"},"value":{"description":"The value to match.","type":"string"}},"type":"object"},"type":"array"},"personIds":{"description":"Filter by FullEnrich person id. Each entry is an object taking a `value` string and an optional `exact_match` boolean, e.g. [{\"value\": \"stripe.com\", \"exact_match\": true}]. A bare string is rejected.","items":{"additionalProperties":true,"properties":{"exact_match":{"description":"Require an exact match rather than a fuzzy one.","type":"boolean"},"value":{"description":"The value to match.","type":"string"}},"type":"object"},"type":"array"},"personLanguages":{"description":"Filter by a language the person speaks. Each entry is an object taking a `value` string and an optional `exact_match` boolean, e.g. [{\"value\": \"stripe.com\", \"exact_match\": true}]. A bare string is rejected.","items":{"additionalProperties":true,"properties":{"exact_match":{"description":"Require an exact match rather than a fuzzy one.","type":"boolean"},"value":{"description":"The value to match.","type":"string"}},"type":"object"},"type":"array"},"personLinkedinUrls":{"description":"Filter by person LinkedIn URL. Each entry is an object taking a `value` string and an optional `exact_match` boolean, e.g. [{\"value\": \"stripe.com\", \"exact_match\": true}]. A bare string is rejected.","items":{"additionalProperties":true,"properties":{"exact_match":{"description":"Require an exact match rather than a fuzzy one.","type":"boolean"},"value":{"description":"The value to match.","type":"string"}},"type":"object"},"type":"array"},"personLocations":{"description":"Filter by the person's city, region or country. Each entry is an object taking a `value` string and an optional `exact_match` boolean, e.g. [{\"value\": \"stripe.com\", \"exact_match\": true}]. A bare string is rejected.","items":{"additionalProperties":true,"properties":{"exact_match":{"description":"Require an exact match rather than a fuzzy one.","type":"boolean"},"value":{"description":"The value to match.","type":"string"}},"type":"object"},"type":"array"},"personNames":{"description":"Filter by person name. Each entry is an object taking a `value` string and an optional `exact_match` boolean, e.g. [{\"value\": \"stripe.com\", \"exact_match\": true}]. A bare string is rejected.","items":{"additionalProperties":true,"properties":{"exact_match":{"description":"Require an exact match rather than a fuzzy one.","type":"boolean"},"value":{"description":"The value to match.","type":"string"}},"type":"object"},"type":"array"},"personSkills":{"description":"Filter by a skill the person lists. Each entry is an object taking a `value` string and an optional `exact_match` boolean, e.g. [{\"value\": \"stripe.com\", \"exact_match\": true}]. A bare string is rejected.","items":{"additionalProperties":true,"properties":{"exact_match":{"description":"Require an exact match rather than a fuzzy one.","type":"boolean"},"value":{"description":"The value to match.","type":"string"}},"type":"object"},"type":"array"},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true}},"title":"People Search - FullEnrich input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"description":"One page of matching records plus FullEnrich's paging state.","oneOf":[{"type":"null"},{"additionalProperties":false,"properties":{"nextCursor":{"description":"Cursor for the next page, or null when this lane is complete. Send it back as cursor.","type":["string","null"]},"offset":{"description":"Rows skipped before this page.","type":"integer"},"people":{"description":"Matching people, each with their current employer's firmographic record. Email addresses and phone numbers are not included; FullEnrich reveals those through its enrichment endpoints.","items":{"properties":{"city":{"description":"City the person is in.","type":"string"},"company":{"description":"The person's current employer, with FullEnrich's full firmographic record.","properties":{"companyId":{"description":"FullEnrich's own company identifier.","type":"string"},"companyType":{"description":"Ownership type, e.g. Public Company, Privately Held.","type":"string"},"description":{"description":"Company description.","type":"string"},"domain":{"description":"Primary company domain.","type":"string"},"foundedYear":{"description":"Year the company was founded. Zero when FullEnrich holds none.","type":"integer"},"headcount":{"description":"Employees FullEnrich currently counts.","type":"integer"},"headcountRange":{"description":"Employee headcount band, e.g. 5001-10000.","type":"string"},"headquarters":{"description":"Headquarters address.","properties":{"city":{"description":"City.","type":"string"},"country":{"description":"Country name.","type":"string"},"countryCode":{"description":"ISO 3166-1 alpha-2 country code.","type":"string"},"line1":{"description":"First address line.","type":"string"},"line2":{"description":"Second address line, carrying city, region, postal code and country.","type":"string"},"region":{"description":"State or region.","type":"string"}},"type":"object"},"image":{"description":"Company logo URL.","format":"uri","type":"string"},"industry":{"description":"Main industry.","type":"string"},"linkedinFollowers":{"description":"LinkedIn follower count.","type":"integer"},"linkedinHandle":{"description":"Company LinkedIn vanity handle.","type":"string"},"linkedinId":{"description":"Company LinkedIn numeric id.","type":"string"},"linkedinUrl":{"description":"Company LinkedIn page URL.","format":"uri","type":"string"},"name":{"description":"Company name.","type":"string"},"offices":{"description":"Every other office FullEnrich holds for the company.","items":{"properties":{"line1":{"description":"First address line.","type":"string"},"line2":{"description":"Second address line, carrying city, region, postal code and country.","type":"string"}},"type":"object"},"type":"array"},"specialties":{"description":"Specialties the company lists for itself.","items":{"type":"string"},"type":"array"},"website":{"description":"Company website URL.","format":"uri","type":"string"}},"type":"object"},"country":{"description":"Country name.","type":"string"},"countryCode":{"description":"ISO 3166-1 alpha-2 country code.","type":"string"},"description":{"description":"Profile summary text.","type":"string"},"educations":{"description":"Education history.","items":{"properties":{"degree":{"description":"Degree earned.","type":"string"},"endUtc":{"description":"UTC epoch timestamp in seconds (Unix time) study ended. Multiply by 1000 for a JS Date in milliseconds.","type":"number"},"schoolName":{"description":"School name.","type":"string"},"startUtc":{"description":"UTC epoch timestamp in seconds (Unix time) study started. Multiply by 1000 for a JS Date in milliseconds.","type":"number"}},"required":["schoolName"],"type":"object"},"type":"array"},"experience":{"description":"Known employment history.","items":{"properties":{"companyCity":{"description":"Employer headquarters city.","type":"string"},"companyCountry":{"description":"Employer headquarters country.","type":"string"},"companyDescription":{"description":"Employer description.","type":"string"},"companyDomain":{"description":"Employer primary domain.","type":"string"},"companyFoundedYear":{"description":"Year the employer was founded.","type":"integer"},"companyHeadcount":{"description":"Employer headcount.","minimum":0,"type":"integer"},"companyHeadcountRange":{"description":"Employer headcount range, e.g. 5001-10000.","type":"string"},"companyId":{"description":"FullEnrich identifier for the employer.","type":"string"},"companyImage":{"description":"Employer logo URL.","format":"uri","type":"string"},"companyIndustry":{"description":"Employer primary industry.","type":"string"},"companyLinkedinId":{"description":"Employer LinkedIn numeric id.","type":"string"},"companyLinkedinUrl":{"description":"Employer LinkedIn page URL.","format":"uri","type":"string"},"companyName":{"description":"Employer name.","type":"string"},"companyRegion":{"description":"Employer headquarters region or state.","type":"string"},"companyStreet":{"description":"Employer headquarters street address.","type":"string"},"companyType":{"description":"Employer company type, e.g. Privately Held.","type":"string"},"companyWebsite":{"description":"Employer website URL.","format":"uri","type":"string"},"isCurrent":{"description":"Whether this is a current role.","type":"boolean"},"seniority":{"description":"Seniority band for the role.","type":"string"},"startUtc":{"description":"UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds.","type":"number"},"title":{"description":"Role title.","type":"string"}},"type":"object"},"type":"array"},"firstName":{"description":"First name.","type":"string"},"fullName":{"description":"Person's full name.","type":"string"},"headline":{"description":"LinkedIn headline.","type":"string"},"isCurrent":{"description":"True while FullEnrich treats the role as current.","type":"boolean"},"jobStartUtc":{"description":"UTC epoch timestamp in seconds (Unix time) the current role started. Multiply by 1000 for a JS Date in milliseconds.","type":"number"},"jobTitle":{"description":"Current job title.","type":"string"},"languages":{"description":"Languages the person speaks.","items":{"properties":{"language":{"description":"Language name.","type":"string"},"proficiency":{"description":"Proficiency band, e.g. FULL_PROFESSIONAL.","type":"string"}},"required":["language"],"type":"object"},"type":"array"},"lastName":{"description":"Last name.","type":"string"},"linkedinConnections":{"description":"LinkedIn connection count.","type":"integer"},"linkedinHandle":{"description":"LinkedIn vanity handle.","type":"string"},"linkedinId":{"description":"LinkedIn numeric member id.","type":"string"},"linkedinUrl":{"description":"LinkedIn profile URL.","format":"uri","type":"string"},"personId":{"description":"FullEnrich's own person identifier.","type":"string"},"region":{"description":"State or region.","type":"string"},"seniority":{"description":"Seniority band for the current role, e.g. Manager, C-level.","type":"string"},"skills":{"description":"Skills the person lists.","items":{"type":"string"},"type":"array"}},"required":["fullName"],"type":"object"},"type":"array"},"total":{"description":"Rows matching the filters across all pages.","type":"integer"}},"required":["people"],"type":"object"}]},"found":{"description":"False when nothing matched the filters.","type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"People Search - FullEnrich output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"People Search - FullEnrich","tags":["people-search"],"x-mint":{"href":"/api-reference/people-search/fullenrich"},"x-payment-info":{"price":{"currency":"USD","max":"2.520000","min":"0.000000","mode":"dynamic"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"currency":"USD","max":"2.520000","min":"0.001000","minimumUsd":"0.001000","mode":"dynamic","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"currency":"USD","max":"2.520000","min":"0.000000","minimumUsd":null,"mode":"dynamic","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/people_search.lusha":{"post":{"description":"Prospect Lusha's contact database by department, seniority, job title, location, company size, industry and technology. One flat price per page; reveal a contact's email and phone with Person Enrichment - Lusha.\n\n**Price:** \\$84.00 per 1,000 requests (flat per request - same cost regardless of results returned).\n\n**Routing:** one lane serves this API today, so a failed attempt has nowhere to fail over to. Payment outcome follows the selected rail's settlement policy.\n\n**Catalog:** [People Search - Lusha pricing and uptime](https://getanyapi.com/api/people-search/lusha) - live USD price, lane routing, and measured 30-day uptime. [Every People_search endpoint](https://getanyapi.com/api/people-search).","operationId":"people_search_lusha","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"filters":{"companies":{"include":{"names":["PostHog"]}},"contacts":{"include":{"departments":["Engineering \u0026 Technical"]}}},"pages":{"page":0,"size":10}},"schema":{"additionalProperties":false,"example":{"filters":{"companies":{"include":{"names":["PostHog"]}},"contacts":{"include":{"departments":["Engineering \u0026 Technical"]}}},"pages":{"page":0,"size":10}},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"excludeDnc":{"description":"Exclude contacts whose phone numbers are all marked do-not-call.","type":"boolean"},"filters":{"additionalProperties":true,"description":"Prospecting filters. Two keys are accepted, contacts and companies, and each takes an include and an exclude object. contacts.include and contacts.exclude accept departments, seniority, locations, existing_data_points and signals; companies.include and companies.exclude accept names, locations, sizes, revenues, technologies, intentTopics, mainIndustriesIds, subIndustriesIds, naicsCodes and sicCodes. Locations are objects such as {\"country\": \"United States\"}; sizes and revenues are ranges such as {\"min\": 200, \"max\": 500}. Example: {\"companies\": {\"include\": {\"names\": [\"PostHog\"]}}, \"contacts\": {\"include\": {\"departments\": [\"Engineering \u0026 Technical\"]}}}.","properties":{"companies":{"additionalProperties":true,"description":"Company-level include and exclude filters.","type":"object"},"contacts":{"additionalProperties":true,"description":"Person-level include and exclude filters.","type":"object"}},"type":"object"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"includePartialContact":{"description":"Include contacts Lusha holds only partial information for. Defaults to true upstream.","type":"boolean"},"pages":{"additionalProperties":false,"description":"Which page of results to return. Lusha charges one flat price per page whatever its size.","properties":{"page":{"default":0,"description":"Zero-based page number.","minimum":0,"type":"integer"},"size":{"default":10,"description":"Contacts per page. Lusha rejects a size below 10 or above 100.","maximum":100,"minimum":10,"type":"integer"}},"type":"object"},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true}},"required":["filters"],"title":"People Search - Lusha input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"description":"One page of matching contacts plus its paging counters.","oneOf":[{"type":"null"},{"additionalProperties":false,"properties":{"currentPage":{"description":"Zero-based page number this response holds.","type":"integer"},"pageLength":{"description":"Contacts returned on this page.","type":"integer"},"people":{"description":"Contacts on this page. Email addresses and phone numbers are not included here; reveal them with Person Enrichment - Lusha.","items":{"properties":{"available":{"description":"What Lusha holds for this contact and would return on reveal. Every flag is a boolean; privateEmail can also come back as a redaction marker.","properties":{"companyCity":{"description":"Employer city is available.","type":"boolean"},"companyCountry":{"description":"Employer country is available.","type":"boolean"},"companyEmployeesCount":{"description":"Employer headcount is available.","type":"boolean"},"companyFunding":{"description":"Employer funding data is available.","type":"boolean"},"companyIntent":{"description":"Employer buying-intent data is available.","type":"boolean"},"companyMainIndustry":{"description":"Employer top-level industry is available.","type":"boolean"},"companyRevenue":{"description":"Employer revenue is available.","type":"boolean"},"companySubIndustry":{"description":"Employer sub-industry is available.","type":"boolean"},"companyTechnologies":{"description":"Employer technology stack is available.","type":"boolean"},"contactLocation":{"description":"The person's location is available.","type":"boolean"},"department":{"description":"A department is available.","type":"boolean"},"directPhone":{"description":"A direct dial is available.","type":"boolean"},"emails":{"description":"Any email address is available.","type":"boolean"},"mobilePhone":{"description":"A mobile number is available.","type":"boolean"},"phones":{"description":"Any phone number is available.","type":"boolean"},"privateEmail":{"description":"A personal email address is available. Lusha redacts this flag on some plans, in which case it is a string marker rather than a boolean.","type":["boolean","string"]},"seniority":{"description":"A seniority band is available.","type":"boolean"},"socialLink":{"description":"A social profile link is available.","type":"boolean"},"workEmail":{"description":"A work email address is available.","type":"boolean"}},"type":"object"},"companyDescription":{"description":"Employer description.","type":"string"},"companyDomain":{"description":"Fully qualified host for the employer's website.","type":"string"},"companyId":{"description":"Lusha's own company identifier for the employer.","type":"string"},"companyName":{"description":"Employer name.","type":"string"},"contactId":{"description":"Lusha's contact identifier for this search row.","type":"string"},"fullName":{"description":"Person's full name.","type":"string"},"image":{"description":"Employer logo URL.","format":"uri","type":"string"},"isShown":{"description":"True when this contact has already been revealed on the Lusha account.","type":"boolean"},"jobTitle":{"description":"Current job title.","type":"string"},"personId":{"description":"Lusha's own person identifier.","type":"string"}},"required":["fullName"],"type":"object"},"type":"array"},"totalResults":{"description":"Total contacts matching the filters across all pages.","type":"integer"}},"required":["people"],"type":"object"}]},"found":{"description":"False when no contact matched the filters.","type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"People Search - Lusha output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"People Search - Lusha","tags":["people-search"],"x-mint":{"href":"/api-reference/people-search/lusha"},"x-payment-info":{"price":{"amount":"0.084000","currency":"USD","mode":"fixed"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"amount":"0.084000","currency":"USD","minimumUsd":"0.001000","mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"amount":"0.084000","currency":"USD","minimumUsd":null,"mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/people_search.peopledatalabs":{"post":{"description":"Search People Data Labs' person dataset with SQL or an Elasticsearch query. Results carry the professional and firmographic record plus availability flags for contact data; pull the actual email and phone with Person Enrichment - People Data Labs. Billed per profile returned.\n\n**Price:** billed per result - \\$168.00 per 1,000 results, capped at \\$9,912.00 per 1,000 requests.\n\n**Routing:** one lane serves this API today, so a failed attempt has nowhere to fail over to. Payment outcome follows the selected rail's settlement policy.\n\n**Catalog:** [People Search - People Data Labs pricing and uptime](https://getanyapi.com/api/people-search/peopledatalabs) - live USD price, lane routing, and measured 30-day uptime. [Every People_search endpoint](https://getanyapi.com/api/people-search).","operationId":"people_search_peopledatalabs","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"limit":1,"sql":"SELECT * FROM person WHERE job_company_website = 'posthog.com'"},"schema":{"additionalProperties":false,"anyOf":[{"required":["sql"]},{"required":["query"]}],"example":{"limit":1,"sql":"SELECT * FROM person WHERE job_company_website = 'posthog.com'"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"dataInclude":{"description":"Comma-separated People Data Labs fields to include, or a leading - list to exclude. Projection changes the payload only; billing still follows profiles returned.","type":"string"},"dataset":{"description":"People Data Labs dataset to search, when your plan exposes more than one.","type":"string"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"limit":{"default":10,"description":"Maximum profiles to return. Every profile returned is billed, so start at 1 to check a query and read total before asking for more.","maximum":59,"minimum":1,"type":"integer"},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"query":{"additionalProperties":true,"description":"Elasticsearch-style query over the People Data Labs person dataset, e.g. {\"bool\": {\"must\": [{\"term\": {\"job_company_website\": \"posthog.com\"}}]}}. Send this or sql, never both.","type":"object"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"sql":{"description":"People Data Labs SQL, in the form SELECT * FROM person WHERE ... . String literals take single quotes, only SELECT * is supported, and field names must be real People Data Labs person fields including nested subfields such as experience.title.name. Do not include a LIMIT clause; People Data Labs rejects it. Use limit instead. Send this or query, never both.","minLength":1,"type":"string"},"titlecase":{"description":"Return text in title case instead of People Data Labs' lowercase default.","type":"boolean"}},"title":"People Search - People Data Labs input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"description":"The matching profiles plus the total the query matched. People Data Labs paginates with a scroll token that is not exposed here, so a call returns one page and total tells you how much is behind it.","oneOf":[{"type":"null"},{"additionalProperties":false,"properties":{"datasetVersion":{"description":"Version of the People Data Labs dataset these records came from.","type":"string"},"people":{"description":"Matching person profiles, up to limit.","items":{"properties":{"activityScore":{"description":"People Data Labs' qualitative score for how recently the profile showed activity.","type":"string"},"available":{"description":"What People Data Labs holds for this person but does not return in search. Each flag is true when Person Enrichment - People Data Labs would return that field for this profile.","properties":{"birthDate":{"description":"A birth date is available.","type":"boolean"},"birthYear":{"description":"A birth year is available.","type":"boolean"},"facebookId":{"description":"A Facebook numeric id is available.","type":"boolean"},"facebookUrl":{"description":"A Facebook profile URL is available.","type":"boolean"},"facebookUsername":{"description":"A Facebook handle is available.","type":"boolean"},"githubUrl":{"description":"A GitHub profile URL is available.","type":"boolean"},"githubUsername":{"description":"A GitHub handle is available.","type":"boolean"},"locationAddressLine2":{"description":"A second address line is available.","type":"boolean"},"locationStreetAddress":{"description":"The current street address is available.","type":"boolean"},"mobilePhone":{"description":"A mobile phone number is available.","type":"boolean"},"personalEmails":{"description":"Personal email addresses are available.","type":"boolean"},"phoneNumbers":{"description":"Phone numbers are available.","type":"boolean"},"recommendedPersonalEmail":{"description":"A recommended personal email address is available.","type":"boolean"},"streetAddresses":{"description":"Street addresses are available.","type":"boolean"},"twitterUrl":{"description":"An X (Twitter) profile URL is available.","type":"boolean"},"twitterUsername":{"description":"An X (Twitter) handle is available.","type":"boolean"},"workEmail":{"description":"A work email address is available.","type":"boolean"}},"type":"object"},"companyAddressLine2":{"description":"Second line of the current employer's headquarters address.","type":"string"},"companyContinent":{"description":"Current employer headquarters continent.","type":"string"},"companyFacebookUrl":{"description":"Current employer Facebook page URL.","format":"uri","type":"string"},"companyFounded":{"description":"Year the current employer was founded.","type":"integer"},"companyGeo":{"description":"Current employer headquarters coordinates as \"lat,lon\".","type":"string"},"companyId":{"description":"People Data Labs company id for the current employer.","type":"string"},"companyIndustry":{"description":"Current employer industry.","type":"string"},"companyIndustryV2":{"description":"Current employer industry on People Data Labs' newer taxonomy.","type":"string"},"companyLinkedinId":{"description":"Current employer LinkedIn numeric id.","type":"string"},"companyLinkedinUrl":{"description":"Current employer LinkedIn page URL.","format":"uri","type":"string"},"companyLocality":{"description":"Current employer headquarters city.","type":"string"},"companyLocationCountry":{"description":"Current employer headquarters country.","type":"string"},"companyLocationName":{"description":"Current employer headquarters as one display string.","type":"string"},"companyMetro":{"description":"Current employer headquarters metro area.","type":"string"},"companyName":{"description":"Current employer name.","type":"string"},"companyPostalCode":{"description":"Current employer headquarters postal code.","type":"string"},"companyRegion":{"description":"Current employer headquarters state or region.","type":"string"},"companySize":{"description":"Current employer headcount band.","type":"string"},"companyStreetAddress":{"description":"Current employer headquarters street address.","type":"string"},"companyTwitterUrl":{"description":"Current employer X (Twitter) profile URL.","format":"uri","type":"string"},"companyWebsite":{"description":"Current employer website domain.","type":"string"},"continent":{"description":"Continent.","type":"string"},"countries":{"description":"Every country associated with the person.","items":{"type":"string"},"type":"array"},"country":{"description":"Country.","type":"string"},"education":{"description":"Education history.","items":{"properties":{"degrees":{"description":"Degrees earned.","items":{"type":"string"},"type":"array"},"endDate":{"description":"When study ended.","type":"string"},"gpa":{"description":"Grade point average, when published.","type":"number"},"majors":{"description":"Majors studied.","items":{"type":"string"},"type":"array"},"minors":{"description":"Minors studied.","items":{"type":"string"},"type":"array"},"schoolId":{"description":"PeopleDataLabs identifier for the school.","type":"string"},"schoolLinkedinUrl":{"description":"School LinkedIn page URL.","format":"uri","type":"string"},"schoolLocationName":{"description":"School location as one display string.","type":"string"},"schoolName":{"description":"School name.","type":"string"},"schoolType":{"description":"School type.","type":"string"},"schoolWebsite":{"description":"School website domain.","type":"string"},"startDate":{"description":"When study started.","type":"string"}},"type":"object"},"type":"array"},"emails":{"description":"One entry per email address People Data Labs holds for the person. Search returns the kind only; the address itself comes from Person Enrichment - People Data Labs.","items":{"properties":{"type":{"description":"Address kind, e.g. professional or personal.","type":"string"}},"type":"object"},"type":"array"},"experience":{"description":"Work history.","items":{"properties":{"companyContinent":{"description":"Employer headquarters continent.","type":"string"},"companyFacebookUrl":{"description":"Employer Facebook page URL.","format":"uri","type":"string"},"companyFounded":{"description":"Year the employer was founded.","type":"integer"},"companyGeo":{"description":"Employer headquarters coordinates as \"lat,lon\".","type":"string"},"companyId":{"description":"People Data Labs company id for the employer.","type":"string"},"companyIndustry":{"description":"Employer industry.","type":"string"},"companyIndustryV2":{"description":"Employer industry on the newer PeopleDataLabs taxonomy.","type":"string"},"companyLinkedinId":{"description":"Employer LinkedIn numeric id.","type":"string"},"companyLinkedinUrl":{"description":"Employer LinkedIn page URL.","format":"uri","type":"string"},"companyLocality":{"description":"Employer headquarters locality.","type":"string"},"companyLocationCountry":{"description":"Employer headquarters country.","type":"string"},"companyLocationName":{"description":"Employer headquarters location as one display string.","type":"string"},"companyMetro":{"description":"Employer headquarters metro area.","type":"string"},"companyName":{"description":"Employer name.","type":"string"},"companyRegion":{"description":"Employer headquarters region or state.","type":"string"},"companySize":{"description":"Employer headcount band.","type":"string"},"companyTwitterUrl":{"description":"Employer X or Twitter profile URL.","format":"uri","type":"string"},"companyWebsite":{"description":"Employer website domain.","type":"string"},"endDate":{"description":"When the role ended, absent while the role is current.","type":"string"},"isPrimary":{"description":"True for the role People Data Labs treats as current.","type":"boolean"},"startDate":{"description":"When the role started: YYYY, YYYY-MM or YYYY-MM-DD.","type":"string"},"title":{"description":"Job title held.","type":"string"},"titleClass":{"description":"Normalized job class.","type":"string"},"titleLevels":{"description":"Seniority levels for the title.","items":{"type":"string"},"type":"array"},"titleRole":{"description":"Normalized role for the title.","type":"string"},"titleSubRole":{"description":"Normalized job sub-role.","type":"string"}},"type":"object"},"type":"array"},"firstName":{"description":"First name.","type":"string"},"fullName":{"description":"Person's full name.","type":"string"},"geo":{"description":"Coordinates as \"lat,lon\".","type":"string"},"industry":{"description":"Industry the person works in.","type":"string"},"interests":{"description":"Interests the person lists.","items":{"type":"string"},"type":"array"},"jobChangedUtc":{"description":"UTC epoch timestamp in seconds (Unix time) the person last changed jobs. Multiply by 1000 for a JS Date in milliseconds.","type":"number"},"jobStartDate":{"description":"When the current role started: YYYY, YYYY-MM or YYYY-MM-DD.","type":"string"},"jobTitle":{"description":"Current job title.","type":"string"},"jobTitleClass":{"description":"Normalized title class.","type":"string"},"jobTitleLevels":{"description":"Seniority levels for the current title.","items":{"type":"string"},"type":"array"},"jobTitleRole":{"description":"Normalized role for the current title.","type":"string"},"jobTitleSubRole":{"description":"Normalized sub-role for the current title.","type":"string"},"jobVerifiedUtc":{"description":"UTC epoch timestamp in seconds (Unix time) the current role was last verified. Multiply by 1000 for a JS Date in milliseconds.","type":"number"},"lastInitial":{"description":"Last initial.","type":"string"},"lastName":{"description":"Last name.","type":"string"},"linkedinId":{"description":"LinkedIn numeric member id.","type":"string"},"linkedinUrl":{"description":"LinkedIn profile URL.","format":"uri","type":"string"},"linkedinUsername":{"description":"LinkedIn vanity handle.","type":"string"},"locality":{"description":"City.","type":"string"},"locationName":{"description":"Where the person lives, as one display string.","type":"string"},"locationNames":{"description":"Every location People Data Labs has associated with the person.","items":{"type":"string"},"type":"array"},"locationUpdatedUtc":{"description":"UTC epoch timestamp in seconds (Unix time) the person's location was last updated. Multiply by 1000 for a JS Date in milliseconds.","type":"number"},"metro":{"description":"Metro area.","type":"string"},"middleInitial":{"description":"Middle initial.","type":"string"},"middleName":{"description":"Middle name.","type":"string"},"pdlId":{"description":"People Data Labs persistent person id. Send it to Person Enrichment - People Data Labs to re-pull this record.","type":"string"},"postalCode":{"description":"Postal code.","type":"string"},"profileScore":{"description":"People Data Labs' qualitative score for how complete the profile is.","type":"string"},"profiles":{"description":"Networks People Data Labs has a profile for. Search returns the network name only; profile URLs and handles come from Person Enrichment - People Data Labs.","items":{"properties":{"network":{"description":"Network name, e.g. linkedin, facebook, twitter.","type":"string"}},"required":["network"],"type":"object"},"type":"array"},"region":{"description":"State or region.","type":"string"},"regions":{"description":"Every region associated with the person.","items":{"type":"string"},"type":"array"},"sex":{"description":"Sex recorded for the person.","type":"string"},"skills":{"description":"Skills the person lists.","items":{"type":"string"},"type":"array"}},"required":["fullName"],"type":"object"},"type":"array"},"total":{"description":"Profiles matching the query across the whole dataset, not just this page.","type":"integer"}},"required":["people"],"type":"object"}]},"found":{"description":"False when the query matched no profile.","type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"People Search - People Data Labs output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"People Search - People Data Labs","tags":["people-search"],"x-mint":{"href":"/api-reference/people-search/peopledatalabs"},"x-payment-info":{"price":{"currency":"USD","max":"9.912000","min":"0.000000","mode":"dynamic"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"currency":"USD","max":"9.912000","min":"0.001000","minimumUsd":"0.001000","mode":"dynamic","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"currency":"USD","max":"9.912000","min":"0.000000","minimumUsd":null,"mode":"dynamic","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/people_search.prospeo":{"post":{"description":"Prospect Prospeo's contact database by job title, department, seniority, experience, location and any company firmographic. One flat price per page of 25.\n\n**Price:** \\$66.00 per 1,000 requests (flat per request - same cost regardless of results returned).\n\n**Routing:** one lane serves this API today, so a failed attempt has nowhere to fail over to. Payment outcome follows the selected rail's settlement policy.\n\n**Catalog:** [People Search - Prospeo pricing and uptime](https://getanyapi.com/api/people-search/prospeo) - live USD price, lane routing, and measured 30-day uptime. [Every People_search endpoint](https://getanyapi.com/api/people-search).","operationId":"people_search_prospeo","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"company":{"websites":{"include":["stripe.com"]}},"page":1},"schema":{"additionalProperties":false,"example":{"company":{"websites":{"include":["stripe.com"]}},"page":1},"minProperties":1,"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"company":{"additionalProperties":true,"description":"Filter by company names or websites, e.g. {\"names\": {\"include\": [\"Stripe\"]}, \"websites\": {\"include\": [\"stripe.com\"]}}.","type":"object"},"companyAttributes":{"additionalProperties":true,"description":"Filter by company characteristics, e.g. B2B, has pricing, has a free trial.","type":"object"},"companyEmailProvider":{"description":"Filter by the company's email MX provider.","items":{"type":"string"},"type":"array"},"companyFounded":{"additionalProperties":true,"description":"Filter by founding year range.","type":"object"},"companyFunding":{"additionalProperties":true,"description":"Filter by funding stage or amount raised.","type":"object"},"companyHeadcountByDepartment":{"description":"Filter by headcount within a department.","items":{"type":"string"},"type":"array"},"companyHeadcountCustom":{"additionalProperties":true,"description":"Filter by a custom employee count range.","type":"object"},"companyHeadcountGrowth":{"additionalProperties":true,"description":"Filter by headcount growth.","type":"object"},"companyHeadcountRange":{"description":"Filter by Prospeo's predefined employee count bands.","items":{"type":"string"},"type":"array"},"companyIndustry":{"additionalProperties":true,"description":"Filter by company industry.","type":"object"},"companyJobPostingHiringFor":{"description":"Filter by the roles the company is currently hiring for.","items":{"type":"string"},"type":"array"},"companyJobPostingQuantity":{"additionalProperties":true,"description":"Filter by how many roles the company has open.","type":"object"},"companyKeywords":{"additionalProperties":true,"description":"Filter by keywords found in company data.","type":"object"},"companyLocationSearch":{"additionalProperties":true,"description":"Filter by company headquarters location.","type":"object"},"companyNaics":{"additionalProperties":true,"description":"Filter by NAICS codes.","type":"object"},"companyRevenue":{"additionalProperties":true,"description":"Filter by revenue range.","type":"object"},"companySics":{"additionalProperties":true,"description":"Filter by SIC codes.","type":"object"},"companyTechnology":{"additionalProperties":true,"description":"Filter by technologies the company uses.","type":"object"},"companyType":{"description":"Filter by ownership type.","enum":["Private","Public","Non Profit","Other"],"type":"string"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"maxPersonPerCompany":{"description":"Cap how many people one company may contribute to the results.","minimum":1,"type":"integer"},"page":{"default":1,"description":"Page number, one-based. Prospeo returns 25 results per page and charges one flat price per page.","minimum":1,"type":"integer"},"personContactDetails":{"additionalProperties":true,"description":"Filter by which contact channels Prospeo holds for the person.","type":"object"},"personDepartment":{"additionalProperties":true,"description":"Filter by department.","type":"object"},"personDuplicateControl":{"additionalProperties":true,"description":"Duplicate-control settings exported from the Prospeo dashboard.","type":"object"},"personJobTitle":{"additionalProperties":true,"description":"Filter by job title, with exact, contains and boolean semantics, e.g. {\"include\": [\"VP Sales\"]}.","type":"object"},"personLocationSearch":{"additionalProperties":true,"description":"Filter by where the person is located.","type":"object"},"personName":{"additionalProperties":true,"description":"Filter by person name.","type":"object"},"personNameOrJobTitle":{"description":"Free-text search across person name and job title.","type":"string"},"personSeniority":{"additionalProperties":true,"description":"Filter by seniority. Prospeo's own values are case sensitive: Founder/Owner, C-Suite, Partner, Vice President, Head, Director, Manager, Senior, Entry, Intern. Common aliases such as vp and founder are normalized before the call.","type":"object"},"personTimeInCurrentCompany":{"additionalProperties":true,"description":"Filter by time at the current company, as a numeric range.","type":"object"},"personTimeInCurrentRole":{"additionalProperties":true,"description":"Filter by time in the current role, as a numeric range.","type":"object"},"personYearOfExperience":{"additionalProperties":true,"description":"Filter by total years of experience, as a numeric range.","type":"object"},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true}},"title":"People Search - Prospeo input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"description":"One page of matching records plus Prospeo's paging counters.","oneOf":[{"type":"null"},{"additionalProperties":false,"properties":{"currentPage":{"description":"Page number this response holds, one-based.","type":"integer"},"people":{"description":"Matching people, each with their current employer's firmographic record. Email addresses and mobile numbers come back masked; reveal them with Person Enrichment - Prospeo.","items":{"properties":{"company":{"description":"The person's current employer, with Prospeo's full firmographic record.","properties":{"attributes":{"description":"What Prospeo detects about how the company sells.","properties":{"hasDemo":{"description":"The website offers a demo.","type":"boolean"},"hasDownloadable":{"description":"The website offers a download.","type":"boolean"},"hasFreeTrial":{"description":"The website offers a free trial.","type":"boolean"},"hasMobileApps":{"description":"The company publishes mobile apps.","type":"boolean"},"hasOnlineReviews":{"description":"The company has online reviews.","type":"boolean"},"hasPricing":{"description":"The website publishes pricing.","type":"boolean"},"isB2b":{"description":"The company sells to businesses.","type":"boolean"}},"type":"object"},"companyId":{"description":"Prospeo's own company identifier. Send it back as this SKU's companyId input.","type":"string"},"crunchbaseUrl":{"description":"Company Crunchbase profile URL.","format":"uri","type":"string"},"description":{"description":"Company description as the company writes it.","type":"string"},"descriptionAi":{"description":"Prospeo's own AI-written company summary.","type":"string"},"descriptionSeo":{"description":"Meta description from the company's website.","type":"string"},"domain":{"description":"Primary company domain.","type":"string"},"emailTech":{"description":"How the company's email is hosted.","properties":{"domain":{"description":"Domain the company's email addresses use.","type":"string"},"mxProvider":{"description":"Mail provider behind the domain's MX records.","type":"string"}},"type":"object"},"employeeCount":{"description":"Employees Prospeo currently counts.","type":"integer"},"employeeCountOnProspeo":{"description":"Employees of this company that Prospeo holds a profile for.","type":"integer"},"employeeRange":{"description":"Employee headcount band, e.g. 10000+.","type":"string"},"facebookUrl":{"description":"Company Facebook page URL.","format":"uri","type":"string"},"founded":{"description":"Year the company was founded.","type":"integer"},"funding":{"description":"Funding history.","properties":{"events":{"description":"One entry per funding round.","items":{"properties":{"amount":{"description":"Amount raised in USD.","type":"number"},"amountPrinted":{"description":"Amount raised as a display string.","type":"string"},"link":{"description":"Source URL for the round.","format":"uri","type":"string"},"raisedUtc":{"description":"UTC epoch timestamp in seconds (Unix time) the round closed. Multiply by 1000 for a JS Date in milliseconds.","type":"number"},"stage":{"description":"Round stage, e.g. Series E-J.","type":"string"}},"type":"object"},"type":"array"},"latestStage":{"description":"Most recent funding stage.","type":"string"},"latestUtc":{"description":"UTC epoch timestamp in seconds (Unix time) of the most recent round. Multiply by 1000 for a JS Date in milliseconds.","type":"number"},"rounds":{"description":"Number of funding rounds raised.","type":"integer"},"totalRaised":{"description":"Total capital raised, in USD.","type":"number"},"totalRaisedPrinted":{"description":"Total capital raised as a display string.","type":"string"}},"type":"object"},"image":{"description":"Company logo URL.","format":"uri","type":"string"},"industry":{"description":"Company industry.","type":"string"},"instagramUrl":{"description":"Company Instagram profile URL.","format":"uri","type":"string"},"jobPostings":{"description":"Open roles Prospeo currently sees for the company.","properties":{"activeCount":{"description":"Open roles currently posted.","type":"integer"},"activeTitles":{"description":"Titles of the open roles.","items":{"type":"string"},"type":"array"}},"type":"object"},"keywords":{"description":"Keywords Prospeo assigns the company.","items":{"type":"string"},"type":"array"},"linkedinId":{"description":"Company LinkedIn numeric id.","type":"string"},"linkedinUrl":{"description":"Company LinkedIn page URL.","format":"uri","type":"string"},"location":{"description":"Company headquarters.","properties":{"city":{"description":"City.","type":"string"},"country":{"description":"Country name.","type":"string"},"countryCode":{"description":"ISO 3166-1 alpha-2 country code.","type":"string"},"rawAddress":{"description":"Headquarters address as one display string.","type":"string"},"state":{"description":"State or region.","type":"string"}},"type":"object"},"naicsCodes":{"description":"NAICS classification codes for the company.","items":{"type":"string"},"type":"array"},"name":{"description":"Company name.","type":"string"},"otherWebsites":{"description":"Other domains the company owns.","items":{"type":"string"},"type":"array"},"phoneHq":{"description":"Headquarters switchboard number.","properties":{"country":{"description":"Country the number belongs to.","type":"string"},"countryCode":{"description":"ISO 3166-1 alpha-2 code for that country.","type":"string"},"international":{"description":"Number in international format.","type":"string"},"national":{"description":"Number in national format.","type":"string"},"phone":{"description":"Phone number as Prospeo stores it.","type":"string"}},"type":"object"},"revenueRange":{"description":"Annual revenue band in USD.","properties":{"max":{"description":"Upper bound in USD.","type":"number"},"min":{"description":"Lower bound in USD.","type":"number"}},"type":"object"},"revenueRangePrinted":{"description":"Annual revenue band as a display string.","type":"string"},"sicCodes":{"description":"SIC classification codes for the company.","items":{"type":"string"},"type":"array"},"technologies":{"description":"Technologies Prospeo detects in the company's stack.","items":{"type":"string"},"type":"array"},"twitterUrl":{"description":"Company X (Twitter) profile URL.","format":"uri","type":"string"},"type":{"description":"Ownership type, e.g. Private, Public, Non Profit.","type":"string"},"website":{"description":"Company website URL.","format":"uri","type":"string"},"youtubeUrl":{"description":"Company YouTube channel URL.","format":"uri","type":"string"}},"type":"object"},"email":{"description":"Work email address. Prospeo returns the address only once it is revealed; status says why it is absent otherwise.","properties":{"email":{"description":"The email address, when Prospeo revealed one.","type":"string"},"mxProvider":{"description":"Mail provider behind the address domain, e.g. Google.","type":"string"},"revealed":{"description":"True when the address below is the full value rather than a masked preview.","type":"boolean"},"status":{"description":"Prospeo's verdict for the address, e.g. VERIFIED or UNAVAILABLE.","type":"string"}},"type":"object"},"firstName":{"description":"First name.","type":"string"},"fullName":{"description":"Person's full name.","type":"string"},"headline":{"description":"LinkedIn headline.","type":"string"},"jobChangeDetectedUtc":{"description":"UTC epoch timestamp in seconds (Unix time) Prospeo last detected a job change. Multiply by 1000 for a JS Date in milliseconds.","type":"number"},"jobHistory":{"description":"Every role Prospeo holds for the person, most recent first.","items":{"properties":{"companyId":{"description":"Prospeo company id for the employer.","type":"string"},"companyName":{"description":"Employer name.","type":"string"},"current":{"description":"True while the role is current.","type":"boolean"},"departments":{"description":"Departments Prospeo assigns the role.","items":{"type":"string"},"type":"array"},"durationMonths":{"description":"How long the role has run, in months.","type":"integer"},"endMonth":{"description":"Month the role ended, absent while current.","type":"integer"},"endYear":{"description":"Year the role ended, absent while current.","type":"integer"},"jobKey":{"description":"Prospeo's identifier for this role.","type":"string"},"seniority":{"description":"Seniority band, e.g. C-Suite, Manager, Entry.","type":"string"},"startMonth":{"description":"Month the role started, 1 to 12.","type":"integer"},"startYear":{"description":"Year the role started.","type":"integer"},"title":{"description":"Job title held.","type":"string"}},"type":"object"},"type":"array"},"jobKey":{"description":"Prospeo's identifier for the current role.","type":"string"},"jobTitle":{"description":"Current job title.","type":"string"},"lastName":{"description":"Last name.","type":"string"},"linkedinMemberId":{"description":"LinkedIn numeric member id.","type":"string"},"linkedinUrl":{"description":"LinkedIn profile URL.","format":"uri","type":"string"},"location":{"description":"Where the person is located.","properties":{"city":{"description":"City.","type":"string"},"country":{"description":"Country name.","type":"string"},"countryCode":{"description":"ISO 3166-1 alpha-2 country code.","type":"string"},"state":{"description":"State or region.","type":"string"},"timeZone":{"description":"IANA time zone, e.g. America/New_York.","type":"string"},"timeZoneOffset":{"description":"Current offset from UTC in hours.","type":"number"}},"type":"object"},"mobile":{"description":"Mobile phone number. Digits are masked until the number is revealed; send enrichMobile to reveal it.","properties":{"country":{"description":"Country the number belongs to.","type":"string"},"countryCode":{"description":"ISO 3166-1 alpha-2 code for that country.","type":"string"},"international":{"description":"Number in international format.","type":"string"},"mobile":{"description":"The number as Prospeo stores it.","type":"string"},"national":{"description":"Number in national format.","type":"string"},"revealed":{"description":"True when the digits below are the full number rather than a masked preview.","type":"boolean"},"status":{"description":"Prospeo's verdict for the number, e.g. VERIFIED or UNAVAILABLE.","type":"string"}},"type":"object"},"personId":{"description":"Prospeo's own person identifier. Send it back as this SKU's personId input.","type":"string"},"skills":{"description":"Skills the person lists.","items":{"type":"string"},"type":"array"}},"required":["fullName"],"type":"object"},"type":"array"},"perPage":{"description":"Results Prospeo returns per page. Prospeo fixes this at 25 and charges one flat price per page.","type":"integer"},"totalCount":{"description":"Results matching the filters across all pages.","type":"integer"},"totalPages":{"description":"Pages of results behind these filters.","type":"integer"}},"required":["people"],"type":"object"}]},"found":{"description":"False when no record matched the filters.","type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"People Search - Prospeo output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"People Search - Prospeo","tags":["people-search"],"x-mint":{"href":"/api-reference/people-search/prospeo"},"x-payment-info":{"price":{"amount":"0.066000","currency":"USD","mode":"fixed"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"amount":"0.066000","currency":"USD","minimumUsd":"0.001000","mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"amount":"0.066000","currency":"USD","minimumUsd":null,"mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/people_search.quickenrich":{"post":{"description":"Build a prospect list by title, industry, headcount, revenue, or location, and see which people have a work email or phone on file before you pay to reveal one. Contact values themselves are masked here; use Person Enrichment or the QuickEnrich company contacts search to resolve them.\n\n**Price:** \\$0.50 per 1,000 requests (flat per request - same cost regardless of results returned).\n\n**Routing:** one lane serves this API today, so a failed attempt has nowhere to fail over to. Payment outcome follows the selected rail's settlement policy.\n\n**Catalog:** [People Search - QuickEnrich pricing and uptime](https://getanyapi.com/api/people-search/quickenrich) - live USD price, lane routing, and measured 30-day uptime. [Every People_search endpoint](https://getanyapi.com/api/people-search).","operationId":"people_search_quickenrich","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"country":{"include":["US"]},"hasEmail":true,"limit":2,"title":{"include":["CEO"]}},"schema":{"additionalProperties":false,"anyOf":[{"required":["title"]},{"required":["companyName"]},{"required":["companyDomain"]},{"required":["industry"]},{"required":["employeeCount"]},{"required":["revenue"]},{"required":["services"]},{"required":["city"]},{"required":["locality"]},{"required":["country"]},{"required":["linkedinBio"]},{"required":["hasEmail"]},{"required":["hasPhone"]}],"description":"At least one filter is required: any include/exclude dimension, hasEmail, or hasPhone.","example":{"country":{"include":["US"]},"hasEmail":true,"limit":2,"title":{"include":["CEO"]}},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"city":{"additionalProperties":false,"description":"Filter on city name.","properties":{"exclude":{"description":"Reject any of these values.","items":{"type":"string"},"maxItems":50,"type":"array"},"include":{"description":"Match any of these values.","items":{"type":"string"},"maxItems":50,"type":"array"}},"type":"object"},"companyDomain":{"additionalProperties":false,"description":"Filter on employer website domain.","properties":{"exclude":{"description":"Reject any of these values.","items":{"type":"string"},"maxItems":50,"type":"array"},"include":{"description":"Match any of these values.","items":{"type":"string"},"maxItems":50,"type":"array"}},"type":"object"},"companyName":{"additionalProperties":false,"description":"Filter on employer name.","properties":{"exclude":{"description":"Reject any of these values.","items":{"type":"string"},"maxItems":50,"type":"array"},"include":{"description":"Match any of these values.","items":{"type":"string"},"maxItems":50,"type":"array"}},"type":"object"},"country":{"additionalProperties":false,"description":"Filter on ISO 3166-1 alpha-2 country code, e.g. \"US\".","properties":{"exclude":{"description":"Reject any of these values.","items":{"type":"string"},"maxItems":50,"type":"array"},"include":{"description":"Match any of these values.","items":{"type":"string"},"maxItems":50,"type":"array"}},"type":"object"},"employeeCount":{"additionalProperties":false,"description":"Filter on employer headcount band. These bands differ from the companyEmployeeCount string returned on a result.","properties":{"exclude":{"description":"Reject any of these values.","items":{"enum":["\u003c 5","5 - 19","20 - 99","100 - 249","250 - 499","500 - 999","1000 - 4999","5000 - 9999","\u003e10000","Not Available"],"type":"string"},"maxItems":50,"type":"array"},"include":{"description":"Match any of these values.","items":{"enum":["\u003c 5","5 - 19","20 - 99","100 - 249","250 - 499","500 - 999","1000 - 4999","5000 - 9999","\u003e10000","Not Available"],"type":"string"},"maxItems":50,"type":"array"}},"type":"object"},"hasEmail":{"description":"Keep only people with a work email on file. The address itself is not returned here.","type":"boolean"},"hasPhone":{"description":"Keep only people with a phone on file. The number itself is not returned here.","type":"boolean"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"industry":{"additionalProperties":false,"description":"Filter on the employer's LinkedIn industry label. Values must match the QuickEnrich industry vocabulary exactly, e.g. \"IT Services and IT Consulting\".","properties":{"exclude":{"description":"Reject any of these values.","items":{"type":"string"},"maxItems":50,"type":"array"},"include":{"description":"Match any of these values.","items":{"type":"string"},"maxItems":50,"type":"array"}},"type":"object"},"limit":{"default":10,"description":"Maximum people to return on this page.","maximum":100,"minimum":1,"type":"integer"},"linkedinBio":{"additionalProperties":false,"description":"Filter on words found in the employer's LinkedIn bio.","properties":{"exclude":{"description":"Reject any of these values.","items":{"type":"string"},"maxItems":50,"type":"array"},"include":{"description":"Match any of these values.","items":{"type":"string"},"maxItems":50,"type":"array"}},"type":"object"},"locality":{"additionalProperties":false,"description":"Filter on locality.","properties":{"exclude":{"description":"Reject any of these values.","items":{"type":"string"},"maxItems":50,"type":"array"},"include":{"description":"Match any of these values.","items":{"type":"string"},"maxItems":50,"type":"array"}},"type":"object"},"page":{"default":1,"description":"One-based result page.","minimum":1,"type":"integer"},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"revenue":{"additionalProperties":false,"description":"Filter on employer revenue band.","properties":{"exclude":{"description":"Reject any of these values.","items":{"enum":["\u003c 500k","500k - 1 Million","1 - 2.5 Million","2.5 - 5 Million","5 - 10 Million","10 - 20 Million","20 - 50 Million","50 - 100 Million","100 - 500 Million","500 Million - 1 Billion","\u003e1 Billion","Not Available"],"type":"string"},"maxItems":50,"type":"array"},"include":{"description":"Match any of these values.","items":{"enum":["\u003c 500k","500k - 1 Million","1 - 2.5 Million","2.5 - 5 Million","5 - 10 Million","10 - 20 Million","20 - 50 Million","50 - 100 Million","100 - 500 Million","500 Million - 1 Billion","\u003e1 Billion","Not Available"],"type":"string"},"maxItems":50,"type":"array"}},"type":"object"},"services":{"additionalProperties":false,"description":"Filter on the services the employer lists.","properties":{"exclude":{"description":"Reject any of these values.","items":{"type":"string"},"maxItems":50,"type":"array"},"include":{"description":"Match any of these values.","items":{"type":"string"},"maxItems":50,"type":"array"}},"type":"object"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"title":{"additionalProperties":false,"description":"Filter on job title.","properties":{"exclude":{"description":"Reject any of these values.","items":{"type":"string"},"maxItems":50,"type":"array"},"include":{"description":"Match any of these values.","items":{"type":"string"},"maxItems":50,"type":"array"}},"type":"object"}},"title":"People Search - QuickEnrich input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"description":"One page of results, or null when the request matched nothing.","oneOf":[{"type":"null"},{"additionalProperties":false,"properties":{"hasMore":{"description":"Whether the upstream reports further pages beyond this one.","type":"boolean"},"page":{"description":"One-based page this response covers.","type":"integer"},"pageSize":{"description":"Records per page upstream applied.","type":"integer"},"people":{"description":"People on this page.","items":{"properties":{"address":{"description":"Street address on the employer record.","type":"string"},"addressLine2":{"description":"Second address line on the employer record.","type":"string"},"city":{"description":"City on the employer record.","type":"string"},"companyDomain":{"description":"Employer website domain.","type":"string"},"companyEmail":{"description":"Public address published on the employer home page.","type":"string"},"companyEmployeeCount":{"description":"Employer headcount band, e.g. \"20 - 99\". Upstream band vocabulary; \"Not Available\" means the band is unknown.","type":"string"},"companyIndustry":{"description":"Employer industry label.","type":"string"},"companyLinkedinUrl":{"description":"Employer LinkedIn company URL.","type":"string"},"companyName":{"description":"Employer name.","type":"string"},"companyPhone":{"description":"Employer main phone line.","type":"string"},"companyRevenue":{"description":"Employer revenue band, e.g. \"1 - 2.5 Million\". Upstream band vocabulary; \"Not Available\" means the band is unknown.","type":"string"},"country":{"description":"ISO 3166-1 alpha-2 country code on the employer record.","type":"string"},"emailDomain":{"description":"Domain the work email resolves to.","type":"string"},"empId":{"description":"QuickEnrich's stable record id for this person, for de-duplicating across pages.","type":"string"},"firstName":{"description":"Person's first name.","type":"string"},"hasEmail":{"description":"Whether a work email is held for this person. The address itself is masked on this SKU.","type":"boolean"},"hasLinkedin":{"description":"Whether a LinkedIn profile is held for this person.","type":"boolean"},"hasPhone":{"description":"Whether a phone is held for this person. The number itself is masked on this SKU.","type":"boolean"},"lastName":{"description":"Person's last name.","type":"string"},"linkedinUrl":{"description":"Person's LinkedIn profile URL.","type":"string"},"locality":{"description":"Locality on the employer record.","type":"string"},"postalCode":{"description":"Postal code on the employer record.","type":"string"},"region":{"description":"State or region code on the employer record.","type":"string"},"title":{"description":"Person's job title.","type":"string"}},"required":["firstName","hasEmail","hasPhone","hasLinkedin"],"type":"object"},"type":"array"},"total":{"description":"Total records matching the request.","type":"integer"},"totalPages":{"description":"Total pages available.","type":"integer"}},"required":["people","page","pageSize","total","totalPages","hasMore"],"type":"object"}]},"found":{"description":"False when the filters matched no people.","type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"People Search - QuickEnrich output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"People Search - QuickEnrich","tags":["people-search"],"x-mint":{"href":"/api-reference/people-search/quickenrich"},"x-payment-info":{"price":{"amount":"0.000500","currency":"USD","mode":"fixed"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"amount":"0.001000","currency":"USD","minimumUsd":"0.001000","mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"amount":"0.000500","currency":"USD","minimumUsd":null,"mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/people_search.quickenrich_company":{"post":{"description":"List the known contacts at one company domain, with work emails and direct phone lines where they are held. Returns up to 20 people per page for a flat per-request price. Coverage is strongest for small and local businesses.\n\n**Price:** \\$7.20 per 1,000 requests (flat per request - same cost regardless of results returned).\n\n**Routing:** one lane serves this API today, so a failed attempt has nowhere to fail over to. Payment outcome follows the selected rail's settlement policy.\n\n**Catalog:** [People Search - QuickEnrich Company Contacts pricing and uptime](https://getanyapi.com/api/people-search/quickenrich-company) - live USD price, lane routing, and measured 30-day uptime. [Every People_search endpoint](https://getanyapi.com/api/people-search).","operationId":"people_search_quickenrich_company","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"companyDomain":"southmemphisfence.com"},"schema":{"additionalProperties":false,"example":{"companyDomain":"southmemphisfence.com"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"companyDomain":{"description":"Company website domain, normalized upstream (example.com or https://example.com both work).","minLength":1,"type":"string"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"page":{"default":1,"description":"One-based result page. Each page holds up to 20 people.","minimum":1,"type":"integer"},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"title":{"description":"One job title, or several comma-separated, e.g. \"CEO, CFO\".","maxLength":255,"type":"string"}},"required":["companyDomain"],"title":"People Search - QuickEnrich Company Contacts input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"description":"One page of results, or null when the request matched nothing.","oneOf":[{"type":"null"},{"additionalProperties":false,"properties":{"page":{"description":"One-based page this response covers.","type":"integer"},"pageSize":{"description":"Records per page upstream applied.","type":"integer"},"people":{"description":"People on this page.","items":{"properties":{"address":{"description":"Street address on the employer record.","type":"string"},"city":{"description":"City on the employer record.","type":"string"},"companyDomain":{"description":"Employer website domain.","type":"string"},"companyEmployeeCount":{"description":"Employer headcount band, e.g. \"20 - 99\". Upstream band vocabulary; \"Not Available\" means the band is unknown.","type":"string"},"companyIndustry":{"description":"Employer industry label.","type":"string"},"companyLinkedinUrl":{"description":"Employer LinkedIn company URL.","type":"string"},"companyName":{"description":"Employer name.","type":"string"},"companyPhone":{"description":"Employer main phone line.","type":"string"},"companyRevenue":{"description":"Employer revenue band, e.g. \"1 - 2.5 Million\". Upstream band vocabulary; \"Not Available\" means the band is unknown.","type":"string"},"country":{"description":"ISO 3166-1 alpha-2 country code on the employer record.","type":"string"},"email":{"description":"Work email address.","type":"string"},"emailDomain":{"description":"Domain the work email resolves to.","type":"string"},"emailVerifiedUtc":{"description":"UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds.","type":"number"},"firstName":{"description":"Person's first name.","type":"string"},"lastName":{"description":"Person's last name.","type":"string"},"linkedinUrl":{"description":"Person's LinkedIn profile URL.","type":"string"},"phone":{"description":"Direct business phone line held for the person. Mostly desk lines; read phoneType before treating it as a mobile.","type":"string"},"phoneType":{"description":"Line type reported upstream, e.g. \"mobile\" or \"landline\".","type":"string"},"postalCode":{"description":"Postal code on the employer record.","type":"string"},"region":{"description":"State or region code on the employer record.","type":"string"},"title":{"description":"Person's job title.","type":"string"}},"required":["firstName"],"type":"object"},"type":"array"},"total":{"description":"Total records matching the request.","type":"integer"},"totalPages":{"description":"Total pages available.","type":"integer"}},"required":["people","page","pageSize","total","totalPages"],"type":"object"}]},"found":{"description":"False when the domain matched no contacts.","type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"People Search - QuickEnrich Company Contacts output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"People Search - QuickEnrich Company Contacts","tags":["people-search"],"x-mint":{"href":"/api-reference/people-search/quickenrich-company"},"x-payment-info":{"price":{"amount":"0.007200","currency":"USD","mode":"fixed"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"amount":"0.007200","currency":"USD","minimumUsd":"0.001000","mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"amount":"0.007200","currency":"USD","minimumUsd":null,"mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/perplexity.search":{"post":{"description":"Ask Perplexity a web-grounded question and receive an answer with source citations.\n\n**Price:** billed per result - \\$0.06 per 1,000 requests base + \\$11.00 per 1,000 results, capped at \\$11.10 per 1,000 requests.\n\n**Routing:** one lane serves this API today, so a failed attempt has nowhere to fail over to. Payment outcome follows the selected rail's settlement policy.\n\n**Catalog:** [Perplexity Search pricing and uptime](https://getanyapi.com/api/perplexity/search) - live USD price, lane routing, and measured 30-day uptime. [Every Perplexity endpoint](https://getanyapi.com/api/perplexity).","operationId":"perplexity_search","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"prompt":"What is AnyAPI at getanyapi.com, and what does it offer?"},"schema":{"additionalProperties":false,"example":{"prompt":"What is AnyAPI at getanyapi.com, and what does it offer?"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"prompt":{"description":"Question or research prompt for Perplexity to answer using web search.","maxLength":2000,"minLength":1,"type":"string"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true}},"required":["prompt"],"title":"Perplexity Search input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"description":"The normalized answer and citations, or null when no answer was found.","oneOf":[{"type":"null"},{"additionalProperties":false,"properties":{"answer":{"description":"The web-grounded answer as text. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"answerMarkdown":{"description":"The answer in Markdown when the engine returns a Markdown rendering, otherwise the same text as answer. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"citations":{"description":"Sources cited by the answer. Populated whenever the provider has data for the entity.","items":{"properties":{"createdUtc":{"description":"UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds.","type":"number"},"snippet":{"description":"Excerpt of the cited source the engine used.","type":"string"},"title":{"description":"Source page title when supplied by the search engine.","type":"string"},"url":{"description":"Source page URL.","format":"uri","type":"string"}},"required":["title","url"],"type":"object"},"minItems":1,"type":"array","x-anyapi-must-populate":true},"prompt":{"description":"The prompt answered by Perplexity.","type":"string"}},"required":["prompt","answer","answerMarkdown","citations"],"type":"object"}]},"found":{"description":"Whether Perplexity returned a web-grounded answer.","type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"Perplexity Search output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"Perplexity Search","tags":["perplexity"],"x-mint":{"href":"/api-reference/perplexity/search"},"x-payment-info":{"price":{"currency":"USD","max":"0.011100","min":"0.000060","mode":"dynamic"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"currency":"USD","max":"0.011100","min":"0.001000","minimumUsd":"0.001000","mode":"dynamic","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"currency":"USD","max":"0.011100","min":"0.000060","minimumUsd":null,"mode":"dynamic","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/person.skip_trace":{"post":{"description":"Skip-trace a person in the US by name, address, phone, or email and get back identity, address, and contact records in normalized JSON.\n\n**Price:** billed per result - \\$7.70 per 1,000 results, capped at \\$7.70 per 1,000 requests.\n\n**Routing:** one lane serves this API today, so a failed attempt has nowhere to fail over to. Payment outcome follows the selected rail's settlement policy.\n\n**Catalog:** [Skip Trace pricing and uptime](https://getanyapi.com/api/person/skip-trace) - live USD price, lane routing, and measured 30-day uptime. [Every Person endpoint](https://getanyapi.com/api/person).","operationId":"person_skip_trace","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"address":"123 Main St, Austin, TX 78701","name":"John Smith"},"schema":{"additionalProperties":false,"example":{"address":"123 Main St, Austin, TX 78701","name":"John Smith"},"properties":{"address":{"description":"Street address with city/state/zip.","type":"string"},"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"email":{"description":"Email address to reverse-trace (e.g. john.smith@example.com).","type":"string"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"name":{"description":"Full name of the person to trace. Provide at least one of name, address, phone, or email.","type":"string"},"phone":{"description":"Phone number to reverse-trace (e.g. 415-555-2671).","type":"string"},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true}},"title":"Skip Trace input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"description":"The results wrapper, or null when nothing was found.","oneOf":[{"type":"null"},{"additionalProperties":false,"properties":{"items":{"description":"Matched person records with identity, address, and contact details. Populated whenever the provider has data for the entity.","items":{"description":"A skip-trace match: name, age, current and past addresses, phone numbers, email addresses, relatives, and associates.","properties":{"addressLocality":{"description":"Current city.","type":"string"},"addressRegion":{"description":"Current state.","type":"string"},"age":{"description":"Reported age.","type":"string"},"associates":{"description":"Reported associates. Each entry is an open object with name and age.","items":{"type":"object"},"type":"array"},"born":{"description":"Reported birth month and year.","type":"string"},"county":{"description":"Current county.","type":"string"},"emails":{"description":"Up to five known email addresses, most-recent first. Absent slots are empty strings.","properties":{"email1":{"type":"string"},"email2":{"type":"string"},"email3":{"type":"string"},"email4":{"type":"string"},"email5":{"type":"string"}},"type":"object"},"firstName":{"description":"First name of the matched person.","type":"string"},"lastName":{"description":"Last name of the matched person.","type":"string"},"location":{"description":"Current city and state (e.g. Brook Park, OH).","type":"string"},"phones":{"description":"Up to five known phone numbers with line type, most-recent first. Absent slots are empty strings.","properties":{"phone1":{"type":"string"},"phone1Type":{"type":"string"},"phone2":{"type":"string"},"phone2Type":{"type":"string"},"phone3":{"type":"string"},"phone3Type":{"type":"string"},"phone4":{"type":"string"},"phone4Type":{"type":"string"},"phone5":{"type":"string"},"phone5Type":{"type":"string"}},"type":"object"},"postalCode":{"description":"Current ZIP code.","type":"string"},"previousAddresses":{"description":"Prior addresses. Each entry is an open object with street, locality, region, postal code, county, and timespan.","items":{"type":"object"},"type":"array"},"relatives":{"description":"Reported relatives. Each entry is an open object with name and age.","items":{"type":"object"},"type":"array"},"streetAddress":{"description":"Current street address.","type":"string"},"url":{"description":"Source record URL for the matched person. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true}},"required":["url"],"type":"object"},"type":"array","x-anyapi-must-populate":true}},"required":["items"],"type":"object"}]},"found":{"description":"True when at least one matched person record was returned.","type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"Skip Trace output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"Skip Trace","tags":["person"],"x-mint":{"href":"/api-reference/person/skip-trace"},"x-payment-info":{"price":{"currency":"USD","max":"0.007700","min":"0.000000","mode":"dynamic"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"currency":"USD","max":"0.007700","min":"0.001000","minimumUsd":"0.001000","mode":"dynamic","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"currency":"USD","max":"0.007700","min":"0.000000","minimumUsd":null,"mode":"dynamic","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/person_enrichment.bettercontact":{"post":{"description":"Run one contact through BetterContact's email waterfall from a name plus company domain or a LinkedIn URL, and get the winning address with its deliverability verdict, the provider that found it, and the employer record. Only a matched contact is billable.\n\n**Price:** \\$82.80 per 1,000 requests (flat per request - same cost regardless of results returned).\n\n**Routing:** one lane serves this API today, so a failed attempt has nowhere to fail over to. Payment outcome follows the selected rail's settlement policy.\n\n**Catalog:** [Person Enrichment - BetterContact pricing and uptime](https://getanyapi.com/api/person-enrichment/bettercontact) - live USD price, lane routing, and measured 30-day uptime. [Every Person_enrichment endpoint](https://getanyapi.com/api/person-enrichment).","operationId":"person_enrichment_bettercontact","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"companyDomain":"stripe.com","firstName":"Patrick","lastName":"Collison","linkedinUrl":"https://www.linkedin.com/in/patrickcollison"},"schema":{"additionalProperties":false,"anyOf":[{"required":["companyDomain"]},{"required":["company"]},{"required":["linkedinUrl"]}],"example":{"companyDomain":"stripe.com","firstName":"Patrick","lastName":"Collison","linkedinUrl":"https://www.linkedin.com/in/patrickcollison"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"company":{"description":"Employer name, for when you have no domain.","minLength":1,"type":"string"},"companyDomain":{"description":"Employer domain, e.g. stripe.com. The strongest company signal for the waterfall.","minLength":1,"type":"string"},"customFields":{"additionalProperties":true,"description":"Arbitrary identifiers echoed back on the result, for joining the answer to your own records.","type":"object"},"firstName":{"description":"Contact's first name.","minLength":1,"type":"string"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"lastName":{"description":"Contact's last name.","minLength":1,"type":"string"},"linkedinUrl":{"description":"Contact's LinkedIn profile URL, which raises the match rate.","format":"uri","type":"string"},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true}},"required":["firstName","lastName"],"title":"Person Enrichment - BetterContact input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"description":"The matched contact, or null when the waterfall found none.","oneOf":[{"type":"null"},{"properties":{"city":{"description":"City.","type":"string"},"company":{"description":"The contact's employer.","properties":{"about":{"description":"Company about text.","type":"string"},"addressCity":{"description":"Address city.","type":"string"},"addressCountry":{"description":"Address country.","type":"string"},"addressState":{"description":"Address state or region.","type":"string"},"addressStreet":{"description":"Street address.","type":"string"},"addressZipcode":{"description":"Address postal code.","type":"string"},"companyId":{"description":"BetterContact's own company identifier.","type":"string"},"countryCode":{"description":"ISO 3166-1 alpha-2 country code.","type":"string"},"crunchbaseUrl":{"description":"Company Crunchbase profile URL.","format":"uri","type":"string"},"description":{"description":"Company description.","type":"string"},"directionsUrl":{"description":"Map directions URL for the office.","format":"uri","type":"string"},"domain":{"description":"Company domain.","type":"string"},"employees":{"description":"Employees BetterContact counts.","type":"integer"},"employeesOnLinkedin":{"description":"Employees LinkedIn shows for the company.","type":"integer"},"followers":{"description":"LinkedIn follower count.","type":"integer"},"founded":{"description":"Year the company was founded.","type":"integer"},"headquarters":{"description":"Headquarters as one display string.","type":"string"},"headquartersAddress":{"description":"Headquarters street address.","type":"string"},"headquartersCity":{"description":"Headquarters city.","type":"string"},"headquartersCountry":{"description":"Headquarters country.","type":"string"},"image":{"description":"Company logo URL.","format":"uri","type":"string"},"industryCode":{"description":"Industry classification code.","type":"string"},"legalId":{"description":"Company registration number.","type":"string"},"legalName":{"description":"Registered legal name.","type":"string"},"linkedinId":{"description":"Company LinkedIn numeric id.","type":"string"},"linkedinUrl":{"description":"Company LinkedIn page URL.","format":"uri","type":"string"},"name":{"description":"Company name.","type":"string"},"organizationType":{"description":"Organization type.","type":"string"},"phone":{"description":"Company switchboard number.","type":"string"},"size":{"description":"Employee headcount band.","type":"string"},"website":{"description":"Company website URL.","format":"uri","type":"string"}},"type":"object"},"connections":{"description":"LinkedIn connection count.","type":"integer"},"contactId":{"description":"BetterContact's own contact identifier.","type":"string"},"country":{"description":"Country.","type":"string"},"countryCode":{"description":"ISO 3166-1 alpha-2 country code.","type":"string"},"currentCompany":{"description":"Current employer as BetterContact names it.","type":"string"},"doNotContact":{"description":"True when the contact is on a do-not-contact list.","type":"boolean"},"email":{"description":"The email address the waterfall settled on.","type":"string"},"emailProvider":{"description":"Mailbox provider behind the address, e.g. Google.","type":"string"},"emailStatus":{"description":"Deliverability verdict for the address, e.g. valid, catch_all_safe, catch_all_not_safe, undeliverable, not_found.","type":"string"},"enriched":{"description":"True when the waterfall matched a contact. A false answer is a legitimate miss and is not billed.","type":"boolean"},"firstName":{"description":"First name.","type":"string"},"followers":{"description":"LinkedIn follower count.","type":"integer"},"fullName":{"description":"Contact's full name.","type":"string"},"gender":{"description":"Gender recorded for the contact.","type":"string"},"image":{"description":"Contact's profile picture URL.","format":"uri","type":"string"},"jobTitle":{"description":"Current job title.","type":"string"},"lastName":{"description":"Last name.","type":"string"},"linkedinId":{"description":"Contact's LinkedIn numeric id.","type":"string"},"linkedinUrl":{"description":"Contact's LinkedIn profile URL.","format":"uri","type":"string"},"location":{"description":"Location as one display string.","type":"string"},"postalCode":{"description":"Postal code.","type":"string"},"provider":{"description":"Which data source in the waterfall produced the address.","type":"string"}},"required":["enriched"],"type":"object"}]},"found":{"description":"False when the waterfall matched no contact.","type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"Person Enrichment - BetterContact output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"Person Enrichment - BetterContact","tags":["person-enrichment"],"x-mint":{"href":"/api-reference/person-enrichment/bettercontact"},"x-payment-info":{"price":{"amount":"0.082800","currency":"USD","mode":"fixed"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"amount":"0.082800","currency":"USD","minimumUsd":"0.001000","mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"amount":"0.082800","currency":"USD","minimumUsd":null,"mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/person_enrichment.crustdata_v3":{"post":{"description":"Enrich one person from a LinkedIn profile URL or a business email: profile, headline, location, skills, current and past roles with the employer's domain, education, social handles, and GitHub profiles. Contact details are sold separately by Contact Enrichment - Crustdata v3.\n\n**Price:** \\$96.00 per 1,000 requests (flat per request - same cost regardless of results returned).\n\n**Routing:** one lane serves this API today, so a failed attempt has nowhere to fail over to. Payment outcome follows the selected rail's settlement policy.\n\n**Catalog:** [Person Enrichment - Crustdata v3 pricing and uptime](https://getanyapi.com/api/person-enrichment/crustdata-v3) - live USD price, lane routing, and measured 30-day uptime. [Every Person_enrichment endpoint](https://getanyapi.com/api/person-enrichment).","operationId":"person_enrichment_crustdata_v3","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"linkedinUrl":"https://www.linkedin.com/in/satyanadella"},"schema":{"additionalProperties":false,"example":{"linkedinUrl":"https://www.linkedin.com/in/satyanadella"},"oneOf":[{"required":["linkedinUrl"]},{"required":["email"]}],"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"email":{"description":"The person's business email address.","format":"email","type":"string"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"linkedinUrl":{"description":"LinkedIn profile URL, e.g. https://www.linkedin.com/in/satyanadella. Send exactly one of linkedinUrl or email.","format":"uri","type":"string"},"minSimilarityScore":{"description":"For an email lookup, the lowest match similarity from 0 to 1 to accept. Leave unset to use Crustdata's default.","maximum":1,"minimum":0,"type":"number"},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true}},"title":"Person Enrichment - Crustdata v3 input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"description":"The enriched person, or null when nothing matched.","oneOf":[{"type":"null"},{"properties":{"connections":{"description":"LinkedIn connection count.","type":"integer"},"currentPositions":{"description":"Roles the person holds now.","items":{"properties":{"companyDomain":{"description":"Employer website domain.","type":"string"},"companyId":{"description":"Employer Crustdata company id, usable as companyId in Company Identify - Crustdata v3.","type":"string"},"companyLinkedinUrl":{"description":"Employer LinkedIn company page URL.","format":"uri","type":"string"},"companyName":{"description":"Employer name.","type":"string"},"description":{"description":"Role description.","type":"string"},"employmentType":{"description":"Employment type, e.g. Full-time.","type":"string"},"endedUtc":{"description":"When the role ended. UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds.","type":"number"},"functionCategory":{"description":"Job function.","type":"string"},"location":{"description":"Where the role is based.","type":"string"},"seniority":{"description":"Seniority level, e.g. CXO.","type":"string"},"startedUtc":{"description":"When the role started. UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds.","type":"number"},"title":{"description":"Job title.","type":"string"}},"type":"object"},"type":"array"},"education":{"description":"Schools attended.","items":{"properties":{"degree":{"description":"Degree.","type":"string"},"description":{"description":"Notes on the course of study.","type":"string"},"endYear":{"description":"Year finished.","type":"integer"},"fieldOfStudy":{"description":"Field of study.","type":"string"},"school":{"description":"School name.","type":"string"},"startYear":{"description":"Year started.","type":"integer"}},"type":"object"},"type":"array"},"firstName":{"description":"First name.","type":"string"},"followers":{"description":"LinkedIn follower count.","type":"integer"},"githubProfiles":{"description":"GitHub accounts matched to the person, each with its own match confidence.","items":{"properties":{"bio":{"description":"Profile bio.","type":"string"},"company":{"description":"Company as written on the profile.","type":"string"},"confidenceScore":{"description":"Confidence from 0 to 1 that this account belongs to the person.","type":"number"},"followers":{"description":"Follower count.","type":"integer"},"following":{"description":"Accounts followed.","type":"integer"},"location":{"description":"Location as written on the profile.","type":"string"},"name":{"description":"Display name.","type":"string"},"profileUrl":{"description":"GitHub profile URL.","format":"uri","type":"string"},"publicRepoCount":{"description":"Public repository count.","type":"integer"}},"type":"object"},"type":"array"},"githubUrl":{"description":"GitHub profile URL linked from the profile.","format":"uri","type":"string"},"headline":{"description":"LinkedIn headline.","type":"string"},"image":{"description":"Profile photo URL.","format":"uri","type":"string"},"jobTitle":{"description":"Current job title.","type":"string"},"languages":{"description":"Languages the person lists.","items":{"type":"string"},"type":"array"},"lastName":{"description":"Last name.","type":"string"},"linkedinUrl":{"description":"LinkedIn profile URL.","format":"uri","type":"string"},"location":{"description":"Where the person is based.","properties":{"city":{"description":"City.","type":"string"},"continent":{"description":"Continent.","type":"string"},"country":{"description":"Country.","type":"string"},"label":{"description":"Location as written on the profile.","type":"string"},"state":{"description":"State or region.","type":"string"}},"type":"object"},"matchConfidence":{"description":"Confidence from 0 to 1 that the returned person is the one asked for.","type":"number"},"name":{"description":"Full name.","type":"string"},"pastPositions":{"description":"Roles the person held before.","items":{"properties":{"companyDomain":{"description":"Employer website domain.","type":"string"},"companyId":{"description":"Employer Crustdata company id, usable as companyId in Company Identify - Crustdata v3.","type":"string"},"companyLinkedinUrl":{"description":"Employer LinkedIn company page URL.","format":"uri","type":"string"},"companyName":{"description":"Employer name.","type":"string"},"description":{"description":"Role description.","type":"string"},"employmentType":{"description":"Employment type, e.g. Full-time.","type":"string"},"endedUtc":{"description":"When the role ended. UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds.","type":"number"},"functionCategory":{"description":"Job function.","type":"string"},"location":{"description":"Where the role is based.","type":"string"},"seniority":{"description":"Seniority level, e.g. CXO.","type":"string"},"startedUtc":{"description":"When the role started. UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds.","type":"number"},"title":{"description":"Job title.","type":"string"}},"type":"object"},"type":"array"},"personId":{"description":"Crustdata person id.","type":"string"},"skills":{"description":"Skills the person lists on LinkedIn.","items":{"type":"string"},"type":"array"},"summary":{"description":"Profile summary.","type":"string"},"twitterHandle":{"description":"X (Twitter) handle.","type":"string"},"yearsOfExperience":{"description":"Total years of work experience.","type":"integer"}},"required":["personId"],"type":"object"}]},"found":{"description":"False when no person matched the LinkedIn URL or email.","type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"Person Enrichment - Crustdata v3 output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"Person Enrichment - Crustdata v3","tags":["person-enrichment"],"x-mint":{"href":"/api-reference/person-enrichment/crustdata-v3"},"x-payment-info":{"price":{"amount":"0.096000","currency":"USD","mode":"fixed"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"amount":"0.096000","currency":"USD","minimumUsd":"0.001000","mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"amount":"0.096000","currency":"USD","minimumUsd":null,"mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/person_enrichment.fullenrich_bulk":{"post":{"description":"Run FullEnrich's waterfall on up to 99 people in one call and get back work emails, personal emails and mobile numbers, each with a deliverability status, alongside the full LinkedIn-grade profile and employer record for everyone matched. Only the contacts it matches are returned, and only those are billed.\n\n**Price:** billed per result - \\$100.80 per 1,000 results, capped at \\$9,979.20 per 1,000 requests.\n\n**Routing:** one lane serves this API today, so a failed attempt has nowhere to fail over to. Payment outcome follows the selected rail's settlement policy.\n\n**Catalog:** [Bulk Person Enrichment - FullEnrich pricing and uptime](https://getanyapi.com/api/person-enrichment/fullenrich-bulk) - live USD price, lane routing, and measured 30-day uptime. [Every Person_enrichment endpoint](https://getanyapi.com/api/person-enrichment).","operationId":"person_enrichment_fullenrich_bulk","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"contacts":[{"custom":{"row":"1"},"domain":"stripe.com","enrich_fields":["contact.emails","contact.personal_emails"],"first_name":"Patrick","last_name":"Collison"},{"company_name":"Figma","custom":{"row":"2"},"enrich_fields":["contact.emails"],"first_name":"Dylan","last_name":"Field","linkedin_url":"https://www.linkedin.com/in/dylanfield"}]},"schema":{"additionalProperties":false,"example":{"contacts":[{"custom":{"row":"1"},"domain":"stripe.com","enrich_fields":["contact.emails","contact.personal_emails"],"first_name":"Patrick","last_name":"Collison"},{"company_name":"Figma","custom":{"row":"2"},"enrich_fields":["contact.emails"],"first_name":"Dylan","last_name":"Field","linkedin_url":"https://www.linkedin.com/in/dylanfield"}]},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"contacts":{"description":"People to enrich, up to 99 per call. You are charged only for the contacts the waterfall resolves, though the funds held cover every contact you submit until the call settles. Each entry is passed to FullEnrich exactly as you write it, which is why these keys are snake_case while the rest of the API is camelCase. Give a name plus an employer (company_name or domain), or a linkedin_url, or both - more identity means a better hit rate.","items":{"additionalProperties":false,"anyOf":[{"required":["first_name","last_name"]},{"required":["linkedin_url"]}],"properties":{"company_name":{"description":"Employer name. Use this when you do not have the domain.","minLength":1,"type":"string"},"custom":{"additionalProperties":{"type":"string"},"description":"Your own tags for this entry, echoed back on the matching output row so you can join results to your records.","type":"object"},"domain":{"description":"Employer's website domain, e.g. stripe.com. The strongest employer signal.","minLength":1,"type":"string"},"enrich_fields":{"description":"What to look for: contact.emails for work addresses, contact.personal_emails for personal ones. Required, and at least one entry. Mobile numbers are not offered here because they cost roughly ten times an email and this SKU is priced per resolved contact at the email rate.","items":{"enum":["contact.emails","contact.personal_emails"],"type":"string"},"minItems":1,"type":"array","uniqueItems":true},"first_name":{"description":"Person's first name. Pair it with last_name.","minLength":1,"type":"string"},"last_name":{"description":"Person's last name. Pair it with first_name.","minLength":1,"type":"string"},"linkedin_url":{"description":"LinkedIn profile URL. On its own this is enough to identify the person.","minLength":1,"type":"string"}},"required":["enrich_fields"],"type":"object"},"maxItems":99,"minItems":1,"type":"array"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true}},"required":["contacts"],"title":"Bulk Person Enrichment - FullEnrich input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"oneOf":[{"type":"null"},{"additionalProperties":false,"properties":{"contacts":{"description":"One row per contact the waterfall resolved, in the order you sent them. Contacts it could not resolve are left out and are not billed, so match your rows back by the tags you set in custom, or by name and company.","items":{"properties":{"companyDomain":{"description":"Company domain as you supplied it.","type":"string"},"companyName":{"description":"Company name as you supplied it.","type":"string"},"custom":{"additionalProperties":{"type":"string"},"description":"The tags you attached to this entry, echoed back so you can join rows to your own records.","type":"object"},"email":{"description":"Best work email FullEnrich found for this person.","type":"string"},"emailStatus":{"description":"Deliverability verdict for that address, e.g. DELIVERABLE or HIGH_PROBABILITY.","type":"string"},"firstName":{"description":"First name.","type":"string"},"fullName":{"description":"Full name.","type":"string"},"lastName":{"description":"Last name.","type":"string"},"personalEmails":{"description":"Personal addresses found, each with its own deliverability verdict.","items":{"properties":{"email":{"description":"Best work email FullEnrich found for this person.","type":"string"},"status":{"description":"Deliverability verdict.","type":"string"}},"type":"object"},"type":"array"},"profile":{"description":"The person behind the match: identity, location, current role and employer, history, education, languages and skills. Absent when nothing matched.","properties":{"city":{"description":"City the person is in.","type":"string"},"company":{"description":"The person's current employer, with FullEnrich's full firmographic record.","properties":{"companyId":{"description":"FullEnrich's own company identifier.","type":"string"},"companyType":{"description":"Ownership type, e.g. Public Company, Privately Held.","type":"string"},"description":{"description":"Profile summary text.","type":"string"},"domain":{"description":"Primary company domain.","type":"string"},"foundedYear":{"description":"Year the company was founded. Zero when FullEnrich holds none.","type":"integer"},"headcount":{"description":"Employees FullEnrich currently counts.","type":"integer"},"headcountRange":{"description":"Employee headcount band, e.g. 5001-10000.","type":"string"},"headquarters":{"description":"Headquarters address.","properties":{"city":{"description":"City the person is in.","type":"string"},"country":{"description":"Country name.","type":"string"},"countryCode":{"description":"ISO 3166-1 alpha-2 country code.","type":"string"},"line1":{"description":"First address line.","type":"string"},"line2":{"description":"Second address line, carrying city, region, postal code and country.","type":"string"},"region":{"description":"State or region.","type":"string"}},"type":"object"},"image":{"description":"Company logo URL.","type":"string"},"industry":{"description":"Main industry.","type":"string"},"linkedinFollowers":{"description":"LinkedIn follower count.","type":"integer"},"linkedinHandle":{"description":"LinkedIn vanity handle.","type":"string"},"linkedinId":{"description":"LinkedIn numeric member id.","type":"string"},"linkedinUrl":{"description":"LinkedIn profile URL.","type":"string"},"name":{"description":"Company name.","type":"string"},"offices":{"description":"Every other office FullEnrich holds for the company.","items":{"properties":{"line1":{"description":"First address line.","type":"string"},"line2":{"description":"Second address line, carrying city, region, postal code and country.","type":"string"}},"type":"object"},"type":"array"},"specialties":{"description":"Specialties the company lists for itself.","items":{"type":"string"},"type":"array"},"website":{"description":"Company website URL.","type":"string"}},"type":"object"},"country":{"description":"Country name.","type":"string"},"countryCode":{"description":"ISO 3166-1 alpha-2 country code.","type":"string"},"description":{"description":"Profile summary text.","type":"string"},"educations":{"description":"Education history.","items":{"properties":{"degree":{"description":"Degree earned.","type":"string"},"endUtc":{"description":"UTC epoch timestamp in seconds (Unix time) study ended. Multiply by 1000 for a JS Date in milliseconds.","type":"number"},"schoolName":{"description":"School name.","type":"string"},"startUtc":{"description":"UTC epoch timestamp in seconds (Unix time) the role started. Multiply by 1000 for a JS Date in milliseconds.","type":"number"}},"type":"object"},"type":"array"},"employmentHistory":{"description":"Every role on the record, current and past.","items":{"properties":{"companyCity":{"description":"Employer headquarters city.","type":"string"},"companyCountry":{"description":"Employer headquarters country.","type":"string"},"companyDescription":{"description":"Employer description.","type":"string"},"companyDomain":{"description":"Company domain as you supplied it.","type":"string"},"companyFoundedYear":{"description":"Year the employer was founded.","type":"integer"},"companyHeadcount":{"description":"Employer headcount.","minimum":0,"type":"integer"},"companyHeadcountRange":{"description":"Employer headcount range, e.g. 5001-10000.","type":"string"},"companyId":{"description":"FullEnrich identifier for the employer.","type":"string"},"companyImage":{"description":"Employer logo URL.","format":"uri","type":"string"},"companyIndustry":{"description":"Employer primary industry.","type":"string"},"companyLinkedinId":{"description":"Employer LinkedIn numeric id.","type":"string"},"companyLinkedinUrl":{"description":"Employer LinkedIn page URL.","format":"uri","type":"string"},"companyName":{"description":"Company name as you supplied it.","type":"string"},"companyRegion":{"description":"Employer headquarters region or state.","type":"string"},"companyStreet":{"description":"Employer headquarters street address.","type":"string"},"companyType":{"description":"Employer company type, e.g. Nonprofit.","type":"string"},"companyWebsite":{"description":"Employer website URL.","format":"uri","type":"string"},"isCurrent":{"description":"True while the role is current.","type":"boolean"},"jobTitle":{"description":"Job title.","type":"string"},"seniority":{"description":"Seniority band.","type":"string"},"startUtc":{"description":"UTC epoch timestamp in seconds (Unix time) the role started. Multiply by 1000 for a JS Date in milliseconds.","type":"number"}},"type":"object"},"type":"array"},"firstName":{"description":"First name.","type":"string"},"fullName":{"description":"Full name.","type":"string"},"headline":{"description":"LinkedIn headline.","type":"string"},"isCurrent":{"description":"True while the role is current.","type":"boolean"},"jobStartUtc":{"description":"UTC epoch timestamp in seconds (Unix time) the current role started. Multiply by 1000 for a JS Date in milliseconds.","type":"number"},"jobTitle":{"description":"Job title.","type":"string"},"languages":{"description":"Languages the person speaks.","items":{"properties":{"language":{"description":"Language name.","type":"string"},"proficiency":{"description":"Proficiency band, e.g. FULL_PROFESSIONAL.","type":"string"}},"type":"object"},"type":"array"},"lastName":{"description":"Last name.","type":"string"},"linkedinHandle":{"description":"LinkedIn vanity handle.","type":"string"},"linkedinId":{"description":"LinkedIn numeric member id.","type":"string"},"linkedinUrl":{"description":"LinkedIn profile URL.","type":"string"},"profileId":{"description":"FullEnrich's own person identifier.","type":"string"},"region":{"description":"State or region.","type":"string"},"seniority":{"description":"Seniority band.","type":"string"},"skills":{"description":"Skills the person lists.","items":{"type":"string"},"type":"array"}},"type":"object"},"workEmails":{"description":"Every work address found, best first, each with its own deliverability verdict.","items":{"properties":{"email":{"description":"Best work email FullEnrich found for this person.","type":"string"},"status":{"description":"Deliverability verdict.","type":"string"}},"type":"object"},"type":"array"}},"type":"object"},"type":"array"}},"required":["contacts"],"type":"object"}]},"found":{"description":"False when nothing was resolved, in which case there is nothing to bill.","type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"Bulk Person Enrichment - FullEnrich output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"Bulk Person Enrichment - FullEnrich","tags":["person-enrichment"],"x-mint":{"href":"/api-reference/person-enrichment/fullenrich-bulk"},"x-payment-info":{"price":{"currency":"USD","max":"9.979200","min":"0.000000","mode":"dynamic"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"currency":"USD","max":"9.979200","min":"0.001000","minimumUsd":"0.001000","mode":"dynamic","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"currency":"USD","max":"9.979200","min":"0.000000","minimumUsd":null,"mode":"dynamic","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/person_enrichment.fullenrich_reverse_email":{"post":{"description":"Turn up to 99 email addresses into the people behind them: name, headline, location, LinkedIn profile, current title and seniority, full employment history, education, languages and skills, plus the employer record. Only the addresses it resolves are returned, and only those are billed.\n\n**Price:** billed per result - \\$100.80 per 1,000 results, capped at \\$9,979.20 per 1,000 requests.\n\n**Routing:** one lane serves this API today, so a failed attempt has nowhere to fail over to. Payment outcome follows the selected rail's settlement policy.\n\n**Catalog:** [Reverse Email Lookup - FullEnrich pricing and uptime](https://getanyapi.com/api/person-enrichment/fullenrich-reverse-email) - live USD price, lane routing, and measured 30-day uptime. [Every Person_enrichment endpoint](https://getanyapi.com/api/person-enrichment).","operationId":"person_enrichment_fullenrich_reverse_email","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"contacts":[{"custom":{"row":"1"},"email":"dfield@figma.com"},{"custom":{"row":"2"},"email":"patrick@stripe.com"}]},"schema":{"additionalProperties":false,"example":{"contacts":[{"custom":{"row":"1"},"email":"dfield@figma.com"},{"custom":{"row":"2"},"email":"patrick@stripe.com"}]},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"contacts":{"description":"Addresses to look up, up to 99 per call. You are charged only for the addresses that resolve to a person, though the funds held cover every address you submit until the call settles. Each entry is an object so you can tag it; the address itself goes in email.","items":{"additionalProperties":false,"properties":{"custom":{"additionalProperties":{"type":"string"},"description":"Your own tags for this entry, echoed back on the matching output row so you can join results to your records.","type":"object"},"email":{"description":"The address to look up.","minLength":3,"type":"string"}},"required":["email"],"type":"object"},"maxItems":99,"minItems":1,"type":"array"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true}},"required":["contacts"],"title":"Reverse Email Lookup - FullEnrich input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"oneOf":[{"type":"null"},{"additionalProperties":false,"properties":{"contacts":{"description":"One row per address resolved to a person, in the order you sent them. Addresses that resolved to nobody are left out and are not billed; queriedEmail on each row tells you which address it answers.","items":{"properties":{"custom":{"additionalProperties":{"type":"string"},"description":"The tags you attached to this entry, echoed back so you can join rows to your own records.","type":"object"},"profile":{"description":"The person behind the match: identity, location, current role and employer, history, education, languages and skills. Absent when nothing matched.","properties":{"city":{"description":"City the person is in.","type":"string"},"company":{"description":"The person's current employer, with FullEnrich's full firmographic record.","properties":{"companyId":{"description":"FullEnrich's own company identifier.","type":"string"},"companyType":{"description":"Ownership type, e.g. Public Company, Privately Held.","type":"string"},"description":{"description":"Profile summary text.","type":"string"},"domain":{"description":"Primary company domain.","type":"string"},"foundedYear":{"description":"Year the company was founded. Zero when FullEnrich holds none.","type":"integer"},"headcount":{"description":"Employees FullEnrich currently counts.","type":"integer"},"headcountRange":{"description":"Employee headcount band, e.g. 5001-10000.","type":"string"},"headquarters":{"description":"Headquarters address.","properties":{"city":{"description":"City the person is in.","type":"string"},"country":{"description":"Country name.","type":"string"},"countryCode":{"description":"ISO 3166-1 alpha-2 country code.","type":"string"},"line1":{"description":"First address line.","type":"string"},"line2":{"description":"Second address line, carrying city, region, postal code and country.","type":"string"},"region":{"description":"State or region.","type":"string"}},"type":"object"},"image":{"description":"Company logo URL.","type":"string"},"industry":{"description":"Main industry.","type":"string"},"linkedinFollowers":{"description":"LinkedIn follower count.","type":"integer"},"linkedinHandle":{"description":"LinkedIn vanity handle.","type":"string"},"linkedinId":{"description":"LinkedIn numeric member id.","type":"string"},"linkedinUrl":{"description":"LinkedIn profile URL.","type":"string"},"name":{"description":"Company name.","type":"string"},"offices":{"description":"Every other office FullEnrich holds for the company.","items":{"properties":{"line1":{"description":"First address line.","type":"string"},"line2":{"description":"Second address line, carrying city, region, postal code and country.","type":"string"}},"type":"object"},"type":"array"},"specialties":{"description":"Specialties the company lists for itself.","items":{"type":"string"},"type":"array"},"website":{"description":"Company website URL.","type":"string"}},"type":"object"},"country":{"description":"Country name.","type":"string"},"countryCode":{"description":"ISO 3166-1 alpha-2 country code.","type":"string"},"description":{"description":"Profile summary text.","type":"string"},"educations":{"description":"Education history.","items":{"properties":{"degree":{"description":"Degree earned.","type":"string"},"endUtc":{"description":"UTC epoch timestamp in seconds (Unix time) study ended. Multiply by 1000 for a JS Date in milliseconds.","type":"number"},"schoolName":{"description":"School name.","type":"string"},"startUtc":{"description":"UTC epoch timestamp in seconds (Unix time) the role started. Multiply by 1000 for a JS Date in milliseconds.","type":"number"}},"type":"object"},"type":"array"},"employmentHistory":{"description":"Every role on the record, current and past.","items":{"properties":{"companyCity":{"description":"Employer headquarters city.","type":"string"},"companyCountry":{"description":"Employer headquarters country.","type":"string"},"companyDescription":{"description":"Employer description.","type":"string"},"companyDomain":{"description":"Company domain as you supplied it.","type":"string"},"companyFoundedYear":{"description":"Year the employer was founded.","type":"integer"},"companyHeadcount":{"description":"Employer headcount.","minimum":0,"type":"integer"},"companyHeadcountRange":{"description":"Employer headcount range, e.g. 5001-10000.","type":"string"},"companyId":{"description":"FullEnrich identifier for the employer.","type":"string"},"companyImage":{"description":"Employer logo URL.","format":"uri","type":"string"},"companyIndustry":{"description":"Employer primary industry.","type":"string"},"companyLinkedinId":{"description":"Employer LinkedIn numeric id.","type":"string"},"companyLinkedinUrl":{"description":"Employer LinkedIn page URL.","format":"uri","type":"string"},"companyName":{"description":"Company name as you supplied it.","type":"string"},"companyRegion":{"description":"Employer headquarters region or state.","type":"string"},"companyStreet":{"description":"Employer headquarters street address.","type":"string"},"companyType":{"description":"Employer company type, e.g. Nonprofit.","type":"string"},"companyWebsite":{"description":"Employer website URL.","format":"uri","type":"string"},"isCurrent":{"description":"True while the role is current.","type":"boolean"},"jobTitle":{"description":"Job title.","type":"string"},"seniority":{"description":"Seniority band.","type":"string"},"startUtc":{"description":"UTC epoch timestamp in seconds (Unix time) the role started. Multiply by 1000 for a JS Date in milliseconds.","type":"number"}},"type":"object"},"type":"array"},"firstName":{"description":"First name.","type":"string"},"fullName":{"description":"Full name.","type":"string"},"headline":{"description":"LinkedIn headline.","type":"string"},"isCurrent":{"description":"True while the role is current.","type":"boolean"},"jobStartUtc":{"description":"UTC epoch timestamp in seconds (Unix time) the current role started. Multiply by 1000 for a JS Date in milliseconds.","type":"number"},"jobTitle":{"description":"Job title.","type":"string"},"languages":{"description":"Languages the person speaks.","items":{"properties":{"language":{"description":"Language name.","type":"string"},"proficiency":{"description":"Proficiency band, e.g. FULL_PROFESSIONAL.","type":"string"}},"type":"object"},"type":"array"},"lastName":{"description":"Last name.","type":"string"},"linkedinHandle":{"description":"LinkedIn vanity handle.","type":"string"},"linkedinId":{"description":"LinkedIn numeric member id.","type":"string"},"linkedinUrl":{"description":"LinkedIn profile URL.","type":"string"},"profileId":{"description":"FullEnrich's own person identifier.","type":"string"},"region":{"description":"State or region.","type":"string"},"seniority":{"description":"Seniority band.","type":"string"},"skills":{"description":"Skills the person lists.","items":{"type":"string"},"type":"array"}},"type":"object"},"queriedEmail":{"description":"The address you asked about, echoed back.","type":"string"}},"type":"object"},"type":"array"}},"required":["contacts"],"type":"object"}]},"found":{"description":"False when nothing was resolved, in which case there is nothing to bill.","type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"Reverse Email Lookup - FullEnrich output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"Reverse Email Lookup - FullEnrich","tags":["person-enrichment"],"x-mint":{"href":"/api-reference/person-enrichment/fullenrich-reverse-email"},"x-payment-info":{"price":{"currency":"USD","max":"9.979200","min":"0.000000","mode":"dynamic"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"currency":"USD","max":"9.979200","min":"0.001000","minimumUsd":"0.001000","mode":"dynamic","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"currency":"USD","max":"9.979200","min":"0.000000","minimumUsd":null,"mode":"dynamic","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/person_enrichment.lusha":{"post":{"description":"Enrich one person into work email, direct dial, job title and employer firmographics from a LinkedIn URL, an email, or a name plus company.\n\n**Price:** \\$84.00 per 1,000 requests (flat per request - same cost regardless of results returned).\n\n**Routing:** one lane serves this API today, so a failed attempt has nowhere to fail over to. Payment outcome follows the selected rail's settlement policy.\n\n**Catalog:** [Person Enrichment - Lusha pricing and uptime](https://getanyapi.com/api/person-enrichment/lusha) - live USD price, lane routing, and measured 30-day uptime. [Every Person_enrichment endpoint](https://getanyapi.com/api/person-enrichment).","operationId":"person_enrichment_lusha","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"linkedinUrl":"https://www.linkedin.com/in/tim-zheng"},"schema":{"additionalProperties":false,"anyOf":[{"required":["linkedinUrl"]},{"required":["email"]},{"required":["firstName","lastName","companyDomain"]},{"required":["firstName","lastName","companyName"]}],"example":{"linkedinUrl":"https://www.linkedin.com/in/tim-zheng"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"companyDomain":{"description":"Employer domain, e.g. apollo.io. Secondary identifier for a name-based lookup.","minLength":1,"type":"string"},"companyName":{"description":"Employer name. Secondary identifier for a name-based lookup; companyDomain matches more reliably.","minLength":1,"type":"string"},"email":{"description":"Known email address, used to resolve the person's identity.","format":"email","type":"string"},"firstName":{"description":"First name. Send with lastName plus companyName or companyDomain.","minLength":1,"type":"string"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"lastName":{"description":"Last name. Send with firstName plus companyName or companyDomain.","minLength":1,"type":"string"},"linkedinUrl":{"description":"LinkedIn profile URL (linkedin.com/in/...). Highest match rate.","format":"uri","type":"string"},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"refreshJobInfo":{"description":"Force a fresh job title and employer lookup instead of the cached one.","type":"boolean"},"revealEmails":{"description":"Reveal email addresses. Defaults to true upstream.","type":"boolean"},"revealPhones":{"description":"Reveal phone numbers. Defaults to true upstream.","type":"boolean"},"signals":{"description":"Include buying-intent signals in the response.","type":"boolean"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true}},"title":"Person Enrichment - Lusha input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"description":"The enriched person, or null when nothing matched.","oneOf":[{"type":"null"},{"properties":{"company":{"description":"The person's current employer.","properties":{"city":{"description":"Headquarters city.","type":"string"},"companyId":{"description":"Lusha's own company identifier.","type":"string"},"continent":{"description":"Headquarters continent.","type":"string"},"country":{"description":"Headquarters country.","type":"string"},"countryCode":{"description":"ISO 3166-1 alpha-2 code for the headquarters country.","type":"string"},"description":{"description":"Company description.","type":"string"},"domain":{"description":"Primary company domain.","type":"string"},"emailDomain":{"description":"Domain the company's work email addresses use.","type":"string"},"employeeRange":{"description":"Employee headcount band as [min, max].","items":{"type":"integer"},"type":"array"},"facebookUrl":{"description":"Company Facebook page URL.","format":"uri","type":"string"},"fqdn":{"description":"Fully qualified host for the company website.","type":"string"},"image":{"description":"Company logo URL.","format":"uri","type":"string"},"linkedinUrl":{"description":"Company LinkedIn page URL.","format":"uri","type":"string"},"mainIndustry":{"description":"Top-level industry.","type":"string"},"naicsCodes":{"description":"NAICS classification codes for the company.","items":{"properties":{"code":{"description":"NAICS code.","type":"string"},"description":{"description":"What the NAICS code covers.","type":"string"}},"required":["code"],"type":"object"},"type":"array"},"name":{"description":"Company name.","type":"string"},"revenueRange":{"description":"Annual revenue band in USD as [min, max].","items":{"type":"integer"},"type":"array"},"sicCodes":{"description":"SIC classification codes for the company.","items":{"properties":{"code":{"description":"SIC code.","type":"string"},"description":{"description":"What the SIC code covers.","type":"string"}},"required":["code"],"type":"object"},"type":"array"},"state":{"description":"Headquarters state or region.","type":"string"},"stateCode":{"description":"Short code for the headquarters state or region.","type":"string"},"subIndustry":{"description":"Sub-industry.","type":"string"},"technologies":{"description":"Technologies Lusha detects in the company's stack.","items":{"type":"string"},"type":"array"},"website":{"description":"Company website URL.","format":"uri","type":"string"},"xUrl":{"description":"Company X (Twitter) profile URL.","format":"uri","type":"string"}},"type":"object"},"contactTags":{"description":"Tags Lusha attaches to the contact.","items":{"type":"string"},"type":"array"},"departments":{"description":"Departments Lusha assigns the current role, e.g. General Management.","items":{"type":"string"},"type":"array"},"email":{"description":"Best email address Lusha holds, the first entry of emails.","type":"string"},"emails":{"description":"Every email address Lusha holds for the person.","items":{"properties":{"confidence":{"description":"Lusha's confidence grade for the address, e.g. A+.","type":"string"},"email":{"description":"Email address.","type":"string"},"type":{"description":"Address kind, e.g. work or personal.","type":"string"},"updatedUtc":{"description":"UTC epoch timestamp in seconds (Unix time) the address was last confirmed. Multiply by 1000 for a JS Date in milliseconds.","type":"number"}},"required":["email"],"type":"object"},"type":"array"},"firstName":{"description":"Person's first name.","type":"string"},"fullName":{"description":"Person's full name.","type":"string"},"jobStartUtc":{"description":"UTC epoch timestamp in seconds (Unix time) the person started the current role. Multiply by 1000 for a JS Date in milliseconds.","type":"number"},"jobTitle":{"description":"Current job title.","type":"string"},"lastName":{"description":"Person's last name.","type":"string"},"linkedinConnections":{"description":"LinkedIn connection count.","type":"integer"},"linkedinFollowers":{"description":"LinkedIn follower count.","type":"integer"},"linkedinUrl":{"description":"LinkedIn profile URL.","format":"uri","type":"string"},"location":{"description":"Where the person is located.","properties":{"city":{"description":"City.","type":"string"},"continent":{"description":"Continent name.","type":"string"},"country":{"description":"Country name.","type":"string"},"countryCode":{"description":"ISO 3166-1 alpha-2 country code.","type":"string"},"isEuContact":{"description":"True when Lusha classifies the contact as EU-resident.","type":"boolean"},"latitude":{"description":"Contact location latitude in decimal degrees.","type":"number"},"longitude":{"description":"Contact location longitude in decimal degrees.","type":"number"},"state":{"description":"State or region.","type":"string"},"stateCode":{"description":"State or region code.","type":"string"}},"type":"object"},"personId":{"description":"Lusha's own person identifier.","type":"string"},"phone":{"description":"Best phone number Lusha holds, the first entry of phones.","type":"string"},"phones":{"description":"Every phone number Lusha holds for the person.","items":{"properties":{"doNotCall":{"description":"True when the number is on a do-not-call list.","type":"boolean"},"number":{"description":"Phone number in international format.","type":"string"},"type":{"description":"Line kind, e.g. mobile or direct.","type":"string"}},"required":["number"],"type":"object"},"type":"array"},"previousJobTitle":{"description":"Job title of the previous role Lusha holds.","type":"string"},"seniority":{"description":"Seniority band for the current role, e.g. Founder.","type":"string"},"updatedUtc":{"description":"UTC epoch timestamp in seconds (Unix time) the record was last refreshed. Multiply by 1000 for a JS Date in milliseconds.","type":"number"}},"required":["fullName"],"type":"object"}]},"found":{"description":"False when Lusha holds no person for the requested identifiers.","type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"Person Enrichment - Lusha output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"Person Enrichment - Lusha","tags":["person-enrichment"],"x-mint":{"href":"/api-reference/person-enrichment/lusha"},"x-payment-info":{"price":{"amount":"0.084000","currency":"USD","mode":"fixed"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"amount":"0.084000","currency":"USD","minimumUsd":"0.001000","mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"amount":"0.084000","currency":"USD","minimumUsd":null,"mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/person_enrichment.peopledatalabs":{"post":{"description":"Enrich one person into work email, personal emails, mobile phone, full work history, education and employer firmographics from any identifier People Data Labs can match on.\n\n**Price:** \\$240.00 per 1,000 requests (flat per request - same cost regardless of results returned).\n\n**Routing:** one lane serves this API today, so a failed attempt has nowhere to fail over to. Payment outcome follows the selected rail's settlement policy.\n\n**Catalog:** [Person Enrichment - People Data Labs pricing and uptime](https://getanyapi.com/api/person-enrichment/peopledatalabs) - live USD price, lane routing, and measured 30-day uptime. [Every Person_enrichment endpoint](https://getanyapi.com/api/person-enrichment).","operationId":"person_enrichment_peopledatalabs","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"profile":"https://www.linkedin.com/in/dharmesh"},"schema":{"additionalProperties":false,"anyOf":[{"required":["profile"]},{"required":["email"]},{"required":["phone"]},{"required":["emailHash"]},{"required":["linkedinId"]},{"required":["pdlId"]},{"required":["name"]},{"required":["firstName","lastName"]}],"example":{"profile":"https://www.linkedin.com/in/dharmesh"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"birthDate":{"description":"Known birth date, to disambiguate a name match.","type":"string"},"company":{"description":"Company name, website or social URL where the person has worked.","type":"string"},"country":{"description":"Country to match on.","type":"string"},"dataInclude":{"description":"Comma-separated People Data Labs fields to include, or a leading - list to exclude. Projection changes the payload only; it does not reduce what the call costs.","type":"string"},"email":{"description":"Any email address the person has used.","format":"email","type":"string"},"emailHash":{"description":"SHA-256 or MD5 hash of an email address, for privacy-preserving matching.","type":"string"},"firstName":{"description":"First name. Send with lastName plus company, school or location.","type":"string"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"includeIfMatched":{"description":"Report which of the sent identifiers actually matched.","type":"boolean"},"lastName":{"description":"Last name. Send with firstName plus company, school or location.","type":"string"},"linkedinId":{"description":"LinkedIn numeric member id (PDL calls this lid).","type":"string"},"locality":{"description":"City or locality to match on.","type":"string"},"location":{"description":"Free-form location string, e.g. brookline, massachusetts, united states.","type":"string"},"middleName":{"description":"Middle name.","type":"string"},"minLikelihood":{"description":"Minimum People Data Labs likelihood score a match must reach to count as found. Omitted, this SKU sends 6; the People Data Labs default is 2.","maximum":10,"minimum":1,"type":"integer"},"name":{"description":"Full name, as an alternative to firstName plus lastName.","type":"string"},"pdlId":{"description":"People Data Labs persistent person id, as returned by this SKU's pdlId output.","type":"string"},"phone":{"description":"Phone number in international form, e.g. +16176695906.","type":"string"},"postalCode":{"description":"Postal or ZIP code to match on.","type":"string"},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"profile":{"description":"Social profile URL the person has used, e.g. a LinkedIn, Twitter, Facebook or GitHub profile. The strongest single identifier.","type":"string"},"region":{"description":"State or region to match on.","type":"string"},"required":{"description":"People Data Labs boolean expression over top-level fields that a match must satisfy, e.g. personal_emails or (emails and phone_numbers).","type":"string"},"school":{"description":"School the person attended, used to disambiguate a name match.","type":"string"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"streetAddress":{"description":"Street address to match on.","type":"string"},"titlecase":{"description":"Return text in title case instead of People Data Labs' lowercase default.","type":"boolean"}},"title":"Person Enrichment - People Data Labs input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"description":"The enriched person, or null when nothing matched.","oneOf":[{"type":"null"},{"properties":{"activityScore":{"description":"People Data Labs' qualitative score for how recently the profile showed activity.","type":"string"},"birthDate":{"description":"Date of birth as People Data Labs reports it, YYYY-MM-DD.","type":"string"},"birthYear":{"description":"Year of birth.","type":"integer"},"company":{"description":"The person's current employer.","properties":{"addressLine2":{"description":"Second line of the headquarters address.","type":"string"},"companyId":{"description":"People Data Labs company id.","type":"string"},"continent":{"description":"Headquarters continent.","type":"string"},"country":{"description":"Headquarters country.","type":"string"},"facebookUrl":{"description":"Company Facebook page URL.","format":"uri","type":"string"},"founded":{"description":"Year the company was founded.","type":"integer"},"geo":{"description":"Headquarters coordinates as \"lat,lon\".","type":"string"},"industry":{"description":"Company industry.","type":"string"},"industryV2":{"description":"Company industry on People Data Labs' newer taxonomy.","type":"string"},"linkedinId":{"description":"Company LinkedIn numeric id.","type":"string"},"linkedinUrl":{"description":"Company LinkedIn page URL.","format":"uri","type":"string"},"locality":{"description":"Headquarters city.","type":"string"},"locationName":{"description":"Headquarters location as one display string.","type":"string"},"metro":{"description":"Headquarters metro area.","type":"string"},"name":{"description":"Company name.","type":"string"},"postalCode":{"description":"Headquarters postal code.","type":"string"},"region":{"description":"Headquarters state or region.","type":"string"},"size":{"description":"Employee headcount band, e.g. 5001-10000.","type":"string"},"streetAddress":{"description":"Headquarters street address.","type":"string"},"twitterUrl":{"description":"Company X (Twitter) profile URL.","format":"uri","type":"string"},"website":{"description":"Company website domain.","type":"string"}},"type":"object"},"countries":{"description":"Every country associated with the person.","items":{"type":"string"},"type":"array"},"datasetVersion":{"description":"Version of the People Data Labs dataset this record came from.","type":"string"},"education":{"description":"Education history.","items":{"properties":{"degrees":{"description":"Degrees earned.","items":{"type":"string"},"type":"array"},"endDate":{"description":"When study ended.","type":"string"},"gpa":{"description":"Grade point average, when the person published one.","type":"number"},"majors":{"description":"Majors studied.","items":{"type":"string"},"type":"array"},"minors":{"description":"Minors studied.","items":{"type":"string"},"type":"array"},"schoolId":{"description":"People Data Labs school id.","type":"string"},"schoolLinkedinUrl":{"description":"School LinkedIn page URL.","format":"uri","type":"string"},"schoolLocationName":{"description":"School location as one display string.","type":"string"},"schoolName":{"description":"School name.","type":"string"},"schoolType":{"description":"School type, e.g. post-secondary institution.","type":"string"},"schoolWebsite":{"description":"School website domain.","type":"string"},"startDate":{"description":"When study started: YYYY, YYYY-MM or YYYY-MM-DD.","type":"string"}},"type":"object"},"type":"array"},"emails":{"description":"Every email address held for the person, with its kind.","items":{"properties":{"address":{"description":"Email address.","type":"string"},"type":{"description":"Address kind, e.g. professional or personal.","type":"string"}},"required":["address"],"type":"object"},"type":"array"},"experience":{"description":"Work history, most relevant first.","items":{"properties":{"companyContinent":{"description":"Employer headquarters continent.","type":"string"},"companyFacebookUrl":{"description":"Employer Facebook page URL.","format":"uri","type":"string"},"companyFounded":{"description":"Year the employer was founded.","type":"integer"},"companyGeo":{"description":"Employer headquarters coordinates as \"lat,lon\".","type":"string"},"companyId":{"description":"People Data Labs company id for the employer.","type":"string"},"companyIndustry":{"description":"Employer industry.","type":"string"},"companyIndustryV2":{"description":"Employer industry on the newer PeopleDataLabs taxonomy.","type":"string"},"companyLinkedinId":{"description":"Employer LinkedIn numeric id.","type":"string"},"companyLinkedinUrl":{"description":"Employer LinkedIn page URL.","format":"uri","type":"string"},"companyLocality":{"description":"Employer headquarters locality.","type":"string"},"companyLocationCountry":{"description":"Employer headquarters country.","type":"string"},"companyLocationName":{"description":"Employer headquarters as one display string.","type":"string"},"companyMetro":{"description":"Employer headquarters metro area.","type":"string"},"companyName":{"description":"Employer name.","type":"string"},"companyPostalCode":{"description":"Employer headquarters postal code.","type":"string"},"companyRegion":{"description":"Employer headquarters region or state.","type":"string"},"companySize":{"description":"Employer headcount band.","type":"string"},"companyStreetAddress":{"description":"Employer headquarters street address.","type":"string"},"companyTwitterUrl":{"description":"Employer X or Twitter profile URL.","format":"uri","type":"string"},"companyWebsite":{"description":"Employer website domain.","type":"string"},"endDate":{"description":"When the role ended, absent while the role is current.","type":"string"},"isPrimary":{"description":"True for the role People Data Labs treats as current.","type":"boolean"},"locationNames":{"description":"Where the role was based.","items":{"type":"string"},"type":"array"},"startDate":{"description":"When the role started: YYYY, YYYY-MM or YYYY-MM-DD.","type":"string"},"title":{"description":"Job title held.","type":"string"},"titleClass":{"description":"Normalized title class.","type":"string"},"titleLevels":{"description":"Seniority levels for the title.","items":{"type":"string"},"type":"array"},"titleRole":{"description":"Normalized role for the title.","type":"string"},"titleSubRole":{"description":"Normalized sub-role for the title.","type":"string"}},"type":"object"},"type":"array"},"facebookId":{"description":"Facebook numeric id.","type":"string"},"facebookUrl":{"description":"Facebook profile URL.","format":"uri","type":"string"},"facebookUsername":{"description":"Facebook handle.","type":"string"},"firstName":{"description":"First name.","type":"string"},"fullName":{"description":"Person's full name.","type":"string"},"githubUrl":{"description":"GitHub profile URL.","format":"uri","type":"string"},"githubUsername":{"description":"GitHub handle.","type":"string"},"industry":{"description":"Industry the person works in.","type":"string"},"interests":{"description":"Interests the person lists.","items":{"type":"string"},"type":"array"},"jobChangedUtc":{"description":"UTC epoch timestamp in seconds (Unix time) the person last changed jobs. Multiply by 1000 for a JS Date in milliseconds.","type":"number"},"jobStartDate":{"description":"When the current role started, as People Data Labs reports it: YYYY, YYYY-MM or YYYY-MM-DD.","type":"string"},"jobTitle":{"description":"Current job title.","type":"string"},"jobTitleClass":{"description":"Normalized title class, e.g. research_and_development.","type":"string"},"jobTitleLevels":{"description":"Seniority levels for the current title, e.g. cxo, owner.","items":{"type":"string"},"type":"array"},"jobTitleRole":{"description":"Normalized role for the current title, e.g. engineering.","type":"string"},"jobTitleSubRole":{"description":"Normalized sub-role for the current title.","type":"string"},"jobVerifiedUtc":{"description":"UTC epoch timestamp in seconds (Unix time) the current role was last verified. Multiply by 1000 for a JS Date in milliseconds.","type":"number"},"lastInitial":{"description":"Last initial.","type":"string"},"lastName":{"description":"Last name.","type":"string"},"linkedinId":{"description":"LinkedIn numeric member id.","type":"string"},"linkedinUrl":{"description":"LinkedIn profile URL.","format":"uri","type":"string"},"linkedinUsername":{"description":"LinkedIn vanity handle.","type":"string"},"location":{"description":"Where the person lives.","properties":{"addressLine2":{"description":"Second line of the address.","type":"string"},"continent":{"description":"Continent.","type":"string"},"country":{"description":"Country.","type":"string"},"geo":{"description":"Coordinates as \"lat,lon\".","type":"string"},"locality":{"description":"City.","type":"string"},"metro":{"description":"Metro area.","type":"string"},"name":{"description":"Location as one display string.","type":"string"},"postalCode":{"description":"Postal code.","type":"string"},"region":{"description":"State or region.","type":"string"},"streetAddress":{"description":"Street address.","type":"string"},"updatedUtc":{"description":"UTC epoch timestamp in seconds (Unix time) the location was last updated. Multiply by 1000 for a JS Date in milliseconds.","type":"number"}},"type":"object"},"locationNames":{"description":"Every location People Data Labs has associated with the person.","items":{"type":"string"},"type":"array"},"middleInitial":{"description":"Middle initial.","type":"string"},"middleName":{"description":"Middle name.","type":"string"},"mobilePhone":{"description":"Mobile phone number in international form.","type":"string"},"pdlId":{"description":"People Data Labs persistent person id. Send it back as this SKU's pdlId input.","type":"string"},"personalEmails":{"description":"Personal email addresses.","items":{"type":"string"},"type":"array"},"phoneNumbers":{"description":"Every phone number held for the person.","items":{"type":"string"},"type":"array"},"profileScore":{"description":"People Data Labs' qualitative score for how complete the profile is.","type":"string"},"profiles":{"description":"Every social profile linked to the person.","items":{"properties":{"network":{"description":"Network name, e.g. linkedin, github, twitter.","type":"string"},"profileId":{"description":"Network's own id for the profile.","type":"string"},"url":{"description":"Profile URL.","format":"uri","type":"string"},"username":{"description":"Handle on that network.","type":"string"}},"required":["network"],"type":"object"},"type":"array"},"recommendedPersonalEmail":{"description":"The personal address People Data Labs recommends reaching the person at.","type":"string"},"regions":{"description":"Every region associated with the person.","items":{"type":"string"},"type":"array"},"sex":{"description":"Sex recorded for the person.","type":"string"},"skills":{"description":"Skills the person lists.","items":{"type":"string"},"type":"array"},"streetAddresses":{"description":"Every street address associated with the person.","items":{"properties":{"addressLine2":{"description":"Second line of the address.","type":"string"},"continent":{"description":"Continent.","type":"string"},"country":{"description":"Country.","type":"string"},"geo":{"description":"Coordinates as \"lat,lon\".","type":"string"},"locality":{"description":"City.","type":"string"},"metro":{"description":"Metro area.","type":"string"},"name":{"description":"Address location as one display string.","type":"string"},"postalCode":{"description":"Postal code.","type":"string"},"region":{"description":"State or region.","type":"string"},"streetAddress":{"description":"Street address.","type":"string"}},"type":"object"},"type":"array"},"twitterUrl":{"description":"X (Twitter) profile URL.","format":"uri","type":"string"},"twitterUsername":{"description":"X (Twitter) handle.","type":"string"},"workEmail":{"description":"Best work email address.","type":"string"}},"required":["fullName"],"type":"object"}]},"found":{"description":"False when People Data Labs matched no person above the likelihood threshold.","type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"Person Enrichment - People Data Labs output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"Person Enrichment - People Data Labs","tags":["person-enrichment"],"x-mint":{"href":"/api-reference/person-enrichment/peopledatalabs"},"x-payment-info":{"price":{"amount":"0.240000","currency":"USD","mode":"fixed"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"amount":"0.240000","currency":"USD","minimumUsd":"0.001000","mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"amount":"0.240000","currency":"USD","minimumUsd":null,"mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/person_enrichment.prospeo":{"post":{"description":"Enrich one person into work email, mobile phone, full job history and employer firmographics from a LinkedIn URL, an email, or a name plus company domain.\n\n**Price:** \\$66.00 per 1,000 requests (flat per request - same cost regardless of results returned).\n\n**Routing:** one lane serves this API today, so a failed attempt has nowhere to fail over to. Payment outcome follows the selected rail's settlement policy.\n\n**Catalog:** [Person Enrichment - Prospeo pricing and uptime](https://getanyapi.com/api/person-enrichment/prospeo) - live USD price, lane routing, and measured 30-day uptime. [Every Person_enrichment endpoint](https://getanyapi.com/api/person-enrichment).","operationId":"person_enrichment_prospeo","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"linkedinUrl":"https://www.linkedin.com/in/dharmesh"},"schema":{"additionalProperties":false,"anyOf":[{"required":["linkedinUrl"]},{"required":["email"]},{"required":["personId"]},{"required":["firstName","lastName","companyWebsite"]},{"required":["firstName","lastName","companyName"]},{"required":["fullName","companyWebsite"]},{"required":["fullName","companyName"]}],"example":{"linkedinUrl":"https://www.linkedin.com/in/dharmesh"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"companyLinkedinUrl":{"description":"Employer LinkedIn page URL, for a more precise match.","format":"uri","type":"string"},"companyName":{"description":"Employer name. Avoid sending it alone; many companies share a name.","minLength":1,"type":"string"},"companyWebsite":{"description":"Employer domain, e.g. stripe.com. Preferred over companyName.","minLength":1,"type":"string"},"email":{"description":"Known email address, used as the sole identity seed for a reverse lookup.","format":"email","type":"string"},"enrichMobile":{"description":"Reveal the mobile number. Without it the number comes back masked.","type":"boolean"},"firstName":{"description":"First name. Send with lastName plus companyWebsite for the best hit rate.","minLength":1,"type":"string"},"fullName":{"description":"Full name, as an alternative to firstName plus lastName.","minLength":1,"type":"string"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"lastName":{"description":"Last name.","minLength":1,"type":"string"},"linkedinUrl":{"description":"LinkedIn profile URL. The most accurate identifier, alone or with a name.","format":"uri","type":"string"},"onlyVerifiedEmail":{"description":"Return a match only when Prospeo has a verified email for it. Defaults to false.","type":"boolean"},"onlyVerifiedMobile":{"description":"Return a match only when Prospeo has a verified mobile for it.","type":"boolean"},"personId":{"description":"Prospeo person id from an earlier People Search - Prospeo call.","minLength":1,"type":"string"},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true}},"title":"Person Enrichment - Prospeo input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"description":"The enriched person, or null when nothing matched.","oneOf":[{"type":"null"},{"properties":{"company":{"description":"The person's current employer, with Prospeo's full firmographic record.","properties":{"attributes":{"description":"What Prospeo detects about how the company sells.","properties":{"hasDemo":{"description":"The website offers a demo.","type":"boolean"},"hasDownloadable":{"description":"The website offers a download.","type":"boolean"},"hasFreeTrial":{"description":"The website offers a free trial.","type":"boolean"},"hasMobileApps":{"description":"The company publishes mobile apps.","type":"boolean"},"hasOnlineReviews":{"description":"The company has online reviews.","type":"boolean"},"hasPricing":{"description":"The website publishes pricing.","type":"boolean"},"isB2b":{"description":"The company sells to businesses.","type":"boolean"}},"type":"object"},"companyId":{"description":"Prospeo's own company identifier. Send it back as this SKU's companyId input.","type":"string"},"crunchbaseUrl":{"description":"Company Crunchbase profile URL.","format":"uri","type":"string"},"description":{"description":"Company description as the company writes it.","type":"string"},"descriptionAi":{"description":"Prospeo's own AI-written company summary.","type":"string"},"descriptionSeo":{"description":"Meta description from the company's website.","type":"string"},"domain":{"description":"Primary company domain.","type":"string"},"emailTech":{"description":"How the company's email is hosted.","properties":{"domain":{"description":"Domain the company's email addresses use.","type":"string"},"mxProvider":{"description":"Mail provider behind the domain's MX records.","type":"string"}},"type":"object"},"employeeCount":{"description":"Employees Prospeo currently counts.","type":"integer"},"employeeCountOnProspeo":{"description":"Employees of this company that Prospeo holds a profile for.","type":"integer"},"employeeRange":{"description":"Employee headcount band, e.g. 10000+.","type":"string"},"facebookUrl":{"description":"Company Facebook page URL.","format":"uri","type":"string"},"founded":{"description":"Year the company was founded.","type":"integer"},"funding":{"description":"Funding history.","properties":{"events":{"description":"One entry per funding round.","items":{"properties":{"amount":{"description":"Amount raised in USD.","type":"number"},"amountPrinted":{"description":"Amount raised as a display string.","type":"string"},"link":{"description":"Source URL for the round.","format":"uri","type":"string"},"raisedUtc":{"description":"UTC epoch timestamp in seconds (Unix time) the round closed. Multiply by 1000 for a JS Date in milliseconds.","type":"number"},"stage":{"description":"Round stage, e.g. Series E-J.","type":"string"}},"type":"object"},"type":"array"},"latestStage":{"description":"Most recent funding stage.","type":"string"},"latestUtc":{"description":"UTC epoch timestamp in seconds (Unix time) of the most recent round. Multiply by 1000 for a JS Date in milliseconds.","type":"number"},"rounds":{"description":"Number of funding rounds raised.","type":"integer"},"totalRaised":{"description":"Total capital raised, in USD.","type":"number"},"totalRaisedPrinted":{"description":"Total capital raised as a display string.","type":"string"}},"type":"object"},"image":{"description":"Company logo URL.","format":"uri","type":"string"},"industry":{"description":"Company industry.","type":"string"},"instagramUrl":{"description":"Company Instagram profile URL.","format":"uri","type":"string"},"jobPostings":{"description":"Open roles Prospeo currently sees for the company.","properties":{"activeCount":{"description":"Open roles currently posted.","type":"integer"},"activeTitles":{"description":"Titles of the open roles.","items":{"type":"string"},"type":"array"}},"type":"object"},"keywords":{"description":"Keywords Prospeo assigns the company.","items":{"type":"string"},"type":"array"},"linkedinId":{"description":"Company LinkedIn numeric id.","type":"string"},"linkedinUrl":{"description":"Company LinkedIn page URL.","format":"uri","type":"string"},"location":{"description":"Company headquarters.","properties":{"city":{"description":"City.","type":"string"},"country":{"description":"Country name.","type":"string"},"countryCode":{"description":"ISO 3166-1 alpha-2 country code.","type":"string"},"rawAddress":{"description":"Headquarters address as one display string.","type":"string"},"state":{"description":"State or region.","type":"string"}},"type":"object"},"naicsCodes":{"description":"NAICS classification codes for the company.","items":{"type":"string"},"type":"array"},"name":{"description":"Company name.","type":"string"},"otherWebsites":{"description":"Other domains the company owns.","items":{"type":"string"},"type":"array"},"phoneHq":{"description":"Headquarters switchboard number.","properties":{"country":{"description":"Country the number belongs to.","type":"string"},"countryCode":{"description":"ISO 3166-1 alpha-2 code for that country.","type":"string"},"international":{"description":"Number in international format.","type":"string"},"national":{"description":"Number in national format.","type":"string"},"phone":{"description":"Phone number as Prospeo stores it.","type":"string"}},"type":"object"},"revenueRange":{"description":"Annual revenue band in USD.","properties":{"max":{"description":"Upper bound in USD.","type":"number"},"min":{"description":"Lower bound in USD.","type":"number"}},"type":"object"},"revenueRangePrinted":{"description":"Annual revenue band as a display string.","type":"string"},"sicCodes":{"description":"SIC classification codes for the company.","items":{"type":"string"},"type":"array"},"technologies":{"description":"Technologies Prospeo detects in the company's stack.","items":{"type":"string"},"type":"array"},"twitterUrl":{"description":"Company X (Twitter) profile URL.","format":"uri","type":"string"},"type":{"description":"Ownership type, e.g. Private, Public, Non Profit.","type":"string"},"website":{"description":"Company website URL.","format":"uri","type":"string"},"youtubeUrl":{"description":"Company YouTube channel URL.","format":"uri","type":"string"}},"type":"object"},"email":{"description":"Work email address. Prospeo returns the address only once it is revealed; status says why it is absent otherwise.","properties":{"email":{"description":"The email address, when Prospeo revealed one.","type":"string"},"revealed":{"description":"True when the address below is the full value rather than a masked preview.","type":"boolean"},"status":{"description":"Prospeo's verdict for the address, e.g. VERIFIED or UNAVAILABLE.","type":"string"}},"type":"object"},"firstName":{"description":"First name.","type":"string"},"freeEnrichment":{"description":"True when Prospeo served this record from cache and did not charge for it.","type":"boolean"},"fullName":{"description":"Person's full name.","type":"string"},"headline":{"description":"LinkedIn headline.","type":"string"},"jobChangeDetectedUtc":{"description":"UTC epoch timestamp in seconds (Unix time) Prospeo last detected a job change. Multiply by 1000 for a JS Date in milliseconds.","type":"number"},"jobHistory":{"description":"Every role Prospeo holds for the person, most recent first.","items":{"properties":{"companyId":{"description":"Prospeo company id for the employer.","type":"string"},"companyName":{"description":"Employer name.","type":"string"},"current":{"description":"True while the role is current.","type":"boolean"},"departments":{"description":"Departments Prospeo assigns the role.","items":{"type":"string"},"type":"array"},"durationMonths":{"description":"How long the role has run, in months.","type":"integer"},"endMonth":{"description":"Month the role ended, absent while current.","type":"integer"},"endYear":{"description":"Year the role ended, absent while current.","type":"integer"},"jobKey":{"description":"Prospeo's identifier for this role.","type":"string"},"seniority":{"description":"Seniority band, e.g. C-Suite, Manager, Entry.","type":"string"},"startMonth":{"description":"Month the role started, 1 to 12.","type":"integer"},"startYear":{"description":"Year the role started.","type":"integer"},"title":{"description":"Job title held.","type":"string"}},"type":"object"},"type":"array"},"jobKey":{"description":"Prospeo's identifier for the current role.","type":"string"},"jobTitle":{"description":"Current job title.","type":"string"},"lastName":{"description":"Last name.","type":"string"},"linkedinMemberId":{"description":"LinkedIn numeric member id.","type":"string"},"linkedinUrl":{"description":"LinkedIn profile URL.","format":"uri","type":"string"},"location":{"description":"Where the person is located.","properties":{"city":{"description":"City.","type":"string"},"country":{"description":"Country name.","type":"string"},"countryCode":{"description":"ISO 3166-1 alpha-2 country code.","type":"string"},"state":{"description":"State or region.","type":"string"},"timeZone":{"description":"IANA time zone, e.g. America/New_York.","type":"string"},"timeZoneOffset":{"description":"Current offset from UTC in hours.","type":"number"}},"type":"object"},"mobile":{"description":"Mobile phone number. Digits are masked until the number is revealed; send enrichMobile to reveal it.","properties":{"country":{"description":"Country the number belongs to.","type":"string"},"countryCode":{"description":"ISO 3166-1 alpha-2 code for that country.","type":"string"},"international":{"description":"Number in international format.","type":"string"},"mobile":{"description":"The number as Prospeo stores it.","type":"string"},"national":{"description":"Number in national format.","type":"string"},"revealed":{"description":"True when the digits below are the full number rather than a masked preview.","type":"boolean"},"status":{"description":"Prospeo's verdict for the number, e.g. VERIFIED or UNAVAILABLE.","type":"string"}},"type":"object"},"personId":{"description":"Prospeo's own person identifier. Send it back as this SKU's personId input.","type":"string"},"skills":{"description":"Skills the person lists.","items":{"type":"string"},"type":"array"}},"required":["fullName"],"type":"object"}]},"found":{"description":"False when Prospeo matched nothing.","type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"Person Enrichment - Prospeo output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"Person Enrichment - Prospeo","tags":["person-enrichment"],"x-mint":{"href":"/api-reference/person-enrichment/prospeo"},"x-payment-info":{"price":{"amount":"0.066000","currency":"USD","mode":"fixed"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"amount":"0.066000","currency":"USD","minimumUsd":"0.001000","mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"amount":"0.066000","currency":"USD","minimumUsd":null,"mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/person_enrichment.quickenrich":{"post":{"description":"Turn a work email into the person behind it: name, title, LinkedIn, and their employer's firmographics. Coverage is strongest for small and local businesses.\n\n**Price:** \\$7.20 per 1,000 requests (flat per request - same cost regardless of results returned).\n\n**Routing:** one lane serves this API today, so a failed attempt has nowhere to fail over to. Payment outcome follows the selected rail's settlement policy.\n\n**Catalog:** [Person Enrichment - QuickEnrich pricing and uptime](https://getanyapi.com/api/person-enrichment/quickenrich) - live USD price, lane routing, and measured 30-day uptime. [Every Person_enrichment endpoint](https://getanyapi.com/api/person-enrichment).","operationId":"person_enrichment_quickenrich","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"email":"wprice@southmemphisfence.com"},"schema":{"additionalProperties":false,"example":{"email":"wprice@southmemphisfence.com"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"email":{"description":"Exact work email address to look up.","format":"email","maxLength":255,"type":"string"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true}},"required":["email"],"title":"Person Enrichment - QuickEnrich input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"description":"Normalized record, or null when the request matched nothing.","oneOf":[{"type":"null"},{"properties":{"address":{"description":"Street address on the employer record.","type":"string"},"city":{"description":"City on the employer record.","type":"string"},"companyDomain":{"description":"Employer website domain.","type":"string"},"companyEmployeeCount":{"description":"Employer headcount band, e.g. \"20 - 99\". Upstream band vocabulary; \"Not Available\" means the band is unknown.","type":"string"},"companyIndustry":{"description":"Employer industry label.","type":"string"},"companyLinkedinUrl":{"description":"Employer LinkedIn company URL.","type":"string"},"companyName":{"description":"Employer name.","type":"string"},"companyPhone":{"description":"Employer main phone line.","type":"string"},"companyRevenue":{"description":"Employer revenue band, e.g. \"1 - 2.5 Million\". Upstream band vocabulary; \"Not Available\" means the band is unknown.","type":"string"},"country":{"description":"ISO 3166-1 alpha-2 country code on the employer record.","type":"string"},"email":{"description":"Work email address.","type":"string"},"emailDomain":{"description":"Domain the work email resolves to.","type":"string"},"emailVerifiedUtc":{"description":"UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds.","type":"number"},"firstName":{"description":"Person's first name.","type":"string"},"lastName":{"description":"Person's last name.","type":"string"},"linkedinUrl":{"description":"Person's LinkedIn profile URL.","type":"string"},"phone":{"description":"Direct business phone line held for the person. Mostly desk lines; read phoneType before treating it as a mobile.","type":"string"},"phoneType":{"description":"Line type reported upstream, e.g. \"mobile\" or \"landline\".","type":"string"},"postalCode":{"description":"Postal code on the employer record.","type":"string"},"region":{"description":"State or region code on the employer record.","type":"string"},"title":{"description":"Person's job title.","type":"string"}},"required":["firstName"],"type":"object"}]},"found":{"description":"Whether the address matched a person.","type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"Person Enrichment - QuickEnrich output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"Person Enrichment - QuickEnrich","tags":["person-enrichment"],"x-mint":{"href":"/api-reference/person-enrichment/quickenrich"},"x-payment-info":{"price":{"amount":"0.007200","currency":"USD","mode":"fixed"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"amount":"0.007200","currency":"USD","minimumUsd":"0.001000","mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"amount":"0.007200","currency":"USD","minimumUsd":null,"mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/pinterest.search":{"post":{"description":"Search Pinterest by keyword and get pin, video, board, or profile results with titles, images, and links.\n\n**Price:** \\$0.80 per 1,000 requests (flat per request - same cost regardless of results returned).\n\n**Routing:** 2 independent lanes are available in execution order. A failed attempt uses the next lane only when the request's payment authorizes that lane's price; the normalized schema stays the same.\n\n**Catalog:** [Pinterest Search pricing and uptime](https://getanyapi.com/api/pinterest/search) - live USD price, lane routing, and measured 30-day uptime. [Every Pinterest endpoint](https://getanyapi.com/api/pinterest).","operationId":"pinterest_search","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"limit":3,"query":"home decor"},"schema":{"additionalProperties":false,"example":{"limit":3,"query":"home decor"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"cursor":{"description":"Opaque pagination cursor from a previous response's nextCursor. Omit for the first page.","type":"string"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"limit":{"description":"Maximum number of results to return from this page (1-20).","maximum":20,"minimum":1,"type":"integer"},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"query":{"description":"Keyword, topic, brand, or theme to search Pinterest for (e.g. mid-century living room).","type":"string"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"type":{"default":"all-pins","description":"Kind of results to return: all pins, only video pins, boards, or profiles (e.g. videos).","enum":["all-pins","videos","boards","profiles"],"type":"string"}},"required":["query"],"title":"Pinterest search input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"oneOf":[{"type":"null"},{"additionalProperties":false,"properties":{"items":{"description":"Matching Pinterest records: pin or board title, description, image/video URL, creator, and link. Populated whenever the provider has data for the entity.","items":{"properties":{"id":{"type":"string"},"title":{"type":"string"},"url":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true}},"required":["id","url","title"],"type":"object"},"type":"array","x-anyapi-must-populate":true},"nextCursor":{"description":"Opaque cursor for the next page of results, or null/empty when there are no more. Pass it back as cursor to continue.","type":["string","null"]}},"required":["items"],"type":"object"}]},"found":{"type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"Pinterest search output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"Pinterest Search","tags":["pinterest"],"x-mint":{"href":"/api-reference/pinterest/search"},"x-payment-info":{"price":{"amount":"0.000800","currency":"USD","mode":"fixed"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"amount":"0.001000","currency":"USD","minimumUsd":"0.001000","mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"amount":"0.000800","currency":"USD","minimumUsd":null,"mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/playstore.reviews":{"post":{"description":"Fetch Google Play reviews for any Android app by package name or store URL: ratings, review text, dates, and helpfulness votes.\n\n**Price:** billed per result - \\$0.13 per 1,000 results, capped at \\$12.10 per 1,000 requests.\n\n**Routing:** 2 independent lanes are available in execution order. A failed attempt uses the next lane only when the request's payment authorizes that lane's price; the normalized schema stays the same.\n\n**Catalog:** [Google Play Reviews pricing and uptime](https://getanyapi.com/api/playstore/reviews) - live USD price, lane routing, and measured 30-day uptime. [Every Playstore endpoint](https://getanyapi.com/api/playstore).","operationId":"playstore_reviews","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"appId":"com.whatsapp","limit":3},"schema":{"additionalProperties":false,"example":{"appId":"com.whatsapp","limit":3},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"appId":{"description":"Android app package name or full Google Play store URL (e.g. com.supercell.brawlstars).","type":"string"},"appVersion":{"description":"Only return reviews left on these app versions (e.g. [\"2.24.1\", \"2.24.2\"]).","items":{"type":"string"},"type":"array"},"deviceType":{"description":"Only return reviews from this device type (e.g. \"tablet\"); omit for the provider default.","enum":["mobile","tablet","chromebook"],"type":"string"},"endDate":{"description":"Only return reviews on or before this date, inclusive, in YYYY-MM-DD format (e.g. 2026-06-30).","type":"string"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"keywords":{"description":"Only return reviews whose text contains one of these keywords (e.g. [\"crash\", \"login\"]).","items":{"type":"string"},"type":"array"},"languages":{"description":"Only return reviews in these ISO 639-1 languages (e.g. [\"en\", \"es\"]).","items":{"type":"string"},"type":"array"},"limit":{"description":"Maximum number of results to return (1-100, default 100). You are billed per result returned, so a lower limit costs less.","maximum":100,"minimum":1,"type":"integer"},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"rating":{"description":"Only return reviews with this exact star rating from 1 to 5 (e.g. 1); omit for all ratings.","type":"integer"},"recentDays":{"description":"Only return reviews from the last N days (e.g. 30); omit for no time limit.","minimum":1,"type":"integer"},"requireFields":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Name the output fields this request must be able to return, for example `title` or `version`, and it is served only by a source that returns every one of them. Fields you do not name are still returned whenever the serving source has them. This can raise your price: when the cheapest source cannot return a named field, a dearer source serves, and you are quoted and charged its price. A named field can still be absent on a review that genuinely lacks it. Naming a combination that no single source returns together is refused as invalid input, with no charge.","items":{"enum":["appId","authorAvatarUrl","helpfulVotes","title","version"],"type":"string"},"type":"array","uniqueItems":true},"sortBy":{"description":"Review ordering: mostRelevant, newest, or rating (e.g. newest).","type":"string"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true}},"required":["appId"],"title":"Google Play reviews input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"description":"The result wrapper, or null when nothing was found.","oneOf":[{"type":"null"},{"additionalProperties":false,"properties":{"items":{"description":"Review records: star rating, review text, reviewer name, app version, helpfulness votes, and review date. Populated whenever the provider has data for the entity.","items":{"properties":{"appId":{"description":"Google Play package name the review belongs to.","type":"string"},"author":{"description":"Reviewer display name. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"authorAvatarUrl":{"description":"Reviewer profile photo URL.","type":"string"},"createdUtc":{"description":"UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds. When the review was posted. Populated whenever the provider has data for the entity.","type":"number","x-anyapi-must-populate":true},"helpfulVotes":{"description":"Number of helpful votes on the review.","type":"integer"},"id":{"description":"Review identifier. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"rating":{"description":"Star rating, 1 to 5. Populated whenever the provider has data for the entity.","type":"number","x-anyapi-must-populate":true},"text":{"description":"Review body text. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"title":{"description":"Review title, when the store provides one.","type":"string"},"version":{"description":"App version the review was left on.","type":"string"}},"required":["rating","text"],"type":"object"},"type":"array","x-anyapi-must-populate":true}},"required":["items"],"type":"object"}]},"found":{"description":"True when at least one review record was returned.","type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"Google Play reviews output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"Google Play Reviews","tags":["playstore"],"x-mint":{"href":"/api-reference/playstore/reviews"},"x-payment-info":{"price":{"currency":"USD","max":"0.012100","min":"0.000000","mode":"dynamic"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"currency":"USD","max":"0.012100","min":"0.001000","minimumUsd":"0.001000","mode":"dynamic","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"currency":"USD","max":"0.012100","min":"0.000000","minimumUsd":null,"mode":"dynamic","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/polymarket.markets":{"post":{"description":"Discover Polymarket prediction markets (question, outcome prices, volume, liquidity, and end dates) by keyword or sorted by activity, as normalized JSON.\n\n**Price:** billed per result - \\$116.00 per 1,000 requests base + \\$0.66 per 1,000 results, capped at \\$132.00 per 1,000 requests.\n\n**Routing:** one lane serves this API today, so a failed attempt has nowhere to fail over to. Payment outcome follows the selected rail's settlement policy.\n\n**Catalog:** [Polymarket Markets pricing and uptime](https://getanyapi.com/api/polymarket/markets) - live USD price, lane routing, and measured 30-day uptime. [Every Polymarket endpoint](https://getanyapi.com/api/polymarket).","operationId":"polymarket_markets","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"limit":10,"query":"election"},"schema":{"additionalProperties":false,"example":{"limit":10,"query":"election"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"limit":{"description":"Maximum number of results to return (1-25, default 25). You are billed per result returned, so a lower limit costs less.","maximum":25,"minimum":1,"type":"integer"},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"query":{"description":"Search term for markets (e.g. election, bitcoin, super bowl).","type":"string"},"sortBy":{"default":"volume_24hr","description":"How discovered markets are ordered before results are returned (e.g. volume_24hr for recent momentum).","enum":["volume_24hr","volume","liquidity","start_date","ending_soon","competitive"],"type":"string"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"status":{"default":"active","description":"Return \"active\" markets for current prices and volume, or \"resolved\" markets for historical outcomes.","enum":["active","resolved"],"type":"string"}},"required":["query"],"title":"Polymarket markets input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"description":"The result wrapper, or null when nothing was found.","oneOf":[{"type":"null"},{"additionalProperties":false,"properties":{"items":{"description":"Prediction-market records: market question, outcomes with current prices, volume, liquidity, and end date. Populated whenever the provider has data for the entity.","items":{"properties":{"bestAsk":{"description":"Best ask currently on the order book (0 to 1).","type":"number"},"bestBid":{"description":"Best bid currently on the order book (0 to 1).","type":"number"},"commentCount":{"description":"Number of comments on the event.","type":"integer"},"conditionId":{"description":"On-chain condition identifier for the market.","type":"string"},"createdUtc":{"description":"UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds. When the market was created.","type":"number"},"description":{"description":"Resolution rules for the market.","type":"string"},"endsUtc":{"description":"UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds. When the market resolves/ends.","type":"number"},"eventId":{"description":"Identifier of the parent event grouping this market.","type":"string"},"eventTitle":{"description":"Title of the parent event grouping this market.","type":"string"},"id":{"description":"Polymarket market identifier. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"image":{"description":"Event image URL.","type":"string"},"lastTradePrice":{"description":"Price of the most recent trade (0 to 1).","type":"number"},"liquidityUsd":{"description":"Available liquidity in USD.","type":"number"},"openInterestUsd":{"description":"Open interest in USD.","type":"number"},"outcomes":{"description":"Market outcomes with their current implied prices.","items":{"properties":{"name":{"description":"Outcome label, e.g. Yes or No.","type":"string"},"price":{"description":"Current implied probability price for the outcome (0 to 1).","type":"number"}},"type":"object"},"type":"array"},"slug":{"description":"URL slug of the market.","type":"string"},"spread":{"description":"Difference between the best ask and the best bid.","type":"number"},"startsUtc":{"description":"UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds. When trading opened.","type":"number"},"status":{"description":"Market status, e.g. active or closed.","type":"string"},"tags":{"description":"Polymarket topic tags for the event.","items":{"properties":{"name":{"description":"Tag label, e.g. Politics.","type":"string"},"slug":{"description":"Tag slug.","type":"string"}},"type":"object"},"type":"array"},"title":{"description":"The market question. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"updatedUtc":{"description":"UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds. When the market was last updated.","type":"number"},"url":{"description":"Polymarket URL for the market event. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"volume1mUsd":{"description":"Traded volume in USD over the past month.","type":"number"},"volume1wUsd":{"description":"Traded volume in USD over the past week.","type":"number"},"volume24hUsd":{"description":"Traded volume in USD over the past 24 hours.","type":"number"},"volumeUsd":{"description":"Total traded volume in USD.","type":"number"}},"required":["id","url","title"],"type":"object"},"type":"array","x-anyapi-must-populate":true}},"required":["items"],"type":"object"}]},"found":{"description":"True when at least one market record was returned.","type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"Polymarket markets output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"Polymarket Markets","tags":["polymarket"],"x-mint":{"href":"/api-reference/polymarket/markets"},"x-payment-info":{"price":{"currency":"USD","max":"0.132000","min":"0.116000","mode":"dynamic"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"currency":"USD","max":"0.132000","min":"0.116000","minimumUsd":"0.001000","mode":"dynamic","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"currency":"USD","max":"0.132000","min":"0.116000","minimumUsd":null,"mode":"dynamic","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/property_records.enformion":{"post":{"description":"Look up the public property records for one US address: current and previous owners, parcel number (APN), last sale, assessed and market values, property tax, beds, baths, living area, lot size, year built, land use, and zoning. One address can match several parcels, and every match is returned. Billed only when a record is found.\n\n**Price:** \\$153.60 per 1,000 requests (flat per request - same cost regardless of results returned).\n\n**Routing:** one lane serves this API today, so a failed attempt has nowhere to fail over to. Payment outcome follows the selected rail's settlement policy.\n\n**Catalog:** [Property Records - Enformion pricing and uptime](https://getanyapi.com/api/property-records/enformion) - live USD price, lane routing, and measured 30-day uptime. [Every Property_records endpoint](https://getanyapi.com/api/property-records).","operationId":"property_records_enformion","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"city":"Austin","state":"TX","street":"4510 Secure Ln","zip":"78725"},"schema":{"additionalProperties":false,"example":{"city":"Austin","state":"TX","street":"4510 Secure Ln","zip":"78725"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"city":{"description":"City of the property, e.g. Austin.","minLength":1,"type":"string"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"state":{"description":"US state of the property, as its two-letter code, e.g. TX.","maxLength":2,"minLength":2,"type":"string"},"street":{"description":"Street line of one US property address, e.g. 4510 Secure Ln. Include a unit number when there is one.","minLength":1,"type":"string"},"zip":{"description":"Five-digit ZIP code, optionally with its four-digit extension, e.g. 78725.","pattern":"^[0-9]{5}(-[0-9]{4})?$","type":"string"}},"required":["street","city","state"],"title":"Property Records - Enformion input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"description":"The matching property records, or null when nothing matched.","oneOf":[{"type":"null"},{"additionalProperties":false,"properties":{"records":{"description":"Every parcel on record at the address. A campus or multi-parcel address returns several.","items":{"properties":{"apn":{"description":"Assessor's parcel number (APN) the county files this parcel under.","type":"string"},"appraisedValue":{"description":"Total appraised value, in US dollars.","type":"number"},"assessedImprovementValue":{"description":"Assessed value of the buildings and other improvements, in US dollars.","type":"number"},"assessedLandValue":{"description":"Assessed value of the land alone, in US dollars.","type":"number"},"assessedValue":{"description":"Total assessed value for property tax, in US dollars.","type":"number"},"assessedYear":{"description":"Year of the assessment.","type":"integer"},"baths":{"description":"Number of bathrooms. Absent when the county records none.","type":"number"},"beds":{"description":"Number of bedrooms. Absent when the county records none.","type":"integer"},"city":{"description":"City of the property.","type":"string"},"county":{"description":"County the parcel is recorded in.","type":"string"},"currentOwners":{"description":"Owners on the current county record.","items":{"properties":{"isBusiness":{"description":"True when the owner is a company or other organization rather than a person.","type":"boolean"},"name":{"description":"Owner name, a person or a business.","type":"string"},"recordedUtc":{"description":"Date the ownership record was captured, as a UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds. It is not necessarily the purchase date; see lastSaleUtc.","type":"number"}},"required":["name"],"type":"object"},"type":"array"},"fipsCode":{"description":"Five-digit FIPS code of the county. Pair it with apn to identify the parcel nationally.","type":"string"},"foreclosureStage":{"description":"Foreclosure stage code, when the parcel is in foreclosure.","type":"string"},"landUse":{"description":"Land use as the county describes it, e.g. CONDOMINIUM or LABORATORY.","type":"string"},"lastSalePrice":{"description":"Price of the most recent recorded sale, in US dollars.","type":"number"},"lastSaleUtc":{"description":"Date of the most recent recorded sale, as a UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds.","type":"number"},"latitude":{"description":"Latitude of the parcel.","type":"number"},"livingAreaSqft":{"description":"Living area in square feet. Absent when the county records none.","type":"integer"},"longitude":{"description":"Longitude of the parcel.","type":"number"},"lotSize":{"description":"Lot size as the county records it, usually in square feet.","type":"number"},"marketImprovementValue":{"description":"Market value of the buildings and other improvements, in US dollars.","type":"number"},"marketLandValue":{"description":"Market value of the land alone, in US dollars.","type":"number"},"marketValue":{"description":"Total market value the county records, in US dollars.","type":"number"},"ownerMailingAddress":{"description":"Where the current owner receives mail, when the county records it.","type":"string"},"ownerOccupied":{"description":"True when the owner lives at the property.","type":"boolean"},"previousOwners":{"description":"Earlier owners of the parcel, most recent first.","items":{"properties":{"name":{"description":"Owner name, a person or a business.","type":"string"},"recordedUtc":{"description":"Date the ownership record was captured, as a UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds.","type":"number"}},"required":["name"],"type":"object"},"type":"array"},"propertyType":{"description":"Property type, e.g. SINGLE FAMILY RESIDENCE, INDUSTRIAL, or EXEMPT.","type":"string"},"state":{"description":"Two-letter US state code.","type":"string"},"street":{"description":"Street line of the property address, e.g. 4510 Secure LN.","type":"string"},"taxAccountNumber":{"description":"The county tax account number for the parcel.","type":"string"},"taxAmount":{"description":"Annual property tax billed, in US dollars.","type":"number"},"taxYear":{"description":"Year the tax amount was billed for.","type":"integer"},"yearBuilt":{"description":"Year the main building was built.","type":"integer"},"zip":{"description":"Five-digit ZIP code.","type":"string"},"zoning":{"description":"Zoning code or zoning description on the county record.","type":"string"}},"required":["street"],"type":"object"},"type":"array"}},"required":["records"],"type":"object"}]},"found":{"description":"False when no property record matched the address.","type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"Property Records - Enformion output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"Property Records - Enformion","tags":["property-records"],"x-mint":{"href":"/api-reference/property-records/enformion"},"x-payment-info":{"price":{"amount":"0.153600","currency":"USD","mode":"fixed"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"amount":"0.153600","currency":"USD","minimumUsd":"0.001000","mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"amount":"0.153600","currency":"USD","minimumUsd":null,"mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/realtor.search":{"post":{"description":"Search Realtor.com listings by location with optional price, property-type, beds/baths, listing-status, and keyword filters and get property records (price, address, beds, baths) as normalized JSON.\n\n**Price:** billed per result - \\$5.50 per 1,000 requests base + \\$1.65 per 1,000 results, capped at \\$46.80 per 1,000 requests.\n\n**Routing:** one lane serves this API today, so a failed attempt has nowhere to fail over to. Payment outcome follows the selected rail's settlement policy.\n\n**Catalog:** [Realtor.com Search pricing and uptime](https://getanyapi.com/api/realtor/search) - live USD price, lane routing, and measured 30-day uptime. [Every Realtor endpoint](https://getanyapi.com/api/realtor).","operationId":"realtor_search","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"bedsMin":4,"limit":3,"location":"Austin, TX","propertyTypes":["single_family"],"searchStatuses":["pending"]},"schema":{"additionalProperties":false,"example":{"bedsMin":4,"limit":3,"location":"Austin, TX","propertyTypes":["single_family"],"searchStatuses":["pending"]},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"bathsMin":{"description":"Minimum number of bathrooms (e.g. 2).","minimum":0,"type":"integer"},"bedsMin":{"description":"Minimum number of bedrooms (e.g. 3).","minimum":0,"type":"integer"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"keyword":{"description":"Free-text keyword that must appear in the listing description (e.g. 'pool').","type":"string"},"limit":{"description":"Maximum number of results to return (1-25, default 25). You are billed per result returned, so a lower limit costs less.","maximum":25,"minimum":1,"type":"integer"},"location":{"description":"City, ZIP code, neighborhood or state to search (e.g. Las Vegas, NV).","type":"string"},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"priceMax":{"description":"Maximum listing price in USD (e.g. 750000).","minimum":0,"type":"integer"},"priceMin":{"description":"Minimum listing price in USD (e.g. 250000).","minimum":0,"type":"integer"},"propertyTypes":{"description":"Filter by one or more property types; omit for all types (e.g. [\"single_family\", \"townhomes\"]).","items":{"enum":["single_family","townhomes","condo_townhome","multi_family","land","farm","manufactured","mobile","apartment","coop","duplex_triplex"],"type":"string"},"type":"array"},"searchMode":{"default":"for_sale","description":"Listing type to search: for_sale or sold (e.g. for_sale).","enum":["for_sale","sold"],"type":"string"},"searchStatuses":{"description":"Listing statuses to include in for_sale mode; omit for active For Sale + Ready to Build. Ignored in sold mode (e.g. [\"for_sale\", \"pending\"]).","items":{"enum":["for_sale","ready_to_build","pending","coming_soon","contingent"],"type":"string"},"type":"array"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true}},"required":["location"],"title":"Realtor.com search input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"description":"The result wrapper, or null when nothing matched.","oneOf":[{"type":"null"},{"additionalProperties":false,"properties":{"items":{"description":"Matching Realtor.com property listing records. Populated whenever the provider has data for the entity.","items":{"properties":{"addressLine":{"description":"Street address line of the property.","type":"string"},"agentEmail":{"description":"Contact email for the listing agent.","type":"string"},"agentName":{"description":"Name of the listing agent.","type":"string"},"agentPhone":{"description":"Contact phone number for the listing agent.","type":"string"},"agentUrl":{"description":"Realtor.com profile URL of the listing agent.","type":"string"},"baths":{"description":"Consolidated bathroom count (e.g. \"3.5\" for three full and one half bath).","type":"string"},"beds":{"description":"Number of bedrooms.","type":"number"},"brokerName":{"description":"Listing brokerage or office name.","type":"string"},"city":{"description":"City the property is in.","type":"string"},"country":{"description":"Country the property is in.","type":"string"},"county":{"description":"County the property is in.","type":"string"},"createdUtc":{"description":"UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds.","type":"number"},"daysOnMarket":{"description":"Number of days the listing has been on the market.","type":"number"},"description":{"description":"Listing description written by the agent.","type":"string"},"garageSpaces":{"description":"Number of garage spaces.","type":"number"},"hoaFee":{"description":"Homeowners association fee, in US dollars, at the frequency Realtor.com reports.","type":"number"},"image":{"description":"Primary listing photo URL.","type":"string"},"images":{"description":"Listing photo URLs.","items":{"type":"string"},"type":"array"},"isNewConstruction":{"description":"True when the listing is new construction.","type":"boolean"},"latitude":{"description":"Latitude of the property in decimal degrees.","type":"number"},"listingId":{"description":"Realtor.com listing id for this specific listing of the property.","type":"string"},"longitude":{"description":"Longitude of the property in decimal degrees.","type":"number"},"lotSqft":{"description":"Lot size in square feet.","type":"number"},"mlsId":{"description":"MLS number for the listing.","type":"string"},"mlsName":{"description":"Name of the multiple listing service the listing came from.","type":"string"},"postalCode":{"description":"Postal (ZIP) code of the property.","type":"string"},"price":{"description":"Current list price in US dollars.","type":"number"},"pricePerSqft":{"description":"List price per square foot in US dollars.","type":"number"},"propertyId":{"description":"Realtor.com property id (stable identifier for the listing). Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"propertyType":{"description":"Property type (e.g. single_family, condos, townhomes).","type":"string"},"sqft":{"description":"Interior living area in square feet.","type":"number"},"state":{"description":"Two-letter state code the property is in.","type":"string"},"status":{"description":"Display listing status, including ready-to-build, pending, contingent, and coming-soon sub-statuses when present.","enum":["for_sale","ready_to_build","sold","pending","contingent","coming_soon"],"type":"string"},"stories":{"description":"Number of storeys in the home.","type":"number"},"tags":{"description":"Realtor.com feature tags for the property (e.g. central_air, garage_1_or_more).","items":{"type":"string"},"type":"array"},"taxAmount":{"description":"Most recent annual property tax paid, in US dollars.","type":"number"},"taxAssessedValue":{"description":"Most recent assessed value from the county tax authority, in US dollars.","type":"number"},"title":{"description":"Human-readable street address line used as the listing title.","type":"string"},"updatedUtc":{"description":"UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds. When the listing was last updated.","type":"number"},"url":{"description":"Canonical Realtor.com listing detail page URL. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"yearBuilt":{"description":"Year the property was built.","type":"number"}},"required":["propertyId","url"],"type":"object"},"type":"array","x-anyapi-must-populate":true}},"required":["items"],"type":"object"}]},"found":{"description":"True when the search returned at least one matching listing.","type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"Realtor.com search output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"Realtor.com Search","tags":["realtor"],"x-mint":{"href":"/api-reference/realtor/search"},"x-payment-info":{"price":{"currency":"USD","max":"0.046800","min":"0.005500","mode":"dynamic"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"currency":"USD","max":"0.046800","min":"0.005500","minimumUsd":"0.001000","mode":"dynamic","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"currency":"USD","max":"0.046800","min":"0.005500","minimumUsd":null,"mode":"dynamic","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/reddit.avatar":{"post":{"description":"Get a Reddit user's profile picture URL, karma, and account age by username. The cheapest Reddit user lookup; use reddit.profile for bio, trophies, and post and comment counts.\n\n**Price:** \\$0.38 per 1,000 requests (flat per request - same cost regardless of results returned).\n\n**Routing:** 2 independent lanes are available in execution order. A failed attempt uses the next lane only when the request's payment authorizes that lane's price; the normalized schema stays the same.\n\n**Catalog:** [Reddit Avatar pricing and uptime](https://getanyapi.com/api/reddit/avatar) - live USD price, lane routing, and measured 30-day uptime. [Every Reddit endpoint](https://getanyapi.com/api/reddit).","operationId":"reddit_avatar","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"username":"spez"},"schema":{"additionalProperties":false,"example":{"username":"spez"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"username":{"description":"Reddit username, without the u/ prefix. Example: \"spez\".","minLength":1,"type":"string"}},"required":["username"],"title":"Reddit avatar input","type":"object","x-aliases":{"handle":"username"}}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"description":"The user record, or null when nothing was found.","oneOf":[{"type":"null"},{"properties":{"avatarUrl":{"description":"URL of the profile avatar image, with sizing and signing query params stripped. Populated whenever the provider has data for the entity.","format":"uri","type":"string","x-anyapi-must-populate":true},"commentKarma":{"description":"Karma earned from comments. Populated whenever the provider has data for the entity.","type":"integer","x-anyapi-must-populate":true},"createdUtc":{"description":"UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds. Populated whenever the provider has data for the entity.","type":"number","x-anyapi-must-populate":true},"id":{"description":"Reddit account ID (base-36, without the t2_ prefix). Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"karma":{"description":"Total karma across the account, as Reddit reports it. The postKarma and commentKarma fields below are the split it is composed of. Populated whenever the provider has data for the entity.","type":"integer","x-anyapi-must-populate":true},"postKarma":{"description":"Karma earned from posts. Populated whenever the provider has data for the entity.","type":"integer","x-anyapi-must-populate":true},"profileUrl":{"description":"Absolute reddit.com URL of the profile page. Populated whenever the provider has data for the entity.","format":"uri","type":"string","x-anyapi-must-populate":true},"username":{"description":"Account username, without the u/ prefix. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true}},"required":["id","username"],"type":"object"}]},"found":{"description":"True when the account was found; false when the lookup returned nothing.","type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"Reddit avatar output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"Reddit Avatar","tags":["reddit"],"x-mint":{"href":"/api-reference/reddit/avatar"},"x-payment-info":{"price":{"amount":"0.000380","currency":"USD","mode":"fixed"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"amount":"0.001000","currency":"USD","minimumUsd":"0.001000","mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"amount":"0.000380","currency":"USD","minimumUsd":null,"mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/reddit.post":{"post":{"description":"Fetch a single Reddit post by URL, including its full body text, score, comment count, upvote ratio, and subreddit, as normalized JSON.\n\n**Price:** \\$0.50 per 1,000 requests (flat per request - same cost regardless of results returned).\n\n**Routing:** 4 independent lanes are available in execution order. A failed attempt uses the next lane only when the request's payment authorizes that lane's price; the normalized schema stays the same.\n\n**Catalog:** [Reddit Post pricing and uptime](https://getanyapi.com/api/reddit/post) - live USD price, lane routing, and measured 30-day uptime. [Every Reddit endpoint](https://getanyapi.com/api/reddit).","operationId":"reddit_post","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"url":"https://www.reddit.com/r/IAmA/comments/z1c9z/i_am_barack_obama_president_of_the_united_states/"},"schema":{"additionalProperties":false,"example":{"url":"https://www.reddit.com/r/IAmA/comments/z1c9z/i_am_barack_obama_president_of_the_united_states/"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"url":{"description":"Full Reddit post URL in the /r/\u003csubreddit\u003e/comments/\u003cid\u003e/\u003cslug\u003e/ form, e.g. \"https://www.reddit.com/r/IAmA/comments/z1c9z/i_am_barack_obama_president_of_the_united_states/\". The short \"reddit.com/comments/\u003cid\u003e\" form is not accepted.","minLength":1,"type":"string"}},"required":["url"],"title":"Reddit post input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"description":"The post record, or null when nothing was found.","oneOf":[{"type":"null"},{"properties":{"author":{"description":"Author username, without the u/ prefix. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"authorId":{"description":"Reddit account ID of the author, without the t2_ prefix.","type":"string"},"body":{"description":"The post's own body text (selftext), as Markdown. Empty for link posts, which carry no body. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"createdUtc":{"description":"UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds.","type":"number"},"domain":{"description":"Domain the post links to, for example \"self.IAmA\" for a text post.","type":"string"},"editedUtc":{"description":"UTC epoch timestamp in seconds (Unix time) of the last edit. Multiply by 1000 for a JS Date in milliseconds.","type":"number"},"id":{"description":"Reddit post ID (base-36, without the t3_ prefix). Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"image":{"description":"Preview image for the post, when Reddit generated one. Reddit signs this URL and it is time-limited, so fetch it promptly rather than storing it; the query string carries the signature and must be kept intact. Empty when the post has no preview image.","type":"string"},"isArchived":{"description":"True when Reddit has archived the thread, which blocks new comments and votes. Archiving is a per-community setting, so an old thread is not necessarily archived. Absent when the source that served this request does not report it, which means unknown rather than false.","type":"boolean"},"isLocked":{"description":"True when a moderator has locked the thread, which blocks new comments. Absent when the source that served this request does not report it, which means unknown rather than false.","type":"boolean"},"isNsfw":{"description":"True when the post is marked NSFW (over 18).","type":"boolean"},"numComments":{"description":"Total number of comments on the post.","type":"integer"},"permalink":{"description":"Canonical reddit.com thread path for the post (e.g. \"/r/golang/comments/abc123/...\"). Differs from url, which is the destination link. Empty if the upstream omits it. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"score":{"description":"Net score (upvotes minus downvotes) at fetch time.","type":"integer"},"subreddit":{"description":"Subreddit name, without the r/ prefix. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"title":{"description":"Post title. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"upvoteRatio":{"description":"Fraction of votes that are upvotes, between 0 and 1. Zero when the upstream does not report it.","type":"number"},"url":{"description":"The post's destination link (the external URL for link posts, or the thread URL for self posts). Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true}},"required":["id","title","author","score","numComments","url","permalink","createdUtc","subreddit"],"type":"object"}]},"found":{"description":"True when the post was found; false when the lookup returned nothing.","type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"Reddit post output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"Reddit Post","tags":["reddit"],"x-mint":{"href":"/api-reference/reddit/post"},"x-payment-info":{"price":{"amount":"0.000500","currency":"USD","mode":"fixed"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"amount":"0.001000","currency":"USD","minimumUsd":"0.001000","mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"amount":"0.000500","currency":"USD","minimumUsd":null,"mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/reddit.post_comments":{"post":{"description":"List the top-level comments on a Reddit post by URL (author, body, score, timestamp).\n\n**Price:** \\$0.60 per 1,000 requests (flat per request - same cost regardless of results returned).\n\n**Routing:** 2 independent lanes are available in execution order. A failed attempt uses the next lane only when the request's payment authorizes that lane's price; the normalized schema stays the same.\n\n**Catalog:** [Reddit Post Comments pricing and uptime](https://getanyapi.com/api/reddit/post-comments) - live USD price, lane routing, and measured 30-day uptime. [Every Reddit endpoint](https://getanyapi.com/api/reddit).","operationId":"reddit_post_comments","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"url":"https://www.reddit.com/r/IAmA/comments/z1c9z/i_am_barack_obama_president_of_the_united_states/"},"schema":{"additionalProperties":false,"example":{"url":"https://www.reddit.com/r/IAmA/comments/z1c9z/i_am_barack_obama_president_of_the_united_states/"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"cursor":{"description":"Cursor from a previous response for more comments.","type":"string"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"url":{"description":"Full Reddit post URL on reddit.com. A gallery link (https://www.reddit.com/gallery/\u003cid\u003e) is read as the post it belongs to.","pattern":"^(?:https?://)?(?:[A-Za-z0-9-]+\\.)*(?:reddit\\.com|redd\\.it)(?:[/?#]|$)","type":"string"}},"required":["url"],"title":"Reddit post comments input","type":"object","x-anyapi-input-normalizers":{"url":"reddit_gallery_to_post"}}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"oneOf":[{"type":"null"},{"additionalProperties":false,"properties":{"comments":{"description":"Populated whenever the provider has data for the entity.","items":{"properties":{"author":{"description":"Commenter username, without the u/ prefix. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"body":{"description":"Comment text, as Markdown. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"createdUtc":{"description":"UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds.","type":"number"},"id":{"description":"Reddit comment ID (base-36, without the t1_ prefix). Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"score":{"description":"Net score (upvotes minus downvotes) on the comment at fetch time.","type":"integer"},"url":{"description":"Permalink to the comment on reddit.com. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true}},"required":["id","author","body","url","createdUtc"],"type":"object"},"type":"array","x-anyapi-must-populate":true},"media":{"description":"Photo, video, and GIF attachments on the post. Empty when the post has none.","items":{"properties":{"height":{"type":"integer"},"type":{"description":"One of photo, video, or gif.","type":"string"},"url":{"description":"Image URL. For a video or GIF this is the poster/thumbnail frame.","format":"uri","type":"string"},"videoUrl":{"description":"Playable video file URL. Present only for video and gif items.","format":"uri","type":"string"},"width":{"type":"integer"}},"required":["type","url"],"type":"object"},"type":"array"},"nextCursor":{"description":"Opaque cursor for the next page of comments, or null when this lane has no more. Pass it back as cursor to continue.","type":["string","null"]}},"required":["comments","nextCursor"],"type":"object"}]},"found":{"type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"Reddit post comments output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"Reddit Post Comments","tags":["reddit"],"x-mint":{"href":"/api-reference/reddit/post-comments"},"x-payment-info":{"price":{"amount":"0.000600","currency":"USD","mode":"fixed"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"amount":"0.001000","currency":"USD","minimumUsd":"0.001000","mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"amount":"0.000600","currency":"USD","minimumUsd":null,"mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/reddit.post_transcript":{"post":{"description":"Extract the spoken transcript from a Reddit video post by URL.\n\n**Price:** \\$1.20 per 1,000 requests (flat per request - same cost regardless of results returned).\n\n**Routing:** one lane serves this API today, so a failed attempt has nowhere to fail over to. Payment outcome follows the selected rail's settlement policy.\n\n**Catalog:** [Reddit Post Transcript pricing and uptime](https://getanyapi.com/api/reddit/post-transcript) - live USD price, lane routing, and measured 30-day uptime. [Every Reddit endpoint](https://getanyapi.com/api/reddit).","operationId":"reddit_post_transcript","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"url":"https://www.reddit.com/r/youseeingthisshit/comments/1oiu9xm/"},"schema":{"additionalProperties":false,"example":{"url":"https://www.reddit.com/r/youseeingthisshit/comments/1oiu9xm/"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"language":{"description":"Optional two-letter language code (defaults to en).","type":"string"},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"url":{"description":"Reddit post URL or direct v.redd.it video URL to transcribe.","type":"string"}},"required":["url"],"title":"Reddit Post Transcript input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"oneOf":[{"type":"null"},{"properties":{"language":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"postId":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"transcript":{"type":"string"},"transcriptNotAvailable":{"type":"boolean"},"url":{"description":"Canonical URL of the post the transcript belongs to.","type":"string"}},"required":["postId","language","transcript","transcriptNotAvailable"],"type":"object"}]},"found":{"type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"Reddit Post Transcript output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"Reddit Post Transcript","tags":["reddit"],"x-mint":{"href":"/api-reference/reddit/post-transcript"},"x-payment-info":{"price":{"amount":"0.001200","currency":"USD","mode":"fixed"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"amount":"0.001200","currency":"USD","minimumUsd":"0.001000","mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"amount":"0.001200","currency":"USD","minimumUsd":null,"mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/reddit.profile":{"post":{"description":"Fetch a Reddit user's public profile (karma split, post and comment counts, bio, avatar, account age) by username.\n\n**Price:** \\$1.20 per 1,000 requests (flat per request - same cost regardless of results returned).\n\n**Routing:** 2 independent lanes are available in execution order. A failed attempt uses the next lane only when the request's payment authorizes that lane's price; the normalized schema stays the same.\n\n**Catalog:** [Reddit Profile pricing and uptime](https://getanyapi.com/api/reddit/profile) - live USD price, lane routing, and measured 30-day uptime. [Every Reddit endpoint](https://getanyapi.com/api/reddit).","operationId":"reddit_profile","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"username":"spez"},"schema":{"additionalProperties":false,"example":{"username":"spez"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"username":{"description":"Reddit username, without the u/ prefix. Example: \"spez\".","minLength":1,"type":"string"}},"required":["username"],"title":"Reddit profile input","type":"object","x-aliases":{"handle":"username"}}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"description":"The profile record, or null when nothing was found.","oneOf":[{"type":"null"},{"properties":{"avatarUrl":{"description":"URL of the profile avatar image, with sizing and signing query params stripped. Populated whenever the provider has data for the entity.","format":"uri","type":"string","x-anyapi-must-populate":true},"bio":{"description":"Public profile description text. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"commentKarma":{"description":"Karma earned from comments. Populated whenever the provider has data for the entity.","type":"integer","x-anyapi-must-populate":true},"comments":{"description":"Number of comments the account has contributed. Populated whenever the provider has data for the entity.","type":"integer","x-anyapi-must-populate":true},"createdUtc":{"description":"UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds. Populated whenever the provider has data for the entity.","type":"number","x-anyapi-must-populate":true},"displayName":{"description":"Profile display title. Reddit defaults it to the username when the account has not set one. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"employee":{"description":"True when the account belongs to a Reddit employee.","type":"boolean"},"followers":{"description":"Number of profile subscribers. Reddit reports 0 for accounts that do not expose a follower count.","type":"integer"},"id":{"description":"Reddit account ID (base-36, without the t2_ prefix). Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"karma":{"description":"Total karma across the account, as Reddit reports it. The postKarma and commentKarma fields below are the split it is composed of. Populated whenever the provider has data for the entity.","type":"integer","x-anyapi-must-populate":true},"nsfw":{"description":"True when the profile is marked NSFW (over 18).","type":"boolean"},"postKarma":{"description":"Karma earned from posts. Populated whenever the provider has data for the entity.","type":"integer","x-anyapi-must-populate":true},"posts":{"description":"Number of posts the account has contributed. Populated whenever the provider has data for the entity.","type":"integer","x-anyapi-must-populate":true},"profileUrl":{"description":"Absolute reddit.com URL of the profile page. Populated whenever the provider has data for the entity.","format":"uri","type":"string","x-anyapi-must-populate":true},"trophies":{"description":"Number of trophies unlocked in the account's trophy case. Populated whenever the provider has data for the entity.","type":"integer","x-anyapi-must-populate":true},"username":{"description":"Account username, without the u/ prefix. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"verified":{"description":"True when the account is verified by Reddit.","type":"boolean"}},"required":["id","username"],"type":"object"}]},"found":{"description":"True when the account was found; false when the lookup returned nothing.","type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"Reddit profile output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"Reddit Profile","tags":["reddit"],"x-mint":{"href":"/api-reference/reddit/profile"},"x-payment-info":{"price":{"amount":"0.001200","currency":"USD","mode":"fixed"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"amount":"0.001200","currency":"USD","minimumUsd":"0.001000","mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"amount":"0.001200","currency":"USD","minimumUsd":null,"mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/reddit.search":{"post":{"description":"Search Reddit posts across all subreddits by query.\n\n**Price:** \\$0.38 per 1,000 requests (flat per request - same cost regardless of results returned).\n\n**Routing:** 4 independent lanes are available in execution order. A failed attempt uses the next lane only when the request's payment authorizes that lane's price; the normalized schema stays the same.\n\n**Catalog:** [Reddit Search pricing and uptime](https://getanyapi.com/api/reddit/search) - live USD price, lane routing, and measured 30-day uptime. [Every Reddit endpoint](https://getanyapi.com/api/reddit).","operationId":"reddit_search","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"query":"mechanical keyboard"},"schema":{"additionalProperties":false,"example":{"query":"mechanical keyboard"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"cursor":{"description":"Opaque pagination cursor from a previous response's nextCursor. Omit for the first page; pass it to fetch the next page of results.","type":"string"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"query":{"description":"Free-text search across all of Reddit. Reddit's field operators are supported inside the string: subreddit:\u003cname\u003e to scope to one subreddit, author:\u003cuser\u003e, title:\u003ctext\u003e, selftext:\u003ctext\u003e, self:yes|no, nsfw:yes|no, and boolean AND/OR/NOT. To restrict to a single subreddit you can use subreddit:\u003cname\u003e here, or use the reddit.subreddit_posts SKU for a plain subreddit listing.","type":"string"},"requireFields":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Name the output fields this request must be able to return, for example `isArchived` or `media`, and it is served only by a source that returns every one of them. Fields you do not name are still returned whenever the serving source has them. This can raise your price: when the cheapest source cannot return a named field, a dearer source serves, and you are quoted and charged its price. A named field can still be absent on a post that genuinely lacks it. Naming a combination that no single source returns together is refused as invalid input, with no charge. On a paginated walk it applies to the first page only; later pages stay with the source that page chose, at the price it was quoted.","items":{"enum":["author","authorId","createdUtc","isArchived","isLocked","media","nextCursor","nsfw","numComments","score","selftext"],"type":"string"},"type":"array","uniqueItems":true},"sort":{"description":"Result sort order.","enum":["relevance","hot","top","new","comments"],"type":"string"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"timeframe":{"description":"Time window for results.","enum":["hour","day","week","month","year","all"],"type":"string"}},"required":["query"],"title":"Reddit search input","type":"object","x-aliases":{"q":"query","time":"timeframe","time_filter":"timeframe"}}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"oneOf":[{"type":"null"},{"additionalProperties":false,"properties":{"nextCursor":{"description":"Opaque cursor for the next page of posts, or null when this lane has no more. Pass it back as cursor to continue.","type":["string","null"]},"posts":{"description":"Populated whenever the provider has data for the entity.","items":{"properties":{"author":{"description":"Author username, without the u/ prefix. Empty when the upstream omits it.","type":"string"},"authorId":{"description":"Reddit account ID of the author, without the t2_ prefix.","type":"string"},"createdUtc":{"description":"UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds.","type":"number"},"id":{"description":"Reddit post ID (base-36, without the t3_ prefix). Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"isArchived":{"description":"True when Reddit has archived the thread, which blocks new comments and votes. Archiving is a per-community setting, so an old thread is not necessarily archived. Absent when the source that served this request does not report it, which means unknown rather than false.","type":"boolean"},"isLocked":{"description":"True when a moderator has locked the thread, which blocks new comments. Absent when the source that served this request does not report it, which means unknown rather than false.","type":"boolean"},"media":{"description":"Photo, video, and GIF attachments on the post. Empty when the post has none.","items":{"properties":{"height":{"type":"integer"},"type":{"description":"One of photo, video, or gif.","type":"string"},"url":{"description":"Image URL. For a video or GIF this is the poster/thumbnail frame.","format":"uri","type":"string"},"videoUrl":{"description":"Playable video file URL. Present only for video and gif items.","format":"uri","type":"string"},"width":{"type":"integer"}},"required":["type","url"],"type":"object"},"type":"array"},"nsfw":{"description":"Whether the post is marked not-safe-for-work.","type":"boolean"},"numComments":{"description":"Total number of comments on the post.","type":"integer"},"permalink":{"description":"Canonical reddit.com thread path for the post (e.g. \"/r/golang/comments/abc123/...\"). Differs from url, which is the destination link. Empty if the upstream omits it. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"score":{"description":"Net score (upvotes minus downvotes) at fetch time.","type":"integer"},"selftext":{"description":"Body text of a self post, as Markdown. Empty on a link post, which has no body.","type":"string"},"subreddit":{"description":"Subreddit name, without the r/ prefix. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"title":{"description":"Post title. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"url":{"description":"The post's destination link (the external URL for link posts, or the thread URL for self posts). Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true}},"required":["id","title","author","score","numComments","url","permalink","createdUtc","subreddit"],"type":"object"},"type":"array","x-anyapi-must-populate":true}},"required":["posts","nextCursor"],"type":"object"}]},"found":{"type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"Reddit search output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"Reddit Search","tags":["reddit"],"x-mint":{"href":"/api-reference/reddit/search"},"x-payment-info":{"price":{"amount":"0.000380","currency":"USD","mode":"fixed"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"amount":"0.001000","currency":"USD","minimumUsd":"0.001000","mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"amount":"0.000380","currency":"USD","minimumUsd":null,"mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/reddit.subreddit_details":{"post":{"description":"Fetch a subreddit's metadata (weekly active users, description, and category).\n\n**Price:** \\$0.38 per 1,000 requests (flat per request - same cost regardless of results returned).\n\n**Routing:** 3 independent lanes are available in execution order. A failed attempt uses the next lane only when the request's payment authorizes that lane's price; the normalized schema stays the same.\n\n**Catalog:** [Reddit Subreddit Details pricing and uptime](https://getanyapi.com/api/reddit/subreddit-details) - live USD price, lane routing, and measured 30-day uptime. [Every Reddit endpoint](https://getanyapi.com/api/reddit).","operationId":"reddit_subreddit_details","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"subreddit":"programming"},"schema":{"additionalProperties":false,"example":{"subreddit":"programming"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"requireFields":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Name the output fields this request must be able to return, for example `weeklyActiveUsers` or `advertiserCategory`, and it is served only by a source that returns every one of them. Fields you do not name are still returned whenever the serving source has them. This can raise your price: when the cheapest source cannot return a named field, a dearer source serves, and you are quoted and charged its price. A named field can still be absent on a subreddit that genuinely lacks it. Naming a combination that no single source returns together is refused as invalid input, with no charge.","items":{"enum":["advertiserCategory","weeklyActiveUsers"],"type":"string"},"type":"array","uniqueItems":true},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"subreddit":{"description":"Subreddit name without the r/ prefix. Case-sensitive (e.g. \"AskReddit\", not \"askreddit\").","type":"string"}},"required":["subreddit"],"title":"Reddit subreddit details input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"description":"The subreddit record, or null when nothing was found.","oneOf":[{"type":"null"},{"properties":{"advertiserCategory":{"description":"Reddit advertiser category for the subreddit, or null when the serving source does not publish it.","type":["string","null"]},"createdUtc":{"description":"UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds. Populated whenever the provider has data for the entity.","type":"number","x-anyapi-must-populate":true},"description":{"description":"Subreddit description text. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"iconUrl":{"description":"URL of the subreddit icon. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"id":{"description":"Reddit fullname, e.g. \"t5_2qh1i\". Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"name":{"description":"Subreddit name (without the r/ prefix). Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"weeklyActiveUsers":{"description":"Number of users active in the past week, or null when the serving source does not publish it.","type":["integer","null"]}},"required":["id","name","weeklyActiveUsers","description","advertiserCategory","iconUrl","createdUtc"],"type":"object"}]},"found":{"description":"True when the subreddit was found; false when the lookup returned nothing.","type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"Reddit subreddit details output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"Reddit Subreddit Details","tags":["reddit"],"x-mint":{"href":"/api-reference/reddit/subreddit-details"},"x-payment-info":{"price":{"amount":"0.000380","currency":"USD","mode":"fixed"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"amount":"0.001000","currency":"USD","minimumUsd":"0.001000","mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"amount":"0.000380","currency":"USD","minimumUsd":null,"mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/reddit.subreddit_posts":{"post":{"description":"Fetch posts from a subreddit listing (hot, new, or top).\n\n**Price:** \\$0.38 per 1,000 requests (flat per request - same cost regardless of results returned).\n\n**Routing:** 4 independent lanes are available in execution order. A failed attempt uses the next lane only when the request's payment authorizes that lane's price; the normalized schema stays the same.\n\n**Catalog:** [Reddit Subreddit Posts pricing and uptime](https://getanyapi.com/api/reddit/subreddit-posts) - live USD price, lane routing, and measured 30-day uptime. [Every Reddit endpoint](https://getanyapi.com/api/reddit).","operationId":"reddit_subreddit_posts","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"limit":5,"subreddit":"programming"},"schema":{"additionalProperties":false,"example":{"limit":5,"subreddit":"programming"},"properties":{"after":{"deprecated":true,"description":"Legacy pagination alias. Prefer `cursor`; omit both fields for the first page.","type":"string"},"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"cursor":{"description":"Opaque pagination cursor from a previous response's `nextCursor`; omit for the first page.","type":"string"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"limit":{"default":25,"description":"Requested number of posts. Note: the upstream returns one page (about 25 posts) per call; values larger than a page are not delivered in a single response. To fetch more, pass `nextCursor` back as `cursor`.","maximum":100,"minimum":1,"type":"integer"},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"requireFields":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Name the output fields this request must be able to return, for example `isArchived` or `selftext`, and it is served only by a source that returns every one of them. Fields you do not name are still returned whenever the serving source has them. This can raise your price: when the cheapest source cannot return a named field, a dearer source serves, and you are quoted and charged its price. A named field can still be absent on a post that genuinely lacks it. Naming a combination that no single source returns together is refused as invalid input, with no charge. On a paginated walk it applies to the first page only; later pages stay with the source that page chose, at the price it was quoted.","items":{"enum":["authorId","isArchived","isLocked","nextCursor","nsfw","numComments","score","selftext","upvoteRatio"],"type":"string"},"type":"array","uniqueItems":true},"sort":{"default":"hot","description":"Listing sort order.","enum":["hot","new","top"],"type":"string"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"subreddit":{"description":"Subreddit name without the leading r/ (e.g. \"golang\").","type":"string"},"timeframe":{"description":"Time window, applied when sort is \"top\" (e.g. \"year\" for the year's top posts). Ignored for hot/new. Omit to default to the current day for top.","enum":["all","year","month","week","day","hour"],"type":"string"}},"required":["subreddit"],"title":"Reddit subreddit posts input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"oneOf":[{"type":"null"},{"additionalProperties":false,"properties":{"nextCursor":{"description":"Cursor for the next page of results; pass it back as the `cursor` input to fetch the following page. Null when there are no more results.","type":["string","null"]},"posts":{"description":"Populated whenever the provider has data for the entity.","items":{"properties":{"author":{"description":"Author username, without the u/ prefix. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"authorId":{"description":"Reddit account ID of the author, without the t2_ prefix.","type":"string"},"createdUtc":{"description":"UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds. Populated whenever the provider has data for the entity.","type":"number","x-anyapi-must-populate":true},"id":{"description":"Reddit post ID (base-36, without the t3_ prefix). Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"isArchived":{"description":"True when Reddit has archived the thread, which blocks new comments and votes. Archiving is a per-community setting, so an old thread is not necessarily archived. Absent when the source that served this request does not report it, which means unknown rather than false.","type":"boolean"},"isLocked":{"description":"True when a moderator has locked the thread, which blocks new comments. Absent when the source that served this request does not report it, which means unknown rather than false.","type":"boolean"},"nsfw":{"description":"Whether the post is marked not-safe-for-work.","type":"boolean"},"numComments":{"description":"Total number of comments on the post.","type":"integer"},"permalink":{"description":"Canonical reddit.com thread path for the post (e.g. \"/r/golang/comments/abc123/...\"). Differs from url, which is the destination link. Empty if the upstream omits it. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"score":{"description":"Net score (upvotes minus downvotes) at fetch time.","type":"integer"},"selftext":{"description":"Body text of a self post, as Markdown. Empty on a link post, which has no body.","type":"string"},"subreddit":{"description":"Subreddit name, without the r/ prefix. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"title":{"description":"Post title. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"upvoteRatio":{"description":"Share of votes on the post that are upvotes, between 0 and 1.","type":"number"},"url":{"description":"The post's destination link (the external URL for link posts, or the thread URL for self posts). Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true}},"required":["id","title","author","score","numComments","url","permalink","createdUtc","subreddit"],"type":"object"},"type":"array","x-anyapi-must-populate":true}},"required":["posts","nextCursor"],"type":"object"}]},"found":{"type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"Reddit subreddit posts output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"Reddit Subreddit Posts","tags":["reddit"],"x-mint":{"href":"/api-reference/reddit/subreddit-posts"},"x-payment-info":{"price":{"amount":"0.000380","currency":"USD","mode":"fixed"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"amount":"0.001000","currency":"USD","minimumUsd":"0.001000","mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"amount":"0.000380","currency":"USD","minimumUsd":null,"mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/reddit.subreddit_search":{"post":{"description":"Search posts within a single subreddit by query, sort, and timeframe.\n\n**Price:** \\$0.38 per 1,000 requests (flat per request - same cost regardless of results returned).\n\n**Routing:** 5 independent lanes are available in execution order. A failed attempt uses the next lane only when the request's payment authorizes that lane's price; the normalized schema stays the same.\n\n**Catalog:** [Reddit Subreddit Search pricing and uptime](https://getanyapi.com/api/reddit/subreddit-search) - live USD price, lane routing, and measured 30-day uptime. [Every Reddit endpoint](https://getanyapi.com/api/reddit).","operationId":"reddit_subreddit_search","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"query":"push ups","subreddit":"Fitness"},"schema":{"additionalProperties":false,"example":{"query":"push ups","subreddit":"Fitness"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"cursor":{"description":"Optional pagination token from a previous response.","type":"string"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"query":{"description":"Optional search query to match posts (e.g. 'push ups').","type":"string"},"requireFields":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Name the output fields this request must be able to return, for example `isArchived` or `selftext`, and it is served only by a source that returns every one of them. Fields you do not name are still returned whenever the serving source has them. This can raise your price: when the cheapest source cannot return a named field, a dearer source serves, and you are quoted and charged its price. A named field can still be absent on a post that genuinely lacks it. Naming a combination that no single source returns together is refused as invalid input, with no charge. On a paginated walk it applies to the first page only; later pages stay with the source that page chose, at the price it was quoted.","items":{"enum":["author","authorId","createdUtc","isArchived","isLocked","nextCursor","nsfw","numComments","score","selftext"],"type":"string"},"type":"array","uniqueItems":true},"sort":{"description":"Optional sort order: relevance, hot, top, new, comments.","enum":["relevance","hot","top","new","comments"],"type":"string"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"subreddit":{"description":"Subreddit name without the r/ prefix (e.g. 'Fitness').","type":"string"},"timeframe":{"description":"Optional time filter: all, year, month, week, day, hour.","enum":["all","year","month","week","day","hour"],"type":"string"}},"required":["subreddit"],"title":"Reddit Subreddit Search input","type":"object","x-aliases":{"q":"query","time":"timeframe","time_filter":"timeframe"}}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"oneOf":[{"type":"null"},{"additionalProperties":false,"properties":{"nextCursor":{"description":"Opaque cursor for the next page of posts, or null when this lane has no more. Pass it back as cursor to continue.","type":["string","null"]},"posts":{"description":"Populated whenever the provider has data for the entity.","items":{"properties":{"author":{"description":"Author username, without the u/ prefix. Empty when the upstream omits it.","type":"string"},"authorId":{"description":"Reddit account ID of the author, without the t2_ prefix.","type":"string"},"createdUtc":{"description":"Post creation time as a UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds.","type":"number"},"id":{"description":"Reddit post ID (base-36, without the t3_ prefix). Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"isArchived":{"description":"True when Reddit has archived the thread, which blocks new comments and votes. Archiving is a per-community setting, so an old thread is not necessarily archived. Absent when the source that served this request does not report it, which means unknown rather than false.","type":"boolean"},"isLocked":{"description":"True when a moderator has locked the thread, which blocks new comments. Absent when the source that served this request does not report it, which means unknown rather than false.","type":"boolean"},"nsfw":{"description":"Whether the post is marked NSFW (over 18).","type":"boolean"},"numComments":{"description":"Total number of comments on the post.","type":"integer"},"permalink":{"description":"Canonical reddit.com thread path for the post (e.g. \"/r/golang/comments/abc123/...\"). Differs from url, which is the destination link. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"score":{"description":"Net score (upvotes minus downvotes) at fetch time.","type":"integer"},"selftext":{"description":"Body text of a self post, as Markdown. Empty on a link post, which has no body.","type":"string"},"subreddit":{"description":"Subreddit name, without the r/ prefix. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"title":{"description":"Post title. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"url":{"description":"The post's destination link (the external URL for link posts, or the thread URL for self posts). Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true}},"required":["id","title","author","url","permalink","score","numComments","createdUtc","subreddit","nsfw"],"type":"object"},"type":"array","x-anyapi-must-populate":true}},"required":["nextCursor","posts"],"type":"object"}]},"found":{"type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"Reddit Subreddit Search output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"Reddit Subreddit Search","tags":["reddit"],"x-mint":{"href":"/api-reference/reddit/subreddit-search"},"x-payment-info":{"price":{"amount":"0.000380","currency":"USD","mode":"fixed"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"amount":"0.001000","currency":"USD","minimumUsd":"0.001000","mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"amount":"0.000380","currency":"USD","minimumUsd":null,"mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/reddit.trending_posts":{"post":{"description":"Get currently trending Reddit posts across all subreddits with stable cursor pagination.\n\n**Price:** \\$0.20 per 1,000 requests (flat per request - same cost regardless of results returned).\n\n**Routing:** one lane serves this API today, so a failed attempt has nowhere to fail over to. Payment outcome follows the selected rail's settlement policy.\n\n**Catalog:** [Reddit Trending Posts pricing and uptime](https://getanyapi.com/api/reddit/trending-posts) - live USD price, lane routing, and measured 30-day uptime. [Every Reddit endpoint](https://getanyapi.com/api/reddit).","operationId":"reddit_trending_posts","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"limit":25},"schema":{"additionalProperties":false,"example":{"limit":25},"properties":{"after":{"description":"Pagination cursor from a previous response's nextCursor. Omit for the first page.","minLength":1,"type":"string"},"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"limit":{"default":25,"description":"Maximum number of trending posts to return (1-100, default 25).","maximum":100,"minimum":1,"type":"integer"},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true}},"title":"Reddit trending posts input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"oneOf":[{"type":"null"},{"additionalProperties":false,"properties":{"nextCursor":{"description":"Cursor for the next page; pass it back as after. Null when no more results exist.","type":["string","null"]},"posts":{"description":"Populated whenever the provider has data for the entity.","items":{"properties":{"author":{"description":"Author username, without the u/ prefix. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"authorId":{"description":"Reddit account ID of the author, without the t2_ prefix.","type":"string"},"createdUtc":{"description":"UTC epoch timestamp in seconds (Unix time). Populated whenever the provider has data for the entity.","type":"number","x-anyapi-must-populate":true},"domain":{"description":"Domain the post links to, for example \"self.IAmA\" for a text post.","type":"string"},"id":{"description":"Reddit post ID (base-36, without the t3_ prefix). Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"isArchived":{"description":"True when Reddit has archived the thread, which blocks new comments and votes. Archiving is a per-community setting, so an old thread is not necessarily archived. Absent when the source that served this request does not report it, which means unknown rather than false.","type":"boolean"},"isLocked":{"description":"True when a moderator has locked the thread, which blocks new comments. Absent when the source that served this request does not report it, which means unknown rather than false.","type":"boolean"},"nsfw":{"description":"Whether the post is marked not-safe-for-work.","type":"boolean"},"numComments":{"description":"Total number of comments on the post.","type":"integer"},"permalink":{"description":"Canonical reddit.com thread path for the post. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"score":{"description":"Net score (upvotes minus downvotes) at fetch time.","type":"integer"},"selftext":{"description":"Body text of a self post, as Markdown. Empty on a link post, which has no body.","type":"string"},"subreddit":{"description":"Subreddit name, without the r/ prefix. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"title":{"description":"Post title. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"upvoteRatio":{"description":"Share of votes on the post that are upvotes, between 0 and 1.","type":"number"},"url":{"description":"The post's destination link. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true}},"required":["id","title","author","score","numComments","url","permalink","createdUtc","subreddit"],"type":"object"},"type":"array","x-anyapi-must-populate":true}},"required":["posts","nextCursor"],"type":"object"}]},"found":{"type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"Reddit trending posts output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"Reddit Trending Posts","tags":["reddit"],"x-mint":{"href":"/api-reference/reddit/trending-posts"},"x-payment-info":{"price":{"amount":"0.000200","currency":"USD","mode":"fixed"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"amount":"0.001000","currency":"USD","minimumUsd":"0.001000","mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"amount":"0.000200","currency":"USD","minimumUsd":null,"mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/reddit.user_comments":{"post":{"description":"List a Reddit user's comments by username, sorted by new, top, hot, or controversial, with the parent post title and subreddit on every item and cursor pagination. Comment text comes back as a roughly 300-character preview rather than the full body, and this endpoint carries no per-comment permalink; use reddit.post_comments for full comment bodies and comment URLs on a given post.\n\n**Price:** \\$0.60 per 1,000 requests (flat per request - same cost regardless of results returned).\n\n**Routing:** 2 independent lanes are available in execution order. A failed attempt uses the next lane only when the request's payment authorizes that lane's price; the normalized schema stays the same.\n\n**Catalog:** [Reddit User Comments pricing and uptime](https://getanyapi.com/api/reddit/user-comments) - live USD price, lane routing, and measured 30-day uptime. [Every Reddit endpoint](https://getanyapi.com/api/reddit).","operationId":"reddit_user_comments","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"username":"spez"},"schema":{"additionalProperties":false,"example":{"username":"spez"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"cursor":{"description":"Opaque pagination cursor from a previous response's nextCursor. Omit for the first page; pass it back to fetch the next page.","minLength":1,"type":"string"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"limit":{"default":25,"description":"Maximum number of comments to return in this response (a page cap, not a total). Defaults to 25.","maximum":100,"minimum":1,"type":"integer"},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"sort":{"description":"Sort order for the user's comments. Defaults to new (most recent first).","enum":["new","top","hot","controversial"],"type":"string"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"username":{"description":"Reddit username, without the u/ prefix. Example: \"spez\".","minLength":1,"type":"string"}},"required":["username"],"title":"Reddit user comments input","type":"object","x-aliases":{"handle":"username"}}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"description":"One page of the user's comments, or null when the user was not found.","oneOf":[{"type":"null"},{"additionalProperties":false,"properties":{"comments":{"description":"The user's comments in feed order (newest first by default). Each item carries a truncated body preview plus the parent post it was made on; there is no per-comment permalink available from this endpoint. Populated whenever the provider has data for the entity.","items":{"properties":{"author":{"description":"Commenter username, without the u/ prefix. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"bodyPreview":{"description":"A preview of the comment text, not the full comment body: the upstream truncates it to roughly 300 characters and cuts mid-word. It is plain text rather than Markdown, and it is empty on the occasional comment for which the upstream returns no preview at all. For full comment bodies and comment permalinks, use the reddit.post_comments SKU against the parent post.","type":"string"},"createdUtc":{"description":"UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds.","type":"number"},"id":{"description":"Reddit comment ID (base-36, without the t1_ prefix). Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"postId":{"description":"Reddit post ID of the thread the comment was made on (base-36, without the t3_ prefix). Pass it to reddit.post or reddit.post_comments for the full thread. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"postTitle":{"description":"Title of the thread the comment was made on. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"score":{"description":"Net score (upvotes minus downvotes) on the comment at fetch time.","type":"integer"},"subreddit":{"description":"Subreddit name of the parent thread, without the r/ prefix. Empty when the comment is on a post hosted on a user's own profile (r/u_\u003cname\u003e), which has no subreddit.","type":"string"}},"required":["id","author","createdUtc"],"type":"object"},"type":"array","x-anyapi-must-populate":true},"nextCursor":{"description":"Opaque cursor for the next page of this user's comments; pass it back as the `cursor` input to fetch the following page. Null when there are no more pages.","type":["string","null"]}},"required":["comments","nextCursor"],"type":"object"}]},"found":{"description":"Whether the user's comment history was returned.","type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"Reddit user comments output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"Reddit User Comments","tags":["reddit"],"x-mint":{"href":"/api-reference/reddit/user-comments"},"x-payment-info":{"price":{"amount":"0.000600","currency":"USD","mode":"fixed"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"amount":"0.001000","currency":"USD","minimumUsd":"0.001000","mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"amount":"0.000600","currency":"USD","minimumUsd":null,"mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/reddit.user_posts":{"post":{"description":"List a Reddit user's posts by username, sorted by new, top, hot, or controversial, with cursor pagination.\n\n**Price:** \\$0.38 per 1,000 requests (flat per request - same cost regardless of results returned).\n\n**Routing:** 3 independent lanes are available in execution order. A failed attempt uses the next lane only when the request's payment authorizes that lane's price; the normalized schema stays the same.\n\n**Catalog:** [Reddit User Posts pricing and uptime](https://getanyapi.com/api/reddit/user-posts) - live USD price, lane routing, and measured 30-day uptime. [Every Reddit endpoint](https://getanyapi.com/api/reddit).","operationId":"reddit_user_posts","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"username":"spez"},"schema":{"additionalProperties":false,"example":{"username":"spez"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"cursor":{"description":"Opaque pagination cursor from a previous response's nextCursor. Omit for the first page; pass it back to fetch the next page.","minLength":1,"type":"string"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"requireFields":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Name the output fields this request must be able to return, for example `isArchived` or `isLocked`, and it is served only by a source that returns every one of them. Fields you do not name are still returned whenever the serving source has them. This can raise your price: when the cheapest source cannot return a named field, a dearer source serves, and you are quoted and charged its price. A named field can still be absent on a post that genuinely lacks it. Naming a combination that no single source returns together is refused as invalid input, with no charge. On a paginated walk it applies to the first page only; later pages stay with the source that page chose, at the price it was quoted.","items":{"enum":["authorId","createdUtc","isArchived","isLocked","media","nextCursor","nsfw","numComments","score","selftext","upvoteRatio"],"type":"string"},"type":"array","uniqueItems":true},"sort":{"description":"Sort order for the user's posts. Defaults to new (most recent first).","enum":["new","top","hot","controversial"],"type":"string"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"username":{"description":"Reddit username without the leading u/ prefix (e.g. \"spez\").","minLength":1,"type":"string"}},"required":["username"],"title":"Reddit user posts input","type":"object","x-aliases":{"handle":"username"}}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"description":"One page of the user's posts, or null when the user was not found.","oneOf":[{"type":"null"},{"additionalProperties":false,"properties":{"nextCursor":{"description":"Opaque cursor for the next page of this user's posts; pass it back as the `cursor` input to fetch the following page. Null when there are no more pages.","type":["string","null"]},"posts":{"description":"The user's posts in feed order. Posts hosted on the user's own profile (r/u_\u003cname\u003e) are included and carry an empty subreddit. Populated whenever the provider has data for the entity.","items":{"properties":{"author":{"description":"Author username, without the u/ prefix. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"authorId":{"description":"Reddit account ID of the author, without the t2_ prefix.","type":"string"},"createdUtc":{"description":"UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds.","type":"number"},"id":{"description":"Reddit post ID (base-36, without the t3_ prefix). Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"isArchived":{"description":"True when Reddit has archived the thread, which blocks new comments and votes. Archiving is a per-community setting, so an old thread is not necessarily archived. Absent when the source that served this request does not report it, which means unknown rather than false.","type":"boolean"},"isLocked":{"description":"True when a moderator has locked the thread, which blocks new comments. Absent when the source that served this request does not report it, which means unknown rather than false.","type":"boolean"},"media":{"description":"Photo, video, and GIF attachments on the post. Empty when the post has none.","items":{"properties":{"height":{"type":"integer"},"type":{"description":"One of photo, video, or gif, or null when the serving source wraps a thumbnail it cannot classify.","type":["string","null"]},"url":{"description":"Image URL. For a video or GIF this is the poster/thumbnail frame.","format":"uri","type":"string"},"videoUrl":{"description":"Playable video file URL. Present only for video and gif items.","format":"uri","type":"string"},"width":{"type":"integer"}},"required":["type","url"],"type":"object"},"type":"array"},"nsfw":{"description":"Whether the post is marked not-safe-for-work.","type":"boolean"},"numComments":{"description":"Total number of comments on the post.","type":"integer"},"permalink":{"description":"Canonical reddit.com thread path for the post (e.g. \"/r/golang/comments/abc123/...\"). Differs from url, which is the destination link. Empty if the upstream omits it. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"score":{"description":"Net score (upvotes minus downvotes) at fetch time.","type":"integer"},"selftext":{"description":"Body text of a self post, as Markdown. Empty on a link post, which has no body.","type":"string"},"subreddit":{"description":"Subreddit name, without the r/ prefix. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"title":{"description":"Post title. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"upvoteRatio":{"description":"Share of votes on the post that are upvotes, between 0 and 1.","type":"number"},"url":{"description":"The post's destination link (the external URL for link posts, or the thread URL for self posts). Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true}},"required":["id","title","author","permalink","createdUtc"],"type":"object"},"type":"array","x-anyapi-must-populate":true}},"required":["posts","nextCursor"],"type":"object"}]},"found":{"description":"Whether the user's post feed was returned.","type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"Reddit user posts output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"Reddit User Posts","tags":["reddit"],"x-mint":{"href":"/api-reference/reddit/user-posts"},"x-payment-info":{"price":{"amount":"0.000380","currency":"USD","mode":"fixed"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"amount":"0.001000","currency":"USD","minimumUsd":"0.001000","mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"amount":"0.000380","currency":"USD","minimumUsd":null,"mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/redfin.search":{"post":{"description":"Run a Redfin map search by URL and get matching home listings (price, address, beds, baths, status) as normalized JSON.\n\n**Price:** billed per result - \\$2.97 per 1,000 requests base + \\$0.48 per 1,000 results, capped at \\$14.80 per 1,000 requests.\n\n**Routing:** one lane serves this API today, so a failed attempt has nowhere to fail over to. Payment outcome follows the selected rail's settlement policy.\n\n**Catalog:** [Redfin Search pricing and uptime](https://getanyapi.com/api/redfin/search) - live USD price, lane routing, and measured 30-day uptime. [Every Redfin endpoint](https://getanyapi.com/api/redfin).","operationId":"redfin_search","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"limit":3,"url":"https://www.redfin.com/city/30818/TX/Austin"},"schema":{"additionalProperties":false,"example":{"limit":3,"url":"https://www.redfin.com/city/30818/TX/Austin"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"limit":{"description":"Maximum number of results to return (1-25, default 25). You are billed per result returned, so a lower limit costs less.","maximum":25,"minimum":1,"type":"integer"},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"url":{"description":"Redfin search results URL for a city, ZIP or map area (e.g. https://www.redfin.com/city/30772/CA/San-Francisco).","type":"string"}},"required":["url"],"title":"Redfin search input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"description":"The result wrapper, or null when nothing matched.","oneOf":[{"type":"null"},{"additionalProperties":false,"properties":{"items":{"description":"Matching Redfin home listing records. Populated whenever the provider has data for the entity.","items":{"properties":{"addressLine":{"description":"Street address line of the home.","type":"string"},"agentName":{"description":"Name of the listing agent.","type":"string"},"baths":{"description":"Number of bathrooms (fractional for half baths).","type":"number"},"beds":{"description":"Number of bedrooms.","type":"number"},"city":{"description":"City the home is in.","type":"string"},"countryCode":{"description":"ISO country code the home is in.","type":"string"},"daysOnMarket":{"description":"Days the listing has been on the market.","type":"number"},"description":{"description":"Listing remarks written by the agent.","type":"string"},"garageSpaces":{"description":"Number of garage spaces.","type":"number"},"hoaFee":{"description":"Homeowners association fee, in US dollars, at the frequency Redfin reports.","type":"number"},"latitude":{"description":"Latitude of the home in decimal degrees.","type":"number"},"listingId":{"description":"Redfin listing id for this specific listing.","type":"string"},"longitude":{"description":"Longitude of the home in decimal degrees.","type":"number"},"lotSize":{"description":"Lot size in square feet.","type":"number"},"mlsId":{"description":"MLS number for the listing.","type":"string"},"parkingSpaces":{"description":"Number of parking spaces.","type":"number"},"postalCode":{"description":"Postal (ZIP) code of the home.","type":"string"},"price":{"description":"List (or last sale) price in US dollars.","type":"number"},"pricePerSqft":{"description":"Price per square foot in US dollars.","type":"number"},"propertyId":{"description":"Redfin property id (stable identifier for the home). Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"soldUtc":{"description":"UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds.","type":"number"},"sqft":{"description":"Interior living area in square feet.","type":"number"},"state":{"description":"Two-letter state code the home is in.","type":"string"},"status":{"description":"MLS listing status (e.g. Active, Coming Soon, Sold).","type":"string"},"stories":{"description":"Number of storeys in the home.","type":"number"},"title":{"description":"Street address line used as the listing title.","type":"string"},"url":{"description":"Canonical Redfin listing detail page URL. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"yearBuilt":{"description":"Year the home was built.","type":"number"}},"required":["propertyId","url"],"type":"object"},"type":"array","x-anyapi-must-populate":true}},"required":["items"],"type":"object"}]},"found":{"description":"True when the search returned at least one matching home.","type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"Redfin search output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"Redfin Search","tags":["redfin"],"x-mint":{"href":"/api-reference/redfin/search"},"x-payment-info":{"price":{"currency":"USD","max":"0.014800","min":"0.002970","mode":"dynamic"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"currency":"USD","max":"0.014800","min":"0.002970","minimumUsd":"0.001000","mode":"dynamic","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"currency":"USD","max":"0.014800","min":"0.002970","minimumUsd":null,"mode":"dynamic","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/rednote.note":{"post":{"description":"Look up a RedNote (Xiaohongshu) note by note ID and return normalized note details.\n\n**Price:** \\$12.00 per 1,000 requests (flat per request - same cost regardless of results returned).\n\n**Routing:** one lane serves this API today, so a failed attempt has nowhere to fail over to. Payment outcome follows the selected rail's settlement policy.\n\n**Catalog:** [RedNote (Xiaohongshu) Note pricing and uptime](https://getanyapi.com/api/rednote/note) - live USD price, lane routing, and measured 30-day uptime. [Every Rednote endpoint](https://getanyapi.com/api/rednote).","operationId":"rednote_note","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"noteId":"6a8fe7c20000000026003bbf"},"schema":{"additionalProperties":false,"example":{"noteId":"6a8fe7c20000000026003bbf"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"noteId":{"description":"RedNote (Xiaohongshu) note ID.","minLength":1,"type":"string"},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true}},"required":["noteId"],"title":"RedNote (Xiaohongshu) Note input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"description":"The note record, or null when nothing was found.","oneOf":[{"type":"null"},{"properties":{"authorImage":{"description":"URL of the author's avatar. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"authorNickname":{"description":"Display name of the note author. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"authorRedId":{"description":"Author's public RedNote ID. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"authorUserId":{"description":"Identifier of the note author. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"authorVerified":{"description":"Whether the author carries RedNote's official verification.","type":"boolean"},"collectCount":{"description":"Number of times the note was collected.","type":"integer"},"commentCount":{"description":"Number of comments on the note.","type":"integer"},"createdUtc":{"description":"UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds. Populated whenever the provider has data for the entity.","type":"number","x-anyapi-must-populate":true},"description":{"description":"Note body text. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"image":{"description":"URL of the note cover image. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"language":{"description":"Detected language of the note. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"likeCount":{"description":"Number of likes on the note.","type":"integer"},"location":{"description":"Location the note was posted from, as RedNote reports it.","type":"string"},"noteId":{"description":"Note identifier. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"shareCount":{"description":"Number of times the note was shared.","type":"integer"},"title":{"description":"Note title. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"type":{"description":"Note type, e.g. \"normal\" or \"video\". Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"updatedUtc":{"description":"UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds. Populated whenever the provider has data for the entity.","type":"number","x-anyapi-must-populate":true},"url":{"description":"Canonical URL of the note. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true}},"required":["noteId"],"type":"object"}]},"found":{"description":"True when the note was found; false when the lookup returned nothing.","type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"RedNote (Xiaohongshu) Note output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"RedNote (Xiaohongshu) Note","tags":["rednote"],"x-mint":{"href":"/api-reference/rednote/note"},"x-payment-info":{"price":{"amount":"0.012000","currency":"USD","mode":"fixed"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"amount":"0.012000","currency":"USD","minimumUsd":"0.001000","mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"amount":"0.012000","currency":"USD","minimumUsd":null,"mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/rednote.note_comments":{"post":{"description":"List comments on a RedNote (Xiaohongshu) note and return normalized comment records with pagination.\n\n**Price:** \\$12.00 per 1,000 requests (flat per request - same cost regardless of results returned).\n\n**Routing:** one lane serves this API today, so a failed attempt has nowhere to fail over to. Payment outcome follows the selected rail's settlement policy.\n\n**Catalog:** [RedNote (Xiaohongshu) Note Comments pricing and uptime](https://getanyapi.com/api/rednote/note-comments) - live USD price, lane routing, and measured 30-day uptime. [Every Rednote endpoint](https://getanyapi.com/api/rednote).","operationId":"rednote_note_comments","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"noteId":"68dd422c0000000203019829"},"schema":{"additionalProperties":false,"example":{"noteId":"68dd422c0000000203019829"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"cursor":{"description":"Pagination cursor from the previous response.","minLength":1,"type":"string"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"noteId":{"description":"RedNote (Xiaohongshu) note ID.","minLength":1,"type":"string"},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true}},"required":["noteId"],"title":"RedNote (Xiaohongshu) Note Comments input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"description":"Wrapper holding the comments array plus pagination, or null when nothing was found.","oneOf":[{"type":"null"},{"properties":{"comments":{"description":"Comments on the note. Populated whenever the provider has data for the entity.","items":{"properties":{"commentId":{"description":"Comment identifier. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"createdUtc":{"description":"UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds. Populated whenever the provider has data for the entity.","type":"number","x-anyapi-must-populate":true},"image":{"description":"URL of the author's avatar. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"likeCount":{"description":"Number of likes on the comment.","type":"integer"},"nickname":{"description":"Display name of the comment author. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"noteId":{"description":"Identifier of the note the comment belongs to. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"redId":{"description":"Author's public RedNote ID. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"replyCount":{"description":"Number of replies to the comment.","type":"integer"},"text":{"description":"Comment text content. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"userId":{"description":"Identifier of the comment author. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true}},"required":["commentId"],"type":"object"},"type":"array","x-anyapi-must-populate":true},"hasMore":{"description":"Whether another page of comments is available.","type":"boolean"},"nextCursor":{"description":"Opaque cursor for the next page of comments, or null when this lane has no more. Pass it back as cursor to continue.","type":["string","null"]},"total":{"description":"Total number of comments on the note.","type":"integer"}},"required":["comments","nextCursor"],"type":"object"}]},"found":{"description":"True when comments were found; false when the lookup returned nothing.","type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"RedNote (Xiaohongshu) Note Comments output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"RedNote (Xiaohongshu) Note Comments","tags":["rednote"],"x-mint":{"href":"/api-reference/rednote/note-comments"},"x-payment-info":{"price":{"amount":"0.012000","currency":"USD","mode":"fixed"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"amount":"0.012000","currency":"USD","minimumUsd":"0.001000","mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"amount":"0.012000","currency":"USD","minimumUsd":null,"mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/rednote.profile":{"post":{"description":"Look up a RedNote (Xiaohongshu) profile by user ID and return normalized profile details.\n\n**Price:** \\$12.00 per 1,000 requests (flat per request - same cost regardless of results returned).\n\n**Routing:** one lane serves this API today, so a failed attempt has nowhere to fail over to. Payment outcome follows the selected rail's settlement policy.\n\n**Catalog:** [RedNote (Xiaohongshu) Profile pricing and uptime](https://getanyapi.com/api/rednote/profile) - live USD price, lane routing, and measured 30-day uptime. [Every Rednote endpoint](https://getanyapi.com/api/rednote).","operationId":"rednote_profile","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"userId":"56b0a4491c07df6365277af7"},"schema":{"additionalProperties":false,"example":{"userId":"56b0a4491c07df6365277af7"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"userId":{"description":"RedNote (Xiaohongshu) user ID.","minLength":1,"type":"string"}},"required":["userId"],"title":"RedNote (Xiaohongshu) Profile input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"oneOf":[{"type":"null"},{"properties":{"collectedCount":{"type":"integer"},"description":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"followers":{"type":"integer"},"following":{"type":"integer"},"gender":{"type":"integer"},"image":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"likedCount":{"type":"integer"},"location":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"nickname":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"postedNotes":{"type":"integer"},"redId":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"shareUrl":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"userId":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"verified":{"type":"boolean"},"verifyType":{"type":"integer"}},"required":["userId"],"type":"object"}]},"found":{"type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"RedNote (Xiaohongshu) profile output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"RedNote (Xiaohongshu) Profile","tags":["rednote"],"x-mint":{"href":"/api-reference/rednote/profile"},"x-payment-info":{"price":{"amount":"0.012000","currency":"USD","mode":"fixed"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"amount":"0.012000","currency":"USD","minimumUsd":"0.001000","mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"amount":"0.012000","currency":"USD","minimumUsd":null,"mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/rednote.search":{"post":{"description":"Search RedNote (Xiaohongshu) notes by keyword and return normalized note records with pagination.\n\n**Price:** \\$12.00 per 1,000 requests (flat per request - same cost regardless of results returned).\n\n**Routing:** one lane serves this API today, so a failed attempt has nowhere to fail over to. Payment outcome follows the selected rail's settlement policy.\n\n**Catalog:** [RedNote (Xiaohongshu) Search pricing and uptime](https://getanyapi.com/api/rednote/search) - live USD price, lane routing, and measured 30-day uptime. [Every Rednote endpoint](https://getanyapi.com/api/rednote).","operationId":"rednote_search","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"query":"coffee","sort":"general"},"schema":{"additionalProperties":false,"example":{"query":"coffee","sort":"general"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"cursor":{"description":"Pagination cursor from the previous response.","minLength":1,"type":"string"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"query":{"description":"Keyword to search for on RedNote (Xiaohongshu).","minLength":1,"type":"string"},"sort":{"default":"general","description":"Sort order for matching notes.","enum":["general","hot","time"],"type":"string"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true}},"required":["query"],"title":"RedNote (Xiaohongshu) Search input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"description":"Wrapper holding the notes array plus pagination, or null when nothing was found.","oneOf":[{"type":"null"},{"properties":{"nextCursor":{"description":"Opaque cursor for the next page of notes, or null when this lane has no more. Pass it back as cursor to continue.","type":["string","null"]},"notes":{"description":"Notes matching the search. Populated whenever the provider has data for the entity.","items":{"properties":{"authorImage":{"description":"URL of the author's avatar. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"authorNickname":{"description":"Display name of the note author. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"authorRedId":{"description":"Author's public RedNote ID. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"authorUserId":{"description":"Identifier of the note author. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"collectCount":{"description":"Number of times the note was collected.","type":"integer"},"commentCount":{"description":"Number of comments on the note.","type":"integer"},"createdUtc":{"description":"UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds.","type":"number"},"description":{"description":"Note body text. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"image":{"description":"URL of the note cover image. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"likeCount":{"description":"Number of likes on the note.","type":"integer"},"noteId":{"description":"Note identifier. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"shareCount":{"description":"Number of times the note was shared.","type":"integer"},"title":{"description":"Note title. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"type":{"description":"Note type, e.g. \"normal\" or \"video\". Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"updatedUtc":{"description":"UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds.","type":"number"},"xsecToken":{"description":"Security token required to fetch the note's full detail. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true}},"required":["noteId"],"type":"object"},"type":"array","x-anyapi-must-populate":true}},"required":["notes","nextCursor"],"type":"object"}]},"found":{"description":"True when matching notes were found; false when the search returned nothing.","type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"RedNote (Xiaohongshu) search output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"RedNote (Xiaohongshu) Search","tags":["rednote"],"x-mint":{"href":"/api-reference/rednote/search"},"x-payment-info":{"price":{"amount":"0.012000","currency":"USD","mode":"fixed"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"amount":"0.012000","currency":"USD","minimumUsd":"0.001000","mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"amount":"0.012000","currency":"USD","minimumUsd":null,"mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/rednote.search_users":{"post":{"description":"Search RedNote (Xiaohongshu) users by keyword and return normalized user records with pagination.\n\n**Price:** \\$12.00 per 1,000 requests (flat per request - same cost regardless of results returned).\n\n**Routing:** one lane serves this API today, so a failed attempt has nowhere to fail over to. Payment outcome follows the selected rail's settlement policy.\n\n**Catalog:** [RedNote (Xiaohongshu) User Search pricing and uptime](https://getanyapi.com/api/rednote/search-users) - live USD price, lane routing, and measured 30-day uptime. [Every Rednote endpoint](https://getanyapi.com/api/rednote).","operationId":"rednote_search_users","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"query":"coffee"},"schema":{"additionalProperties":false,"example":{"query":"coffee"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"cursor":{"description":"Pagination cursor from the previous response.","minLength":1,"type":"string"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"query":{"description":"Keyword to search for on RedNote (Xiaohongshu).","minLength":1,"type":"string"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true}},"required":["query"],"title":"RedNote (Xiaohongshu) User Search input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"oneOf":[{"type":"null"},{"properties":{"nextCursor":{"description":"Opaque cursor for the next page of users, or null when this lane has no more. Pass it back as cursor to continue.","type":["string","null"]},"users":{"description":"Populated whenever the provider has data for the entity.","items":{"properties":{"description":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"image":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"link":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"name":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"redId":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"subtitle":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"userId":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"verified":{"type":"boolean"},"verifyType":{"type":"integer"}},"required":["userId"],"type":"object"},"type":"array","x-anyapi-must-populate":true}},"required":["users","nextCursor"],"type":"object"}]},"found":{"type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"RedNote (Xiaohongshu) User Search output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"RedNote (Xiaohongshu) User Search","tags":["rednote"],"x-mint":{"href":"/api-reference/rednote/search-users"},"x-payment-info":{"price":{"amount":"0.012000","currency":"USD","mode":"fixed"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"amount":"0.012000","currency":"USD","minimumUsd":"0.001000","mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"amount":"0.012000","currency":"USD","minimumUsd":null,"mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/rednote.user_notes":{"post":{"description":"List notes posted by a RedNote (Xiaohongshu) user and return normalized note records with pagination.\n\n**Price:** \\$12.00 per 1,000 requests (flat per request - same cost regardless of results returned).\n\n**Routing:** one lane serves this API today, so a failed attempt has nowhere to fail over to. Payment outcome follows the selected rail's settlement policy.\n\n**Catalog:** [RedNote (Xiaohongshu) User Notes pricing and uptime](https://getanyapi.com/api/rednote/user-notes) - live USD price, lane routing, and measured 30-day uptime. [Every Rednote endpoint](https://getanyapi.com/api/rednote).","operationId":"rednote_user_notes","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"userId":"56b0a4491c07df6365277af7"},"schema":{"additionalProperties":false,"example":{"userId":"56b0a4491c07df6365277af7"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"cursor":{"description":"Pagination cursor from the previous response.","minLength":1,"type":"string"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"userId":{"description":"RedNote (Xiaohongshu) user ID.","minLength":1,"type":"string"}},"required":["userId"],"title":"RedNote (Xiaohongshu) User Notes input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"description":"Wrapper holding the notes array plus pagination, or null when nothing was found.","oneOf":[{"type":"null"},{"properties":{"hasMore":{"description":"Whether another page of notes is available.","type":"boolean"},"nextCursor":{"description":"Opaque cursor for the next page of notes, or null when this lane has no more. Pass it back as cursor to continue.","type":["string","null"]},"notes":{"description":"The user's notes. Populated whenever the provider has data for the entity.","items":{"properties":{"authorImage":{"description":"URL of the author's avatar. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"authorNickname":{"description":"Display name of the note author. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"authorUserId":{"description":"Identifier of the note author. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"collectCount":{"description":"Number of times the note was collected.","type":"integer"},"commentCount":{"description":"Number of comments on the note.","type":"integer"},"createdUtc":{"description":"UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds.","type":"number"},"description":{"description":"Note body text. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"image":{"description":"URL of the note cover image. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"likeCount":{"description":"Number of likes on the note.","type":"integer"},"noteId":{"description":"Note identifier. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"shareCount":{"description":"Number of times the note was shared.","type":"integer"},"title":{"description":"Note title. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"type":{"description":"Note type, e.g. \"normal\" or \"video\". Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"updatedUtc":{"description":"UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds.","type":"number"}},"required":["noteId"],"type":"object"},"type":"array","x-anyapi-must-populate":true}},"required":["notes","nextCursor"],"type":"object"}]},"found":{"description":"True when the user's notes were found; false when the lookup returned nothing.","type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"RedNote (Xiaohongshu) user notes output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"RedNote (Xiaohongshu) User Notes","tags":["rednote"],"x-mint":{"href":"/api-reference/rednote/user-notes"},"x-payment-info":{"price":{"amount":"0.012000","currency":"USD","mode":"fixed"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"amount":"0.012000","currency":"USD","minimumUsd":"0.001000","mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"amount":"0.012000","currency":"USD","minimumUsd":null,"mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/sec.filings":{"post":{"description":"List a public company's SEC EDGAR filings - form type, filing date, accession number, and document links - by ticker, company name, or CIK, with optional form-type and date filters.\n\n**Price:** billed per result - \\$2.20 per 1,000 requests base + \\$0.44 per 1,000 results, capped at \\$13.20 per 1,000 requests.\n\n**Routing:** one lane serves this API today, so a failed attempt has nowhere to fail over to. Payment outcome follows the selected rail's settlement policy.\n\n**Catalog:** [SEC EDGAR Filings pricing and uptime](https://getanyapi.com/api/sec/filings) - live USD price, lane routing, and measured 30-day uptime. [Every Sec endpoint](https://getanyapi.com/api/sec).","operationId":"sec_filings","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"limit":3,"ticker":"AAPL"},"schema":{"additionalProperties":false,"anyOf":[{"required":["ticker"]},{"required":["companyName"]}],"example":{"limit":3,"ticker":"AAPL"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"companyName":{"description":"Company name to search for (partial match supported, e.g. 'Tesla' or 'Berkshire'). Use this when you do not have the ticker symbol. If both ticker and companyName are given, ticker takes precedence.","type":"string"},"dateFrom":{"description":"Only return filings filed on or after this date, in YYYY-MM-DD format (e.g. 2025-01-01).","type":"string"},"dateTo":{"description":"Only return filings filed on or before this date, in YYYY-MM-DD format (e.g. 2026-06-01).","type":"string"},"form":{"description":"Filter filings by SEC form type (e.g. 10-K, 10-Q, 8-K, 4, DEF 14A, S-1, 13F-HR); omit for all forms.","type":"string"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"limit":{"description":"Maximum number of filings to return (1-25, default 25). You are billed per result returned, so a lower limit costs less.","maximum":25,"minimum":1,"type":"integer"},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"ticker":{"description":"Company stock ticker symbol, e.g. AAPL, MSFT, or TSLA. Provide either ticker or companyName; ticker is the more precise lookup.","type":"string"}},"title":"SEC EDGAR filings input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"description":"The result wrapper, or null when nothing was found.","oneOf":[{"type":"null"},{"additionalProperties":false,"properties":{"items":{"description":"Filing records: company and CIK, form type, filing date, accession number, and document links. Populated whenever the provider has data for the entity.","items":{"properties":{"accessionNumber":{"description":"SEC accession number uniquely identifying the filing. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"cik":{"description":"SEC Central Index Key for the filer. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"companyName":{"description":"Filer company name. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"description":{"description":"Primary document description, e.g. the form label.","type":"string"},"filedUtc":{"description":"UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds. Date the filing was filed. Populated whenever the provider has data for the entity.","type":"number","x-anyapi-must-populate":true},"filingUrl":{"description":"Link to the filing index/folder on sec.gov.","type":"string"},"fiscalYearEnd":{"description":"Fiscal year end as MMDD, e.g. 0926.","type":"string"},"form":{"description":"SEC form type, e.g. 10-K, 10-Q, 8-K. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"reportedUtc":{"description":"UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds. Period-of-report date for the filing.","type":"number"},"sic":{"description":"SIC industry code SEC files the company under.","type":"string"},"ticker":{"description":"Stock ticker symbol of the filer, when known.","type":"string"},"url":{"description":"Direct link to the primary filing document on sec.gov. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true}},"required":["url","accessionNumber"],"type":"object"},"type":"array","x-anyapi-must-populate":true}},"required":["items"],"type":"object"}]},"found":{"description":"True when at least one filing record was returned.","type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"SEC EDGAR filings output","type":"object","x-anyapi-heavy":true},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"SEC EDGAR Filings","tags":["sec"],"x-mint":{"href":"/api-reference/sec/filings"},"x-payment-info":{"price":{"currency":"USD","max":"0.013200","min":"0.002200","mode":"dynamic"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"currency":"USD","max":"0.013200","min":"0.002200","minimumUsd":"0.001000","mode":"dynamic","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"currency":"USD","max":"0.013200","min":"0.002200","minimumUsd":null,"mode":"dynamic","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/semrush.keywords":{"post":{"description":"Semrush keyword research for any term: monthly search volume, CPC, competition, keyword difficulty, plus related keywords and question keywords.\n\n**Price:** billed per result - \\$4.95 per 1,000 results, capped at \\$4.95 per 1,000 requests.\n\n**Routing:** one lane serves this API today, so a failed attempt has nowhere to fail over to. Payment outcome follows the selected rail's settlement policy.\n\n**Catalog:** [Semrush Keyword Research pricing and uptime](https://getanyapi.com/api/semrush/keywords) - live USD price, lane routing, and measured 30-day uptime. [Every Semrush endpoint](https://getanyapi.com/api/semrush).","operationId":"semrush_keywords","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"database":"us","keyword":"best running shoes"},"schema":{"additionalProperties":false,"example":{"database":"us","keyword":"best running shoes"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"database":{"default":"us","description":"Two-letter Semrush regional database that scopes the metrics (e.g. us, uk, de).","type":"string"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"keyword":{"description":"The search term to research (e.g. \"best running shoes\").","type":"string"},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true}},"required":["keyword"],"title":"Semrush keyword research input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"oneOf":[{"type":"null"},{"additionalProperties":false,"properties":{"items":{"description":"Keyword-research records: search volume, CPC, competition, keyword difficulty, plus related keywords and question keywords for the researched term. Populated whenever the provider has data for the entity.","items":{"properties":{"competition":{"description":"Paid-search competition density, 0 to 1.","type":"number"},"cpcUsd":{"description":"Average cost per click in USD.","type":"number"},"database":{"description":"Two-letter Semrush regional database the metrics are scoped to.","type":"string"},"intents":{"description":"Search-intent labels for the keyword (e.g. commercial, informational). Populated whenever the provider has data for the entity.","items":{"type":"string"},"type":"array","x-anyapi-must-populate":true},"keyword":{"description":"The researched search term. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"keywordDifficulty":{"description":"Semrush Keyword Difficulty, 0 to 100.","type":"integer"},"organicResultsCount":{"description":"Number of organic results Google returns for the keyword.","type":"integer"},"questions":{"description":"Question-phrased keyword variations with their own volume and difficulty. Populated whenever the provider has data for the entity.","items":{"properties":{"keyword":{"description":"The question keyword.","type":"string"},"keywordDifficulty":{"description":"Semrush Keyword Difficulty for the question keyword, 0 to 100.","type":"integer"},"searchVolume":{"description":"Average monthly search volume for the question keyword.","type":"integer"}},"required":["keyword"],"type":"object"},"type":"array","x-anyapi-must-populate":true},"referringDomainsMedian":{"description":"Median number of referring domains across the ranking pages.","type":"integer"},"relatedKeywords":{"description":"Related keyword suggestions with their own volume and difficulty. Populated whenever the provider has data for the entity.","items":{"properties":{"keyword":{"description":"The related keyword.","type":"string"},"keywordDifficulty":{"description":"Semrush Keyword Difficulty for the related keyword, 0 to 100.","type":"integer"},"searchVolume":{"description":"Average monthly search volume for the related keyword.","type":"integer"}},"required":["keyword"],"type":"object"},"type":"array","x-anyapi-must-populate":true},"searchVolume":{"description":"Average monthly search volume in the selected database.","type":"integer"}},"required":["keyword"],"type":"object"},"type":"array","x-anyapi-must-populate":true}},"required":["items"],"type":"object"}]},"found":{"type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"Semrush keyword research output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"Semrush Keyword Research","tags":["semrush"],"x-mint":{"href":"/api-reference/semrush/keywords"},"x-payment-info":{"price":{"currency":"USD","max":"0.004950","min":"0.000000","mode":"dynamic"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"currency":"USD","max":"0.004950","min":"0.001000","minimumUsd":"0.001000","mode":"dynamic","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"currency":"USD","max":"0.004950","min":"0.000000","minimumUsd":null,"mode":"dynamic","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/semrush.overview":{"post":{"description":"a Semrush SEO overview for any domain: Authority Score, organic and paid traffic, keyword and backlink counts, top country, and the domain's top organic keywords.\n\n**Price:** billed per result - \\$4.95 per 1,000 results, capped at \\$4.95 per 1,000 requests.\n\n**Routing:** one lane serves this API today, so a failed attempt has nowhere to fail over to. Payment outcome follows the selected rail's settlement policy.\n\n**Catalog:** [Semrush Domain Overview pricing and uptime](https://getanyapi.com/api/semrush/overview) - live USD price, lane routing, and measured 30-day uptime. [Every Semrush endpoint](https://getanyapi.com/api/semrush).","operationId":"semrush_overview","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"database":"us","domain":"ahrefs.com"},"schema":{"additionalProperties":false,"example":{"database":"us","domain":"ahrefs.com"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"database":{"default":"us","description":"Two-letter Semrush regional database that scopes the metrics (e.g. us, uk, de).","type":"string"},"domain":{"description":"The domain to analyze (e.g. ahrefs.com).","type":"string"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"includeMoz":{"default":false,"description":"Add Moz Domain Authority and Spam Score to the response.","type":"boolean"},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true}},"required":["domain"],"title":"Semrush domain overview input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"oneOf":[{"type":"null"},{"additionalProperties":false,"properties":{"items":{"description":"Domain overview records: Authority Score, organic and paid traffic, keyword and backlink counts, top country, and the domain's top organic keywords. Populated whenever the provider has data for the entity.","items":{"properties":{"aiVisibility":{"description":"Semrush AI visibility metric for the domain.","type":"integer"},"authorityScore":{"description":"Semrush Authority Score, 0-100.","type":"integer"},"backlinks":{"description":"Total number of backlinks pointing at the domain.","type":"integer"},"database":{"description":"Two-letter Semrush regional database the metrics are scoped to.","type":"string"},"domain":{"description":"The analyzed domain. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"followBacklinks":{"description":"Number of dofollow backlinks.","type":"integer"},"mozDomainAuthority":{"description":"Moz Domain Authority, 0-100 (only when includeMoz is true).","type":"integer"},"mozSpamScore":{"description":"Moz Spam Score as a percentage string (only when includeMoz is true).","type":"string"},"nofollowBacklinks":{"description":"Number of nofollow backlinks.","type":"integer"},"organicKeywords":{"description":"Number of keywords the domain ranks for organically.","type":"integer"},"organicTraffic":{"description":"Estimated monthly organic search traffic.","type":"integer"},"organicTrafficCostUsd":{"description":"Estimated USD value of the organic traffic.","type":"number"},"paidKeywords":{"description":"Number of keywords the domain bids on.","type":"integer"},"paidTraffic":{"description":"Estimated monthly paid search traffic.","type":"integer"},"paidTrafficCostUsd":{"description":"Estimated USD value of the paid traffic.","type":"number"},"referringDomains":{"description":"Number of unique domains linking to the domain.","type":"integer"},"topCountry":{"description":"Two-letter code of the country sending the most traffic.","type":"string"},"topCountryTraffic":{"description":"Estimated monthly traffic from the top country.","type":"integer"},"topKeywords":{"description":"The domain's top organic keywords with position, volume, and value. Populated whenever the provider has data for the entity.","items":{"properties":{"cpcUsd":{"description":"Average cost per click in USD.","type":"number"},"intents":{"description":"Search intents associated with the keyword.","items":{"type":"string"},"type":"array"},"keyword":{"description":"The organic keyword.","type":"string"},"keywordDifficulty":{"description":"Semrush Keyword Difficulty, 0-100.","type":"integer"},"position":{"description":"Current SERP position for this keyword.","type":"integer"},"searchVolume":{"description":"Monthly search volume for this keyword.","type":"integer"},"traffic":{"description":"Estimated monthly traffic this keyword drives to the domain.","type":"integer"},"url":{"description":"The ranking URL on the domain.","type":"string"}},"required":["keyword"],"type":"object"},"type":"array","x-anyapi-must-populate":true},"totalTraffic":{"description":"Estimated total monthly traffic across organic and paid.","type":"integer"}},"required":["domain"],"type":"object"},"type":"array","x-anyapi-must-populate":true}},"required":["items"],"type":"object"}]},"found":{"type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"Semrush domain overview output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"Semrush Domain Overview","tags":["semrush"],"x-mint":{"href":"/api-reference/semrush/overview"},"x-payment-info":{"price":{"currency":"USD","max":"0.004950","min":"0.000000","mode":"dynamic"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"currency":"USD","max":"0.004950","min":"0.001000","minimumUsd":"0.001000","mode":"dynamic","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"currency":"USD","max":"0.004950","min":"0.000000","minimumUsd":null,"mode":"dynamic","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/seo.competitors_domain":{"post":{"description":"Get AnyAPI SEO competitor domains for a target domain with shared keyword counts and organic metrics as normalized JSON.\n\n**Price:** billed per result - \\$28.64 per 1,000 requests base + \\$0.16 per 1,000 results, capped at \\$188.64 per 1,000 requests.\n\n**Routing:** one lane serves this API today, so a failed attempt has nowhere to fail over to. Payment outcome follows the selected rail's settlement policy.\n\n**Catalog:** [SEO Competitor Domains pricing and uptime](https://getanyapi.com/api/seo/competitors-domain) - live USD price, lane routing, and measured 30-day uptime. [Every Seo endpoint](https://getanyapi.com/api/seo).","operationId":"seo_competitors_domain","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"language":"en","limit":10,"location":2840,"target":"github.com"},"schema":{"additionalProperties":false,"example":{"language":"en","limit":10,"location":2840,"target":"github.com"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"language":{"default":"en","description":"Language code for SEO competitor metrics.","type":"string"},"limit":{"default":10,"description":"Maximum number of competitor domains to return. You are billed per returned result, so a lower limit costs less.","maximum":1000,"minimum":1,"type":"integer"},"location":{"default":2840,"description":"Location code for SEO competitor metrics. The default is the United States.","type":"integer"},"orderBy":{"description":"Sort order for the returned competitors: by shared keyword count (intersections), organic keyword count, organic traffic value (etv), or average position. Omit for the default order.","enum":["intersections_desc","organic_keywords_desc","organic_etv_desc","avg_position_asc"],"type":"string"},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"target":{"description":"Domain to analyze, without a protocol or leading www.","maxLength":253,"minLength":3,"type":"string"}},"required":["target"],"title":"SEO Competitor Domains input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"oneOf":[{"type":"null"},{"additionalProperties":false,"properties":{"competitors":{"description":"SEO competitor domain records. Populated whenever the provider has data for the entity.","items":{"properties":{"avgPosition":{"description":"Average ranking position across shared keywords. Populated whenever the provider has data for the entity.","type":"number","x-anyapi-must-populate":true},"domain":{"description":"Competing domain. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"intersections":{"description":"Number of keywords shared with the target domain. Populated whenever the provider has data for the entity.","type":"integer","x-anyapi-must-populate":true},"organicEtv":{"description":"Estimated monthly organic search traffic for the competitor domain.","type":"number"},"organicKeywords":{"description":"Number of organic search results where the competitor domain appears.","type":"integer"},"sumPosition":{"description":"Sum of ranking positions across shared keywords. Populated whenever the provider has data for the entity.","type":"integer","x-anyapi-must-populate":true}},"required":["domain","intersections"],"type":"object"},"type":"array","x-anyapi-must-populate":true}},"required":["competitors"],"type":"object"}]},"found":{"type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"SEO Competitor Domains output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"SEO Competitor Domains","tags":["seo"],"x-mint":{"href":"/api-reference/seo/competitors-domain"},"x-payment-info":{"price":{"currency":"USD","max":"0.188640","min":"0.028640","mode":"dynamic"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"currency":"USD","max":"0.188640","min":"0.028640","minimumUsd":"0.001000","mode":"dynamic","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"currency":"USD","max":"0.188640","min":"0.028640","minimumUsd":null,"mode":"dynamic","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/seo.domain_intersection":{"post":{"description":"Get AnyAPI SEO keyword overlap for two domains with each domain's rankings, URLs, volume, CPC, and difficulty as normalized JSON.\n\n**Price:** billed per result - \\$28.64 per 1,000 requests base + \\$0.16 per 1,000 results, capped at \\$188.64 per 1,000 requests.\n\n**Routing:** one lane serves this API today, so a failed attempt has nowhere to fail over to. Payment outcome follows the selected rail's settlement policy.\n\n**Catalog:** [SEO Domain Intersection pricing and uptime](https://getanyapi.com/api/seo/domain-intersection) - live USD price, lane routing, and measured 30-day uptime. [Every Seo endpoint](https://getanyapi.com/api/seo).","operationId":"seo_domain_intersection","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"language":"en","limit":10,"location":2840,"target1":"github.com","target2":"gitlab.com"},"schema":{"additionalProperties":false,"example":{"language":"en","limit":10,"location":2840,"target1":"github.com","target2":"gitlab.com"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"intersections":{"description":"When true (the default), return keywords both domains rank for (overlap). When false, return keywords the first domain ranks for that the second domain does NOT (the content-gap query); in that mode secondRank and secondUrl are absent.","type":"boolean"},"language":{"default":"en","description":"Language code for SEO overlap metrics.","type":"string"},"limit":{"default":10,"description":"Maximum number of keywords to return. You are billed per returned result, so a lower limit costs less.","maximum":1000,"minimum":1,"type":"integer"},"location":{"default":2840,"description":"Location code for SEO overlap metrics. The default is the United States.","type":"integer"},"orderBy":{"description":"Sort order for the returned keywords: by search volume, cost per click, or keyword difficulty, ascending or descending. Omit for the default order.","enum":["volume_desc","volume_asc","cpc_desc","difficulty_asc","difficulty_desc"],"type":"string"},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"target1":{"description":"First domain to compare, without a protocol or leading www.","maxLength":253,"minLength":3,"type":"string"},"target2":{"description":"Second domain to compare, without a protocol or leading www.","maxLength":253,"minLength":3,"type":"string"}},"required":["target1","target2"],"title":"SEO Domain Intersection input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"oneOf":[{"type":"null"},{"additionalProperties":false,"properties":{"keywords":{"description":"SEO keyword records both domains rank for. Populated whenever the provider has data for the entity.","items":{"properties":{"bidHigh":{"description":"Upper bound of the estimated paid-search top-of-page bid in USD.","type":"number"},"bidLow":{"description":"Lower bound of the estimated paid-search top-of-page bid in USD.","type":"number"},"competition":{"description":"Paid-search competition level for the keyword (LOW, MEDIUM, HIGH).","type":"string"},"cpc":{"description":"Average paid-search cost per click in USD.","type":"number"},"firstRank":{"description":"Absolute organic ranking position for the first domain. Populated whenever the provider has data for the entity.","type":"integer","x-anyapi-must-populate":true},"firstTitle":{"description":"Search-result title of the first domain's ranking page.","type":"string"},"firstUrl":{"description":"Ranking URL for the first domain.","type":"string"},"keyword":{"description":"Keyword phrase both domains rank for. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"keywordDifficulty":{"description":"Estimated organic ranking difficulty on a 0-100 scale.","type":"integer"},"searchIntent":{"description":"Primary SEO search intent for the keyword.","type":"string"},"searchVolume":{"description":"Average monthly search volume for the keyword.","type":"integer"},"secondRank":{"description":"Absolute organic ranking position for the second domain. Absent when intersections is false (the second domain does not rank for this keyword).","type":"integer"},"secondTitle":{"description":"Search-result title of the second domain's ranking page. Absent when the second domain does not rank for this keyword.","type":"string"},"secondUrl":{"description":"Ranking URL for the second domain. Absent when intersections is false.","type":"string"},"updatedUtc":{"description":"UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds.","type":"number"}},"required":["keyword","firstRank"],"type":"object"},"type":"array","x-anyapi-must-populate":true}},"required":["keywords"],"type":"object"}]},"found":{"type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"SEO Domain Intersection output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"SEO Domain Intersection","tags":["seo"],"x-mint":{"href":"/api-reference/seo/domain-intersection"},"x-payment-info":{"price":{"currency":"USD","max":"0.188640","min":"0.028640","mode":"dynamic"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"currency":"USD","max":"0.188640","min":"0.028640","minimumUsd":"0.001000","mode":"dynamic","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"currency":"USD","max":"0.188640","min":"0.028640","minimumUsd":null,"mode":"dynamic","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/seo.domain_rank_overview":{"post":{"description":"Get AnyAPI SEO domain ranking, organic traffic, and paid traffic metrics as normalized JSON.\n\n**Price:** billed per result - \\$14.55 per 1,000 requests base + \\$0.00 per 1,000 results, capped at \\$14.55 per 1,000 requests.\n\n**Routing:** one lane serves this API today, so a failed attempt has nowhere to fail over to. Payment outcome follows the selected rail's settlement policy.\n\n**Catalog:** [SEO Domain Rank Overview pricing and uptime](https://getanyapi.com/api/seo/domain-rank-overview) - live USD price, lane routing, and measured 30-day uptime. [Every Seo endpoint](https://getanyapi.com/api/seo).","operationId":"seo_domain_rank_overview","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"language":"en","location":2840,"target":"ahrefs.com"},"schema":{"additionalProperties":false,"example":{"language":"en","location":2840,"target":"ahrefs.com"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"language":{"default":"en","description":"Language code for SEO domain metrics.","type":"string"},"location":{"default":2840,"description":"Location code for SEO domain metrics. The default is the United States.","type":"integer"},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"target":{"description":"Domain to analyze, without a protocol or leading www.","maxLength":253,"minLength":3,"type":"string"}},"required":["target"],"title":"SEO Domain Rank Overview input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"oneOf":[{"type":"null"},{"properties":{"domain":{"description":"Analyzed domain. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"language":{"description":"Language code the metrics are scoped to.","type":"string"},"location":{"description":"Location code the metrics are scoped to.","type":"integer"},"organicKeywords":{"description":"Number of organic search results where the domain appears. Populated whenever the provider has data for the entity.","type":"integer","x-anyapi-must-populate":true},"organicPos1":{"description":"Number of organic search results where the domain ranks first. Populated whenever the provider has data for the entity.","type":"integer","x-anyapi-must-populate":true},"organicPos2To3":{"description":"Number of organic search results where the domain ranks second or third. Populated whenever the provider has data for the entity.","type":"integer","x-anyapi-must-populate":true},"organicPos4To10":{"description":"Number of organic search results where the domain ranks fourth through tenth. Populated whenever the provider has data for the entity.","type":"integer","x-anyapi-must-populate":true},"organicTraffic":{"description":"Estimated monthly organic search traffic. Populated whenever the provider has data for the entity.","type":"number","x-anyapi-must-populate":true},"organicTrafficCostUsd":{"description":"Estimated USD value of the organic search traffic. Populated whenever the provider has data for the entity.","type":"number","x-anyapi-must-populate":true},"paidKeywords":{"description":"Number of paid search results where the domain appears.","type":"integer"},"paidPos1":{"description":"Number of paid search results where the domain ranks first.","type":"integer"},"paidPos2To3":{"description":"Number of paid search results where the domain ranks second or third.","type":"integer"},"paidPos4To10":{"description":"Number of paid search results where the domain ranks fourth through tenth.","type":"integer"},"paidTraffic":{"description":"Estimated monthly paid search traffic.","type":"number"},"paidTrafficCostUsd":{"description":"Estimated USD value of the paid search traffic.","type":"number"}},"required":["domain"],"type":"object"}]},"found":{"type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"SEO Domain Rank Overview output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"SEO Domain Rank Overview","tags":["seo"],"x-mint":{"href":"/api-reference/seo/domain-rank-overview"},"x-payment-info":{"price":{"currency":"USD","max":"0.014550","min":"0.014550","mode":"dynamic"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"currency":"USD","max":"0.014550","min":"0.014550","minimumUsd":"0.001000","mode":"dynamic","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"currency":"USD","max":"0.014550","min":"0.014550","minimumUsd":null,"mode":"dynamic","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/seo.domain_technologies":{"post":{"description":"Detect the technology stack a website runs: CMS, analytics, marketing, hosting, and security, plus contacts and social profiles as normalized JSON.\n\n**Price:** \\$14.40 per 1,000 requests (flat per request - same cost regardless of results returned).\n\n**Routing:** one lane serves this API today, so a failed attempt has nowhere to fail over to. Payment outcome follows the selected rail's settlement policy.\n\n**Catalog:** [SEO Domain Technologies pricing and uptime](https://getanyapi.com/api/seo/domain-technologies) - live USD price, lane routing, and measured 30-day uptime. [Every Seo endpoint](https://getanyapi.com/api/seo).","operationId":"seo_domain_technologies","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"domain":"hubspot.com"},"schema":{"additionalProperties":false,"example":{"domain":"hubspot.com"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"domain":{"description":"Domain to analyze, without a protocol or leading www. Billing is flat per request.","maxLength":253,"minLength":3,"type":"string"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true}},"required":["domain"],"title":"SEO Domain Technologies input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"oneOf":[{"type":"null"},{"properties":{"contentLanguageCode":{"description":"Language code detected from the domain's page content.","type":"string"},"countryIsoCode":{"description":"Two-letter ISO country code the domain is associated with.","type":"string"},"description":{"description":"Meta description of the domain's homepage.","type":"string"},"domain":{"description":"Domain name that was analyzed, as the detection index stores it. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"domainRank":{"description":"Relative authority rank of the domain. Higher is stronger. Populated whenever the provider has data for the entity.","type":"integer","x-anyapi-must-populate":true},"emails":{"description":"Contact email addresses published on the domain.","items":{"type":"string"},"type":"array"},"languageCode":{"description":"Language code declared by the domain.","type":"string"},"lastVisitedUtc":{"description":"UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds.","type":"number"},"phoneNumbers":{"description":"Contact phone numbers published on the domain.","items":{"type":"string"},"type":"array"},"socialGraphUrls":{"description":"Social profile URLs linked from the domain.","items":{"type":"string"},"type":"array"},"technologies":{"description":"Technologies detected on the domain, nested by group and then by category, with an array of technology names at each leaf. Populated whenever the provider has data for the entity.","type":"object","x-anyapi-must-populate":true},"title":{"description":"Title of the domain's homepage.","type":"string"}},"required":["domain"],"type":"object"}]},"found":{"type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"SEO Domain Technologies output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"SEO Domain Technologies","tags":["seo"],"x-mint":{"href":"/api-reference/seo/domain-technologies"},"x-payment-info":{"price":{"amount":"0.014400","currency":"USD","mode":"fixed"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"amount":"0.014400","currency":"USD","minimumUsd":"0.001000","mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"amount":"0.014400","currency":"USD","minimumUsd":null,"mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/seo.domains_by_technology":{"post":{"description":"Find websites running a given technology, category, or on-page term: domain, rank, detected stack, contacts, and social profiles as normalized JSON.\n\n**Price:** billed per result - \\$14.64 per 1,000 requests base + \\$1.20 per 1,000 results, capped at \\$134.64 per 1,000 requests.\n\n**Routing:** one lane serves this API today, so a failed attempt has nowhere to fail over to. Payment outcome follows the selected rail's settlement policy.\n\n**Catalog:** [SEO Domains By Technology pricing and uptime](https://getanyapi.com/api/seo/domains-by-technology) - live USD price, lane routing, and measured 30-day uptime. [Every Seo endpoint](https://getanyapi.com/api/seo).","operationId":"seo_domains_by_technology","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"keyword":"highlevel","limit":10,"orderBy":"rank_desc"},"schema":{"additionalProperties":false,"example":{"keyword":"highlevel","limit":10,"orderBy":"rank_desc"},"oneOf":[{"required":["technology"]},{"required":["category"]},{"required":["group"]},{"required":["keyword"]}],"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"category":{"description":"Technology category to match, for example marketing_automation. Broader than technology: it returns every domain running anything in that category.","maxLength":100,"minLength":2,"type":"string"},"cursor":{"description":"Pagination cursor from a previous response's nextCursor. Omit for the first page.","type":"string"},"group":{"description":"Top-level technology group to match, for example marketing or servers. The broadest selector.","maxLength":100,"minLength":2,"type":"string"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"keyword":{"description":"On-page term to match in the site's HTML, for example highlevel. Use this to find sites running a product that the technology index does not detect by name.","maxLength":100,"minLength":2,"type":"string"},"limit":{"default":20,"description":"Maximum number of domains to return in this response. You are billed per returned result, so a lower limit costs less.","maximum":100,"minimum":1,"type":"integer"},"orderBy":{"description":"Sort order for the returned domains: by domain rank descending or ascending, by most recently crawled, or by country code. Omit for the default order.","enum":["rank_desc","rank_asc","last_visited_desc","country_asc"],"type":"string"},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"technology":{"description":"Exact technology name to match, for example Nginx or HubSpot. Only technologies present in the detection index are accepted; an unindexed name returns found false, so use keyword instead when a product is not matched by name.","maxLength":100,"minLength":2,"type":"string"}},"title":"SEO Domains By Technology input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"oneOf":[{"type":"null"},{"additionalProperties":false,"properties":{"domains":{"description":"Domains detected running the requested technology, category, group, or on-page term. Populated whenever the provider has data for the entity.","items":{"properties":{"contentLanguageCode":{"description":"Language code detected from the domain's page content.","type":"string"},"countryIsoCode":{"description":"Two-letter ISO country code the domain is associated with.","type":"string"},"description":{"description":"Meta description of the domain's homepage.","type":"string"},"domain":{"description":"Domain name of the detected website. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"domainRank":{"description":"Relative authority rank of the domain. Higher is stronger. Populated whenever the provider has data for the entity.","type":"integer","x-anyapi-must-populate":true},"emails":{"description":"Contact email addresses published on the domain.","items":{"type":"string"},"type":"array"},"keywords":{"description":"Meta keywords declared on the domain's home page.","items":{"type":"string"},"type":"array"},"languageCode":{"description":"Language code declared by the domain.","type":"string"},"lastVisitedUtc":{"description":"UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds.","type":"number"},"phoneNumbers":{"description":"Contact phone numbers published on the domain.","items":{"type":"string"},"type":"array"},"socialGraphUrls":{"description":"Social profile URLs linked from the domain.","items":{"type":"string"},"type":"array"},"technologies":{"description":"Technologies detected on the domain, nested by group and then by category, with an array of technology names at each leaf. Populated whenever the provider has data for the entity.","type":"object","x-anyapi-must-populate":true},"title":{"description":"Title of the domain's homepage.","type":"string"}},"required":["domain"],"type":"object"},"type":"array","x-anyapi-must-populate":true},"nextCursor":{"description":"Cursor for the next page. Null or empty when there are no further results.","type":["string","null"]},"totalCount":{"description":"Total number of domains matching the request across all pages.","type":"integer"}},"required":["domains"],"type":"object"}]},"found":{"type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"SEO Domains By Technology output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"SEO Domains By Technology","tags":["seo"],"x-mint":{"href":"/api-reference/seo/domains-by-technology"},"x-payment-info":{"price":{"currency":"USD","max":"0.134640","min":"0.014640","mode":"dynamic"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"currency":"USD","max":"0.134640","min":"0.014640","minimumUsd":"0.001000","mode":"dynamic","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"currency":"USD","max":"0.134640","min":"0.014640","minimumUsd":null,"mode":"dynamic","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/seo.keyword_difficulty":{"post":{"description":"Get AnyAPI SEO keyword difficulty scores for one or more keywords as normalized JSON.\n\n**Price:** billed per keyword - \\$14.38 per 1,000 requests base + \\$0.16 per 1,000 keywords, capped at \\$174.38 per 1,000 requests.\n\n**Routing:** one lane serves this API today, so a failed attempt has nowhere to fail over to. Payment outcome follows the selected rail's settlement policy.\n\n**Catalog:** [SEO Keyword Difficulty pricing and uptime](https://getanyapi.com/api/seo/keyword-difficulty) - live USD price, lane routing, and measured 30-day uptime. [Every Seo endpoint](https://getanyapi.com/api/seo).","operationId":"seo_keyword_difficulty","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"keywords":["seo tools"],"language":"en","location":2840},"schema":{"additionalProperties":false,"example":{"keywords":["seo tools"],"language":"en","location":2840},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"keywords":{"description":"SEO keywords to score for organic ranking difficulty.","items":{"maxLength":80,"minLength":3,"type":"string"},"maxItems":1000,"minItems":1,"type":"array"},"language":{"default":"en","description":"Language code for SEO keyword difficulty metrics.","type":"string"},"location":{"default":2840,"description":"Location code for SEO keyword difficulty metrics. The default is the United States.","type":"integer"},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true}},"required":["keywords"],"title":"SEO Keyword Difficulty input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"oneOf":[{"type":"null"},{"additionalProperties":false,"properties":{"difficulties":{"description":"SEO keyword difficulty records. Populated whenever the provider has data for the entity.","items":{"properties":{"keyword":{"description":"Keyword phrase. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"keywordDifficulty":{"description":"Estimated organic ranking difficulty on a 0-100 scale. Omitted when the upstream has no difficulty for the keyword. Populated whenever the provider has data for the entity.","type":"integer","x-anyapi-must-populate":true}},"required":["keyword"],"type":"object"},"type":"array","x-anyapi-must-populate":true}},"required":["difficulties"],"type":"object"}]},"found":{"type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"SEO Keyword Difficulty output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"SEO Keyword Difficulty","tags":["seo"],"x-mint":{"href":"/api-reference/seo/keyword-difficulty"},"x-payment-info":{"price":{"currency":"USD","max":"0.174380","min":"0.014380","mode":"dynamic"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"currency":"USD","max":"0.174380","min":"0.014380","minimumUsd":"0.001000","mode":"dynamic","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"currency":"USD","max":"0.174380","min":"0.014380","minimumUsd":null,"mode":"dynamic","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/seo.keyword_ideas":{"post":{"description":"Find AnyAPI SEO keyword ideas from seed terms with volume, CPC, competition, difficulty, and intent as normalized JSON.\n\n**Price:** billed per result - \\$14.96 per 1,000 requests base + \\$0.16 per 1,000 results, capped at \\$174.96 per 1,000 requests.\n\n**Routing:** one lane serves this API today, so a failed attempt has nowhere to fail over to. Payment outcome follows the selected rail's settlement policy.\n\n**Catalog:** [SEO Keyword Ideas pricing and uptime](https://getanyapi.com/api/seo/keyword-ideas) - live USD price, lane routing, and measured 30-day uptime. [Every Seo endpoint](https://getanyapi.com/api/seo).","operationId":"seo_keyword_ideas","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"keywords":["project management software"],"language":"en","limit":5,"location":2840},"schema":{"additionalProperties":false,"example":{"keywords":["project management software"],"language":"en","limit":5,"location":2840},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"closelyVariants":{"description":"When true, generate only close variants of the seed keywords; when false (the default), generate a broader set of related ideas.","type":"boolean"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"keywords":{"description":"Seed SEO keywords used to generate related keyword ideas.","items":{"minLength":3,"type":"string"},"maxItems":200,"minItems":1,"type":"array"},"language":{"default":"en","description":"Language code for SEO metrics.","type":"string"},"limit":{"default":5,"description":"Maximum number of keyword ideas to return. You are billed per returned result, so a lower limit costs less.","maximum":1000,"minimum":1,"type":"integer"},"location":{"default":2840,"description":"Location code for SEO metrics. The default is the United States.","type":"integer"},"orderBy":{"description":"Sort order for the returned ideas: by search volume, cost per click, or keyword difficulty, ascending or descending. Omit for the default order.","enum":["volume_desc","volume_asc","cpc_desc","difficulty_asc","difficulty_desc"],"type":"string"},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true}},"required":["keywords"],"title":"SEO Keyword Ideas input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"oneOf":[{"type":"null"},{"additionalProperties":false,"properties":{"ideas":{"description":"SEO keyword idea records. Populated whenever the provider has data for the entity.","items":{"properties":{"bidHigh":{"description":"Upper bound of the estimated paid-search top-of-page bid in USD.","type":"number"},"bidLow":{"description":"Lower bound of the estimated paid-search top-of-page bid in USD.","type":"number"},"competition":{"description":"Paid-search competition level for the keyword idea. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"cpc":{"description":"Average paid-search cost per click in USD. Populated whenever the provider has data for the entity.","type":"number","x-anyapi-must-populate":true},"keyword":{"description":"Keyword idea phrase. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"keywordDifficulty":{"description":"Estimated organic ranking difficulty on a 0-100 scale. Populated whenever the provider has data for the entity.","type":"integer","x-anyapi-must-populate":true},"monthlySearches":{"description":"Monthly search-volume history for the keyword.","items":{"properties":{"month":{"description":"Calendar month number for the monthly search-volume record.","type":"integer"},"searchVolume":{"description":"Search volume for the month.","type":"integer"},"year":{"description":"Calendar year for the monthly search-volume record.","type":"integer"}},"type":"object"},"type":"array"},"searchIntent":{"description":"Primary SEO search intent for the keyword idea. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"searchVolume":{"description":"Average monthly search volume for the keyword idea. Populated whenever the provider has data for the entity.","type":"integer","x-anyapi-must-populate":true},"updatedUtc":{"description":"UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds.","type":"number"}},"required":["keyword"],"type":"object"},"type":"array","x-anyapi-must-populate":true}},"required":["ideas"],"type":"object"}]},"found":{"type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"SEO Keyword Ideas output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"SEO Keyword Ideas","tags":["seo"],"x-mint":{"href":"/api-reference/seo/keyword-ideas"},"x-payment-info":{"price":{"currency":"USD","max":"0.174960","min":"0.014960","mode":"dynamic"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"currency":"USD","max":"0.174960","min":"0.014960","minimumUsd":"0.001000","mode":"dynamic","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"currency":"USD","max":"0.174960","min":"0.014960","minimumUsd":null,"mode":"dynamic","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/seo.keyword_overview":{"post":{"description":"Get AnyAPI SEO keyword metrics including search volume, CPC, competition, difficulty, and search intent as normalized JSON.\n\n**Price:** billed per keyword - \\$14.38 per 1,000 requests base + \\$0.16 per 1,000 keywords, capped at \\$126.38 per 1,000 requests.\n\n**Routing:** one lane serves this API today, so a failed attempt has nowhere to fail over to. Payment outcome follows the selected rail's settlement policy.\n\n**Catalog:** [SEO Keyword Overview pricing and uptime](https://getanyapi.com/api/seo/keyword-overview) - live USD price, lane routing, and measured 30-day uptime. [Every Seo endpoint](https://getanyapi.com/api/seo).","operationId":"seo_keyword_overview","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"keywords":["project management software"],"language":"en","location":2840},"schema":{"additionalProperties":false,"example":{"keywords":["project management software"],"language":"en","location":2840},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"keywords":{"description":"SEO keywords to analyze.","items":{"maxLength":80,"minLength":3,"type":"string"},"maxItems":700,"minItems":1,"type":"array"},"language":{"default":"en","description":"Language code for SEO metrics.","type":"string"},"location":{"default":2840,"description":"Location code for SEO metrics. The default is the United States.","type":"integer"},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true}},"required":["keywords"],"title":"SEO Keyword Overview input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"oneOf":[{"type":"null"},{"additionalProperties":false,"properties":{"keywords":{"description":"SEO keyword metric records. Populated whenever the provider has data for the entity.","items":{"properties":{"bidHigh":{"description":"Upper bound of the estimated paid-search top-of-page bid in USD.","type":"number"},"bidLow":{"description":"Lower bound of the estimated paid-search top-of-page bid in USD.","type":"number"},"competition":{"description":"Paid-search competition level for the keyword. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"cpc":{"description":"Average paid-search cost per click in USD. Populated whenever the provider has data for the entity.","type":"number","x-anyapi-must-populate":true},"keyword":{"description":"Keyword phrase. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"keywordDifficulty":{"description":"Estimated organic ranking difficulty on a 0-100 scale. Populated whenever the provider has data for the entity.","type":"integer","x-anyapi-must-populate":true},"monthlySearches":{"description":"Monthly search-volume history for the keyword.","items":{"properties":{"month":{"description":"Calendar month number for the monthly search-volume record.","type":"integer"},"searchVolume":{"description":"Search volume for the month.","type":"integer"},"year":{"description":"Calendar year for the monthly search-volume record.","type":"integer"}},"type":"object"},"type":"array"},"searchIntent":{"description":"Primary SEO search intent for the keyword. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"searchVolume":{"description":"Average monthly search volume for the keyword. Populated whenever the provider has data for the entity.","type":"integer","x-anyapi-must-populate":true},"updatedUtc":{"description":"UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds.","type":"number"}},"required":["keyword"],"type":"object"},"type":"array","x-anyapi-must-populate":true}},"required":["keywords"],"type":"object"}]},"found":{"type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"SEO Keyword Overview output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"SEO Keyword Overview","tags":["seo"],"x-mint":{"href":"/api-reference/seo/keyword-overview"},"x-payment-info":{"price":{"currency":"USD","max":"0.126380","min":"0.014380","mode":"dynamic"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"currency":"USD","max":"0.126380","min":"0.014380","minimumUsd":"0.001000","mode":"dynamic","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"currency":"USD","max":"0.126380","min":"0.014380","minimumUsd":null,"mode":"dynamic","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/seo.keyword_suggestions":{"post":{"description":"Find AnyAPI SEO keyword suggestions from a seed term with volume, CPC, competition, difficulty, and intent as normalized JSON.\n\n**Price:** billed per result - \\$14.96 per 1,000 requests base + \\$0.16 per 1,000 results, capped at \\$174.96 per 1,000 requests.\n\n**Routing:** one lane serves this API today, so a failed attempt has nowhere to fail over to. Payment outcome follows the selected rail's settlement policy.\n\n**Catalog:** [SEO Keyword Suggestions pricing and uptime](https://getanyapi.com/api/seo/keyword-suggestions) - live USD price, lane routing, and measured 30-day uptime. [Every Seo endpoint](https://getanyapi.com/api/seo).","operationId":"seo_keyword_suggestions","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"keyword":"project management software","language":"en","limit":5,"location":2840},"schema":{"additionalProperties":false,"example":{"keyword":"project management software","language":"en","limit":5,"location":2840},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"exactMatch":{"description":"When true, only return suggestions that contain the exact seed phrase; when false (the default), allow reordered and partial-match suggestions.","type":"boolean"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"keyword":{"description":"Seed SEO keyword used to generate keyword suggestions.","maxLength":80,"minLength":3,"type":"string"},"language":{"default":"en","description":"Language code for SEO metrics.","type":"string"},"limit":{"default":5,"description":"Maximum number of keyword suggestions to return. You are billed per returned result, so a lower limit costs less.","maximum":1000,"minimum":1,"type":"integer"},"location":{"default":2840,"description":"Location code for SEO metrics. The default is the United States.","type":"integer"},"orderBy":{"description":"Sort order for the returned suggestions: by search volume, cost per click, or keyword difficulty, ascending or descending. Omit for the default order.","enum":["volume_desc","volume_asc","cpc_desc","difficulty_asc","difficulty_desc"],"type":"string"},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true}},"required":["keyword"],"title":"SEO Keyword Suggestions input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"oneOf":[{"type":"null"},{"additionalProperties":false,"properties":{"suggestions":{"description":"SEO keyword suggestion records. Populated whenever the provider has data for the entity.","items":{"properties":{"bidHigh":{"description":"Upper bound of the estimated paid-search top-of-page bid in USD.","type":"number"},"bidLow":{"description":"Lower bound of the estimated paid-search top-of-page bid in USD.","type":"number"},"competition":{"description":"Paid-search competition level for the keyword suggestion. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"cpc":{"description":"Average paid-search cost per click in USD. Populated whenever the provider has data for the entity.","type":"number","x-anyapi-must-populate":true},"keyword":{"description":"Keyword suggestion phrase. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"keywordDifficulty":{"description":"Estimated organic ranking difficulty on a 0-100 scale. Populated whenever the provider has data for the entity.","type":"integer","x-anyapi-must-populate":true},"monthlySearches":{"description":"Monthly search-volume history for the keyword.","items":{"properties":{"month":{"description":"Calendar month number for the monthly search-volume record.","type":"integer"},"searchVolume":{"description":"Search volume for the month.","type":"integer"},"year":{"description":"Calendar year for the monthly search-volume record.","type":"integer"}},"type":"object"},"type":"array"},"searchIntent":{"description":"Primary SEO search intent for the keyword suggestion. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"searchVolume":{"description":"Average monthly search volume for the keyword suggestion. Populated whenever the provider has data for the entity.","type":"integer","x-anyapi-must-populate":true},"updatedUtc":{"description":"UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds.","type":"number"}},"required":["keyword"],"type":"object"},"type":"array","x-anyapi-must-populate":true}},"required":["suggestions"],"type":"object"}]},"found":{"type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"SEO Keyword Suggestions output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"SEO Keyword Suggestions","tags":["seo"],"x-mint":{"href":"/api-reference/seo/keyword-suggestions"},"x-payment-info":{"price":{"currency":"USD","max":"0.174960","min":"0.014960","mode":"dynamic"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"currency":"USD","max":"0.174960","min":"0.014960","minimumUsd":"0.001000","mode":"dynamic","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"currency":"USD","max":"0.174960","min":"0.014960","minimumUsd":null,"mode":"dynamic","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/seo.local_pack":{"post":{"description":"Search AnyAPI SEO local pack results with rankings, ratings, addresses, and contact basics as normalized JSON.\n\n**Price:** billed per result - \\$2.40 per 1,000 requests base + \\$0.00 per 1,000 results, capped at \\$2.40 per 1,000 requests.\n\n**Routing:** one lane serves this API today, so a failed attempt has nowhere to fail over to. Payment outcome follows the selected rail's settlement policy.\n\n**Catalog:** [SEO Local Pack pricing and uptime](https://getanyapi.com/api/seo/local-pack) - live USD price, lane routing, and measured 30-day uptime. [Every Seo endpoint](https://getanyapi.com/api/seo).","operationId":"seo_local_pack","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"keyword":"coffee shop","language":"en","limit":5,"location":"New York,New York,United States"},"schema":{"additionalProperties":false,"example":{"keyword":"coffee shop","language":"en","limit":5,"location":"New York,New York,United States"},"oneOf":[{"required":["location"]},{"required":["locationCoordinate"]}],"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"keyword":{"description":"SEO local pack search keyword.","maxLength":200,"minLength":2,"type":"string"},"language":{"default":"en","description":"Language code for SEO local pack results.","type":"string"},"limit":{"default":20,"description":"Maximum number of local pack places to return. Billing is flat per request.","maximum":100,"minimum":1,"type":"integer"},"location":{"description":"Local pack search location name, formatted like City,Region,Country; for example, New York,New York,United States. Supply either location or locationCoordinate, not both.","maxLength":180,"minLength":3,"type":"string"},"locationCoordinate":{"description":"Precise geo target as latitude,longitude or latitude,longitude,radius (radius in meters); for example, 40.7580,-73.9855 or 40.7580,-73.9855,1000. Supply either location or locationCoordinate, not both.","pattern":"^-?[0-9]+(\\.[0-9]+)?,-?[0-9]+(\\.[0-9]+)?(,[0-9]+)?$","type":"string"},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true}},"required":["keyword"],"title":"SEO Local Pack input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"oneOf":[{"type":"null"},{"additionalProperties":false,"properties":{"places":{"description":"SEO local pack place records. Populated whenever the provider has data for the entity.","items":{"properties":{"address":{"description":"Full formatted street address. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"category":{"description":"Primary place category.","type":"string"},"city":{"description":"City the place is in.","type":"string"},"claimed":{"description":"True when the place listing is claimed.","type":"boolean"},"countryCode":{"description":"Two-letter country code.","type":"string"},"domain":{"description":"Registrable domain of the place website.","type":"string"},"image":{"description":"Primary photo URL for the place. The query string carries the image identity, so it is kept.","type":"string"},"latitude":{"description":"Latitude of the place in decimal degrees.","type":"number"},"longitude":{"description":"Longitude of the place in decimal degrees.","type":"number"},"name":{"description":"Place name. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"phone":{"description":"Business phone number, when listed.","type":"string"},"placeId":{"description":"Place identifier.","type":"string"},"postalCode":{"description":"Postal code of the place.","type":"string"},"priceLevel":{"description":"Price level indicator Google shows for the place.","type":"string"},"rankAbsolute":{"description":"Absolute ranking position in the local pack results. Populated whenever the provider has data for the entity.","type":"integer","x-anyapi-must-populate":true},"rankGroup":{"description":"Grouped ranking position within the local pack.","type":"integer"},"rating":{"description":"Average star rating out of 5. Populated whenever the provider has data for the entity.","type":"number","x-anyapi-must-populate":true},"region":{"description":"State or region the place is in.","type":"string"},"reviewsCount":{"description":"Total number of reviews.","type":"integer"},"url":{"description":"Canonical place URL.","type":"string"}},"required":["name","rankAbsolute"],"type":"object"},"type":"array","x-anyapi-must-populate":true}},"required":["places"],"type":"object"}]},"found":{"type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"SEO Local Pack output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"SEO Local Pack","tags":["seo"],"x-mint":{"href":"/api-reference/seo/local-pack"},"x-payment-info":{"price":{"currency":"USD","max":"0.002400","min":"0.002400","mode":"dynamic"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"currency":"USD","max":"0.002400","min":"0.002400","minimumUsd":"0.001000","mode":"dynamic","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"currency":"USD","max":"0.002400","min":"0.002400","minimumUsd":null,"mode":"dynamic","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/seo.ranked_keywords":{"post":{"description":"Get AnyAPI SEO ranked keywords for a domain with rankings, traffic estimates, volume, CPC, difficulty, and intent as normalized JSON.\n\n**Price:** billed per result - \\$14.96 per 1,000 requests base + \\$0.16 per 1,000 results, capped at \\$174.96 per 1,000 requests.\n\n**Routing:** one lane serves this API today, so a failed attempt has nowhere to fail over to. Payment outcome follows the selected rail's settlement policy.\n\n**Catalog:** [SEO Ranked Keywords pricing and uptime](https://getanyapi.com/api/seo/ranked-keywords) - live USD price, lane routing, and measured 30-day uptime. [Every Seo endpoint](https://getanyapi.com/api/seo).","operationId":"seo_ranked_keywords","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"language":"en","limit":10,"location":2840,"target":"github.com"},"schema":{"additionalProperties":false,"example":{"language":"en","limit":10,"location":2840,"target":"github.com"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"language":{"default":"en","description":"Language code for SEO ranking metrics.","type":"string"},"limit":{"default":10,"description":"Maximum number of ranked keywords to return. You are billed per returned result, so a lower limit costs less.","maximum":1000,"minimum":1,"type":"integer"},"location":{"default":2840,"description":"Location code for SEO ranking metrics. The default is the United States.","type":"integer"},"orderBy":{"description":"Sort order for the returned ranked keywords: by SERP position (ascending for best rankings first), search volume, or estimated traffic value (etv). Omit for the default order.","enum":["position_asc","position_desc","volume_desc","etv_desc"],"type":"string"},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"target":{"description":"Domain to analyze, without a protocol or leading www.","maxLength":253,"minLength":3,"type":"string"}},"required":["target"],"title":"SEO Ranked Keywords input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"oneOf":[{"type":"null"},{"additionalProperties":false,"properties":{"rankedKeywords":{"description":"SEO ranked keyword records for the domain. Populated whenever the provider has data for the entity.","items":{"properties":{"competition":{"description":"Paid-search competition level for the keyword (LOW, MEDIUM, HIGH).","type":"string"},"cpc":{"description":"Average paid-search cost per click in USD.","type":"number"},"description":{"description":"Search-result snippet of the ranking page.","type":"string"},"domain":{"description":"Domain of the ranking page.","type":"string"},"etv":{"description":"Estimated organic search traffic for the ranking URL.","type":"number"},"keyword":{"description":"Keyword phrase the domain ranks for. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"keywordDifficulty":{"description":"Estimated organic ranking difficulty on a 0-100 scale.","type":"integer"},"rankAbsolute":{"description":"Absolute organic ranking position for the keyword. Populated whenever the provider has data for the entity.","type":"integer","x-anyapi-must-populate":true},"rankGroup":{"description":"Grouped organic ranking position for the keyword. Populated whenever the provider has data for the entity.","type":"integer","x-anyapi-must-populate":true},"searchIntent":{"description":"Primary SEO search intent for the keyword.","type":"string"},"searchVolume":{"description":"Average monthly search volume for the keyword. Populated whenever the provider has data for the entity.","type":"integer","x-anyapi-must-populate":true},"title":{"description":"Search-result title of the ranking page.","type":"string"},"type":{"description":"SERP element type the ranking appeared as (e.g. organic, featured_snippet).","type":"string"},"updatedUtc":{"description":"UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds.","type":"number"},"url":{"description":"Ranking URL for the domain.","type":"string"}},"required":["keyword","rankAbsolute"],"type":"object"},"type":"array","x-anyapi-must-populate":true}},"required":["rankedKeywords"],"type":"object"}]},"found":{"type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"SEO Ranked Keywords output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"SEO Ranked Keywords","tags":["seo"],"x-mint":{"href":"/api-reference/seo/ranked-keywords"},"x-payment-info":{"price":{"currency":"USD","max":"0.174960","min":"0.014960","mode":"dynamic"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"currency":"USD","max":"0.174960","min":"0.014960","minimumUsd":"0.001000","mode":"dynamic","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"currency":"USD","max":"0.174960","min":"0.014960","minimumUsd":null,"mode":"dynamic","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/seo.related_keywords":{"post":{"description":"Find AnyAPI SEO related keywords from a seed term with volume, CPC, competition, difficulty, and intent as normalized JSON.\n\n**Price:** billed per result - \\$14.96 per 1,000 requests base + \\$0.16 per 1,000 results, capped at \\$174.96 per 1,000 requests.\n\n**Routing:** one lane serves this API today, so a failed attempt has nowhere to fail over to. Payment outcome follows the selected rail's settlement policy.\n\n**Catalog:** [SEO Related Keywords pricing and uptime](https://getanyapi.com/api/seo/related-keywords) - live USD price, lane routing, and measured 30-day uptime. [Every Seo endpoint](https://getanyapi.com/api/seo).","operationId":"seo_related_keywords","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"keyword":"project management software","language":"en","limit":5,"location":2840},"schema":{"additionalProperties":false,"example":{"keyword":"project management software","language":"en","limit":5,"location":2840},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"depth":{"description":"Depth of the related-keyword expansion (0-4). Higher depth explores a broader keyword tree; the number of returned results, and therefore the price, is still capped by limit.","maximum":4,"minimum":0,"type":"integer"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"keyword":{"description":"Seed SEO keyword used to find related keywords.","maxLength":80,"minLength":3,"type":"string"},"language":{"default":"en","description":"Language code for SEO metrics.","type":"string"},"limit":{"default":5,"description":"Maximum number of related keywords to return. You are billed per returned result, so a lower limit costs less.","maximum":1000,"minimum":1,"type":"integer"},"location":{"default":2840,"description":"Location code for SEO metrics. The default is the United States.","type":"integer"},"orderBy":{"description":"Sort order for the returned related keywords: by search volume, cost per click, or keyword difficulty, ascending or descending. Omit for the default order.","enum":["volume_desc","volume_asc","cpc_desc","difficulty_asc","difficulty_desc"],"type":"string"},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true}},"required":["keyword"],"title":"SEO Related Keywords input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"oneOf":[{"type":"null"},{"additionalProperties":false,"properties":{"relatedKeywords":{"description":"SEO related keyword records. Populated whenever the provider has data for the entity.","items":{"properties":{"bidHigh":{"description":"Upper bound of the estimated paid-search top-of-page bid in USD.","type":"number"},"bidLow":{"description":"Lower bound of the estimated paid-search top-of-page bid in USD.","type":"number"},"competition":{"description":"Paid-search competition level for the related keyword. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"cpc":{"description":"Average paid-search cost per click in USD. Populated whenever the provider has data for the entity.","type":"number","x-anyapi-must-populate":true},"depth":{"description":"Related-keyword graph depth from the seed keyword. Populated whenever the provider has data for the entity.","type":"integer","x-anyapi-must-populate":true},"keyword":{"description":"Related keyword phrase. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"keywordDifficulty":{"description":"Estimated organic ranking difficulty on a 0-100 scale. Populated whenever the provider has data for the entity.","type":"integer","x-anyapi-must-populate":true},"keywords":{"description":"Further keywords DataForSEO relates to this one.","items":{"type":"string"},"type":"array"},"monthlySearches":{"description":"Monthly search-volume history for the keyword.","items":{"properties":{"month":{"description":"Calendar month number for the monthly search-volume record.","type":"integer"},"searchVolume":{"description":"Search volume for the month.","type":"integer"},"year":{"description":"Calendar year for the monthly search-volume record.","type":"integer"}},"type":"object"},"type":"array"},"searchIntent":{"description":"Primary SEO search intent for the related keyword. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"searchVolume":{"description":"Average monthly search volume for the related keyword. Populated whenever the provider has data for the entity.","type":"integer","x-anyapi-must-populate":true},"updatedUtc":{"description":"UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds.","type":"number"}},"required":["keyword"],"type":"object"},"type":"array","x-anyapi-must-populate":true}},"required":["relatedKeywords"],"type":"object"}]},"found":{"type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"SEO Related Keywords output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"SEO Related Keywords","tags":["seo"],"x-mint":{"href":"/api-reference/seo/related-keywords"},"x-payment-info":{"price":{"currency":"USD","max":"0.174960","min":"0.014960","mode":"dynamic"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"currency":"USD","max":"0.174960","min":"0.014960","minimumUsd":"0.001000","mode":"dynamic","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"currency":"USD","max":"0.174960","min":"0.014960","minimumUsd":null,"mode":"dynamic","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/seo.search_intent":{"post":{"description":"Classify AnyAPI SEO keyword search intent as normalized JSON.\n\n**Price:** billed per keyword - \\$14.38 per 1,000 requests base + \\$0.16 per 1,000 keywords, capped at \\$174.38 per 1,000 requests.\n\n**Routing:** one lane serves this API today, so a failed attempt has nowhere to fail over to. Payment outcome follows the selected rail's settlement policy.\n\n**Catalog:** [SEO Search Intent pricing and uptime](https://getanyapi.com/api/seo/search-intent) - live USD price, lane routing, and measured 30-day uptime. [Every Seo endpoint](https://getanyapi.com/api/seo).","operationId":"seo_search_intent","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"keywords":["seo tools"],"language":"en"},"schema":{"additionalProperties":false,"example":{"keywords":["seo tools"],"language":"en"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"keywords":{"description":"SEO keywords to classify by search intent.","items":{"maxLength":80,"minLength":3,"type":"string"},"maxItems":1000,"minItems":1,"type":"array"},"language":{"default":"en","description":"Language code for search intent classification.","type":"string"},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true}},"required":["keywords"],"title":"SEO Search Intent input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"oneOf":[{"type":"null"},{"additionalProperties":false,"properties":{"intents":{"description":"SEO keyword search intent records. Populated whenever the provider has data for the entity.","items":{"properties":{"intent":{"description":"Primary SEO search intent for the keyword. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"keyword":{"description":"Keyword phrase. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true}},"required":["keyword","intent"],"type":"object"},"type":"array","x-anyapi-must-populate":true}},"required":["intents"],"type":"object"}]},"found":{"type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"SEO Search Intent output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"SEO Search Intent","tags":["seo"],"x-mint":{"href":"/api-reference/seo/search-intent"},"x-payment-info":{"price":{"currency":"USD","max":"0.174380","min":"0.014380","mode":"dynamic"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"currency":"USD","max":"0.174380","min":"0.014380","minimumUsd":"0.001000","mode":"dynamic","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"currency":"USD","max":"0.174380","min":"0.014380","minimumUsd":null,"mode":"dynamic","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/seo.search_volume":{"post":{"description":"Get AnyAPI SEO keyword search volume, CPC, competition, bid estimates, and monthly history as normalized JSON.\n\n**Price:** billed per result - \\$108.00 per 1,000 requests base + \\$0.00 per 1,000 results, capped at \\$108.00 per 1,000 requests.\n\n**Routing:** one lane serves this API today, so a failed attempt has nowhere to fail over to. Payment outcome follows the selected rail's settlement policy.\n\n**Catalog:** [SEO Search Volume pricing and uptime](https://getanyapi.com/api/seo/search-volume) - live USD price, lane routing, and measured 30-day uptime. [Every Seo endpoint](https://getanyapi.com/api/seo).","operationId":"seo_search_volume","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"keywords":["seo tools"],"language":"en","location":2840},"schema":{"additionalProperties":false,"example":{"keywords":["seo tools"],"language":"en","location":2840},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"dateFrom":{"description":"Start of the historical monthly-searches window, formatted YYYY-MM-DD. Cannot be more than four years before today. Omit for the default trailing window.","pattern":"^[0-9]{4}-[0-9]{2}-[0-9]{2}$","type":"string"},"dateTo":{"description":"End of the historical monthly-searches window, formatted YYYY-MM-DD. Omit for the default trailing window.","pattern":"^[0-9]{4}-[0-9]{2}-[0-9]{2}$","type":"string"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"keywords":{"description":"SEO keyword phrases to retrieve search-volume metrics for.","items":{"maxLength":80,"minLength":3,"type":"string"},"maxItems":1000,"minItems":1,"type":"array"},"language":{"default":"en","description":"Language code for SEO search-volume metrics.","type":"string"},"location":{"default":2840,"description":"Location code for SEO search-volume metrics. The default is the United States.","type":"integer"},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"searchPartners":{"description":"When true, include Google search-partner network volume in the reported numbers; when false (the default), count Google search only.","type":"boolean"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true}},"required":["keywords"],"title":"SEO Search Volume input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"oneOf":[{"type":"null"},{"additionalProperties":false,"properties":{"keywords":{"description":"SEO keyword search-volume records. Populated whenever the provider has data for the entity.","items":{"properties":{"bidHigh":{"description":"Upper bound of the estimated paid-search top-of-page bid in USD.","type":"number"},"bidLow":{"description":"Lower bound of the estimated paid-search top-of-page bid in USD.","type":"number"},"competition":{"description":"Paid-search competition level for the keyword. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"competitionIndex":{"description":"Paid-search competition index for the keyword.","type":"integer"},"cpc":{"description":"Average paid-search cost per click in USD. Populated whenever the provider has data for the entity.","type":"number","x-anyapi-must-populate":true},"keyword":{"description":"Keyword phrase. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"monthlySearches":{"description":"Monthly search-volume history for the keyword.","items":{"properties":{"month":{"description":"Calendar month number for the monthly search-volume record.","type":"integer"},"searchVolume":{"description":"Search volume for the month.","type":"integer"},"year":{"description":"Calendar year for the monthly search-volume record.","type":"integer"}},"type":"object"},"type":"array"},"searchVolume":{"description":"Average monthly search volume for the keyword. Populated whenever the provider has data for the entity.","type":"integer","x-anyapi-must-populate":true}},"required":["keyword"],"type":"object"},"type":"array","x-anyapi-must-populate":true}},"required":["keywords"],"type":"object"}]},"found":{"type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"SEO Search Volume output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"SEO Search Volume","tags":["seo"],"x-mint":{"href":"/api-reference/seo/search-volume"},"x-payment-info":{"price":{"currency":"USD","max":"0.108000","min":"0.108000","mode":"dynamic"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"currency":"USD","max":"0.108000","min":"0.108000","minimumUsd":"0.001000","mode":"dynamic","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"currency":"USD","max":"0.108000","min":"0.108000","minimumUsd":null,"mode":"dynamic","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/snapchat.profile":{"post":{"description":"Fetch a Snapchat user's public profile by username: display name, bio, subscriber count, and recent public content.\n\n**Price:** billed per result - \\$1.10 per 1,000 requests base + \\$2.20 per 1,000 results, capped at \\$3.30 per 1,000 requests.\n\n**Routing:** one lane serves this API today, so a failed attempt has nowhere to fail over to. Payment outcome follows the selected rail's settlement policy.\n\n**Catalog:** [Snapchat Profile pricing and uptime](https://getanyapi.com/api/snapchat/profile) - live USD price, lane routing, and measured 30-day uptime. [Every Snapchat endpoint](https://getanyapi.com/api/snapchat).","operationId":"snapchat_profile","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"username":"nasa"},"schema":{"additionalProperties":false,"example":{"username":"nasa"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"username":{"description":"The Snapchat username or profile URL to look up (e.g. fcbarcelona or https://www.snapchat.com/add/fcbarcelona).","type":"string"}},"required":["username"],"title":"Snapchat profile input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"oneOf":[{"type":"null"},{"additionalProperties":false,"properties":{"items":{"description":"Profile record for the requested Snapchat username (one item). Populated whenever the provider has data for the entity.","items":{"properties":{"bio":{"description":"The profile's public bio / description text. Empty when the profile has none.","type":"string"},"category":{"description":"The profile's category (e.g. \"Government Org\"). Empty when the upstream omits it.","type":"string"},"displayName":{"description":"The profile's public display name. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"handle":{"description":"The profile's Snapchat username (add-me handle). Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"image":{"description":"URL of the profile avatar image, with tracking query params stripped. Empty when the upstream omits it.","type":"string"},"stories":{"description":"Recent public stories on the profile.","items":{"properties":{"id":{"description":"Story identifier.","type":"string"},"storyTitle":{"description":"Story title. Empty when the story has no title.","type":"string"},"thumbnailUrl":{"description":"Story thumbnail image URL, preserving signed delivery parameters required to load the preview.","type":"string"}},"type":"object"},"type":"array"},"subscribers":{"description":"Public subscriber count.","type":"integer"},"url":{"description":"Canonical public profile URL, with tracking query params stripped. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"website":{"description":"The profile's linked website URL. Empty when the profile has none.","type":"string"}},"required":["url","handle","displayName"],"type":"object"},"type":"array","x-anyapi-must-populate":true}},"required":["items"],"type":"object"}]},"found":{"description":"Whether the profile was found.","type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"Snapchat profile output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"Snapchat Profile","tags":["snapchat"],"x-mint":{"href":"/api-reference/snapchat/profile"},"x-payment-info":{"price":{"currency":"USD","max":"0.003300","min":"0.001100","mode":"dynamic"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"currency":"USD","max":"0.003300","min":"0.001100","minimumUsd":"0.001000","mode":"dynamic","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"currency":"USD","max":"0.003300","min":"0.001100","minimumUsd":null,"mode":"dynamic","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/social.finder":{"post":{"description":"Find a person's or brand's profiles across major social networks from a single name, returned as normalized JSON.\n\n**Price:** billed per result - \\$1.10 per 1,000 requests base + \\$2.20 per 1,000 results, capped at \\$23.10 per 1,000 requests.\n\n**Routing:** one lane serves this API today, so a failed attempt has nowhere to fail over to. Payment outcome follows the selected rail's settlement policy.\n\n**Catalog:** [Social Profile Finder pricing and uptime](https://getanyapi.com/api/social/finder) - live USD price, lane routing, and measured 30-day uptime. [Every Social endpoint](https://getanyapi.com/api/social).","operationId":"social_finder","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"limit":3,"name":"Elon Musk"},"schema":{"additionalProperties":false,"example":{"limit":3,"name":"Elon Musk"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"limit":{"description":"Maximum number of results to return (1-10, default 10). You are billed per result returned, so a lower limit costs less.","maximum":10,"minimum":1,"type":"integer"},"name":{"description":"The profile name or handle to search for across social networks (e.g. johndoe).","type":"string"},"platform":{"description":"Limit the search to one network: askfm, discord, facebook, github, instagram, linkedin, medium, pinterest, steam, threads, tiktok, twitch, or youtube (e.g. instagram); all networks are searched when omitted.","type":"string"},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true}},"required":["name"],"title":"Social Profile Finder input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"oneOf":[{"type":"null"},{"additionalProperties":false,"properties":{"items":{"description":"Profile match records: the queried profile name, the social network, and the matching profile URL when one was found. Populated whenever the provider has data for the entity.","items":{"properties":{"inputProfileName":{"description":"The name that was searched for. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"social":{"description":"The social network checked (e.g. discord, facebook, github). Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"socialProfileUrl":{"description":"URL of the matching profile, or null when no account was found on that network.","type":["string","null"]}},"required":["social","socialProfileUrl"],"type":"object"},"type":"array","x-anyapi-must-populate":true}},"required":["items"],"type":"object"}]},"found":{"type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"Social Profile Finder output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"Social Profile Finder","tags":["social"],"x-mint":{"href":"/api-reference/social/finder"},"x-payment-info":{"price":{"currency":"USD","max":"0.023100","min":"0.001100","mode":"dynamic"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"currency":"USD","max":"0.023100","min":"0.001100","minimumUsd":"0.001000","mode":"dynamic","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"currency":"USD","max":"0.023100","min":"0.001100","minimumUsd":null,"mode":"dynamic","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/spotify.album":{"post":{"description":"Fetch a Spotify album's tracklist, play counts, label, and release details by album URL or ID.\n\n**Price:** \\$1.20 per 1,000 requests (flat per request - same cost regardless of results returned).\n\n**Routing:** one lane serves this API today, so a failed attempt has nowhere to fail over to. Payment outcome follows the selected rail's settlement policy.\n\n**Catalog:** [Spotify Album pricing and uptime](https://getanyapi.com/api/spotify/album) - live USD price, lane routing, and measured 30-day uptime. [Every Spotify endpoint](https://getanyapi.com/api/spotify).","operationId":"spotify_album","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"url":"https://open.spotify.com/album/0pgrg7phBbnwGJ2HBEl9EG"},"schema":{"additionalProperties":false,"example":{"url":"https://open.spotify.com/album/0pgrg7phBbnwGJ2HBEl9EG"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"id":{"description":"Spotify album ID (alternative to url).","type":"string"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"url":{"description":"Spotify album URL (e.g. https://open.spotify.com/album/0pgrg7phBbnwGJ2HBEl9EG).","type":"string"}},"title":"Spotify Album input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"oneOf":[{"type":"null"},{"additionalProperties":false,"properties":{"artistName":{"description":"Name of the primary artist.","type":"string"},"id":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"image":{"description":"URL of the cover art image.","type":"string"},"label":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"name":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"popularity":{"type":"integer"},"releaseDate":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"tracks":{"description":"Populated whenever the provider has data for the entity.","items":{"properties":{"artistName":{"description":"Name of the primary artist.","type":"string"},"durationMs":{"type":"integer"},"name":{"type":"string"},"playcount":{"type":"integer"},"trackNumber":{"description":"Position of the track within the album.","type":"integer"},"uri":{"type":"string"}},"required":["name","playcount","durationMs","uri"],"type":"object"},"type":"array","x-anyapi-must-populate":true},"type":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"uri":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"url":{"description":"Canonical Spotify web URL, tracking query parameters stripped.","type":"string"}},"required":["id","name","type","label","popularity","releaseDate","uri","tracks"],"type":"object"}]},"found":{"type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"Spotify Album output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"Spotify Album","tags":["spotify"],"x-mint":{"href":"/api-reference/spotify/album"},"x-payment-info":{"price":{"amount":"0.001200","currency":"USD","mode":"fixed"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"amount":"0.001200","currency":"USD","minimumUsd":"0.001000","mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"amount":"0.001200","currency":"USD","minimumUsd":null,"mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/spotify.artist":{"post":{"description":"Fetch a Spotify artist's discography (albums, singles, top tracks) and metadata by artist URL or ID.\n\n**Price:** \\$1.20 per 1,000 requests (flat per request - same cost regardless of results returned).\n\n**Routing:** one lane serves this API today, so a failed attempt has nowhere to fail over to. Payment outcome follows the selected rail's settlement policy.\n\n**Catalog:** [Spotify Artist pricing and uptime](https://getanyapi.com/api/spotify/artist) - live USD price, lane routing, and measured 30-day uptime. [Every Spotify endpoint](https://getanyapi.com/api/spotify).","operationId":"spotify_artist","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"url":"https://open.spotify.com/artist/3DiDSECUqqY1AuBP8qtaIa"},"schema":{"additionalProperties":false,"example":{"url":"https://open.spotify.com/artist/3DiDSECUqqY1AuBP8qtaIa"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"id":{"description":"Spotify artist ID (alternative to url).","type":"string"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"url":{"description":"Spotify artist URL (e.g. https://open.spotify.com/artist/3DiDSECUqqY1AuBP8qtaIa).","type":"string"}},"title":"Spotify Artist input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"oneOf":[{"type":"null"},{"additionalProperties":false,"properties":{"albums":{"description":"Populated whenever the provider has data for the entity.","items":{"properties":{"id":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"image":{"description":"URL of the cover art image.","type":"string"},"label":{"description":"Record label that released the album.","type":"string"},"name":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"trackCount":{"type":"integer"},"type":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"uri":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"url":{"description":"Canonical Spotify web URL, tracking query parameters stripped.","type":"string"},"year":{"description":"Populated whenever the provider has data for the entity.","type":"integer","x-anyapi-must-populate":true}},"required":["id","name","type","year","trackCount","uri"],"type":"object"},"type":"array","x-anyapi-must-populate":true},"bio":{"description":"Artist biography text.","type":"string"},"followers":{"description":"Number of Spotify followers the artist has.","type":"integer"},"id":{"description":"Spotify artist ID.","type":"string"},"image":{"description":"URL of the cover art image.","type":"string"},"name":{"description":"Artist display name.","type":"string"},"popularity":{"description":"Spotify popularity score for the artist, 0 to 100.","type":"integer"},"topTracks":{"description":"Populated whenever the provider has data for the entity.","items":{"properties":{"artistName":{"description":"Name of the primary artist.","type":"string"},"durationMs":{"description":"Length of the track in milliseconds.","type":"integer"},"id":{"type":"string"},"image":{"description":"URL of the cover art image.","type":"string"},"name":{"type":"string"},"playcount":{"type":"integer"},"popularity":{"description":"Spotify popularity score for the track, 0 to 100.","type":"integer"},"uri":{"type":"string"}},"required":["id","name","playcount","uri"],"type":"object"},"type":"array","x-anyapi-must-populate":true},"url":{"description":"Canonical Spotify web URL, tracking query parameters stripped.","type":"string"},"verified":{"description":"Whether the artist profile is verified on Spotify.","type":"boolean"}},"required":["albums","topTracks"],"type":"object"}]},"found":{"type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"Spotify Artist output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"Spotify Artist","tags":["spotify"],"x-mint":{"href":"/api-reference/spotify/artist"},"x-payment-info":{"price":{"amount":"0.001200","currency":"USD","mode":"fixed"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"amount":"0.001200","currency":"USD","minimumUsd":"0.001000","mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"amount":"0.001200","currency":"USD","minimumUsd":null,"mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/spotify.play_count":{"post":{"description":"Fetch stream counts and stats for a Spotify track, album, or artist URL.\n\n**Price:** billed per result - \\$3.30 per 1,000 results, capped at \\$3.30 per 1,000 requests.\n\n**Routing:** one lane serves this API today, so a failed attempt has nowhere to fail over to. Payment outcome follows the selected rail's settlement policy.\n\n**Catalog:** [Spotify Play Count pricing and uptime](https://getanyapi.com/api/spotify/play-count) - live USD price, lane routing, and measured 30-day uptime. [Every Spotify endpoint](https://getanyapi.com/api/spotify).","operationId":"spotify_play_count","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"url":"https://open.spotify.com/track/4cOdK2wGLETKBW3PvgPWqT"},"schema":{"additionalProperties":false,"example":{"url":"https://open.spotify.com/track/4cOdK2wGLETKBW3PvgPWqT"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"url":{"description":"Spotify track, album, or artist URL to fetch stream counts for (e.g. https://open.spotify.com/track/3n3Ppam7vgaVa1iaRUc9Lp).","type":"string"}},"required":["url"],"title":"Spotify play count input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"oneOf":[{"type":"null"},{"additionalProperties":false,"properties":{"items":{"description":"Play-count records for the requested Spotify entity (one per track). Populated whenever the provider has data for the entity.","items":{"properties":{"albumName":{"description":"Name of the album the track belongs to. Empty when the upstream omits it.","type":"string"},"artistName":{"description":"Name of the primary artist. Empty when the upstream omits it.","type":"string"},"durationMs":{"description":"Track duration in milliseconds.","type":"integer"},"id":{"description":"The Spotify entity ID. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"image":{"description":"URL of the cover art image.","type":"string"},"name":{"description":"The track (or entity) name. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"playCount":{"description":"Total number of streams/plays for the track. Populated whenever the provider has data for the entity.","type":"integer","x-anyapi-must-populate":true},"previewUrl":{"description":"URL of the 30-second audio preview.","type":"string"},"releaseDate":{"description":"Release date as an ISO 8601 string.","type":"string"},"trackNumber":{"description":"Position of the track within its album.","type":"integer"},"type":{"description":"The Spotify entity type (e.g. \"track\").","type":"string"},"url":{"description":"Canonical open.spotify.com URL for the entity, with tracking query params stripped. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true}},"required":["id","name","url","playCount"],"type":"object"},"type":"array","x-anyapi-must-populate":true}},"required":["items"],"type":"object"}]},"found":{"description":"Whether the track/album/artist was found and returned play-count records.","type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"Spotify play count output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"Spotify Play Count","tags":["spotify"],"x-mint":{"href":"/api-reference/spotify/play-count"},"x-payment-info":{"price":{"currency":"USD","max":"0.003300","min":"0.000000","mode":"dynamic"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"currency":"USD","max":"0.003300","min":"0.001000","minimumUsd":"0.001000","mode":"dynamic","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"currency":"USD","max":"0.003300","min":"0.000000","minimumUsd":null,"mode":"dynamic","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/spotify.podcast":{"post":{"description":"Fetch a Spotify podcast show's name, publisher, description, rating, and topics by show URL or ID.\n\n**Price:** \\$1.20 per 1,000 requests (flat per request - same cost regardless of results returned).\n\n**Routing:** one lane serves this API today, so a failed attempt has nowhere to fail over to. Payment outcome follows the selected rail's settlement policy.\n\n**Catalog:** [Spotify Podcast pricing and uptime](https://getanyapi.com/api/spotify/podcast) - live USD price, lane routing, and measured 30-day uptime. [Every Spotify endpoint](https://getanyapi.com/api/spotify).","operationId":"spotify_podcast","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"url":"https://open.spotify.com/show/3mliji9352UAk3XnWElnDV"},"schema":{"additionalProperties":false,"example":{"url":"https://open.spotify.com/show/3mliji9352UAk3XnWElnDV"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"id":{"description":"Spotify podcast show ID (alternative to url).","type":"string"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"url":{"description":"Spotify podcast show URL (e.g. https://open.spotify.com/show/3mliji9352UAk3XnWElnDV).","type":"string"}},"title":"Spotify Podcast input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"oneOf":[{"type":"null"},{"properties":{"averageRating":{"type":"number"},"description":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"id":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"image":{"description":"URL of the cover art image.","type":"string"},"name":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"publisher":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"totalRatings":{"type":"integer"},"uri":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"url":{"description":"Canonical Spotify web URL, tracking query parameters stripped.","type":"string"}},"required":["id","name","description","publisher","averageRating","totalRatings","uri"],"type":"object"}]},"found":{"type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"Spotify Podcast output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"Spotify Podcast","tags":["spotify"],"x-mint":{"href":"/api-reference/spotify/podcast"},"x-payment-info":{"price":{"amount":"0.001200","currency":"USD","mode":"fixed"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"amount":"0.001200","currency":"USD","minimumUsd":"0.001000","mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"amount":"0.001200","currency":"USD","minimumUsd":null,"mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/spotify.podcast_episodes":{"post":{"description":"List a Spotify podcast show's episodes with titles, durations, descriptions, and release dates by show URL or ID.\n\n**Price:** \\$1.20 per 1,000 requests (flat per request - same cost regardless of results returned).\n\n**Routing:** one lane serves this API today, so a failed attempt has nowhere to fail over to. Payment outcome follows the selected rail's settlement policy.\n\n**Catalog:** [Spotify Podcast Episodes pricing and uptime](https://getanyapi.com/api/spotify/podcast-episodes) - live USD price, lane routing, and measured 30-day uptime. [Every Spotify endpoint](https://getanyapi.com/api/spotify).","operationId":"spotify_podcast_episodes","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"url":"https://open.spotify.com/show/4rOoJ6Egrf8K2IrywzwOMk"},"schema":{"additionalProperties":false,"example":{"url":"https://open.spotify.com/show/4rOoJ6Egrf8K2IrywzwOMk"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"cursor":{"description":"Pagination cursor from a previous response for subsequent pages.","type":"string"},"id":{"description":"Spotify podcast show ID (alternative to url).","type":"string"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"url":{"description":"Spotify podcast show URL (e.g. https://open.spotify.com/show/4rOoJ6Egrf8K2IrywzwOMk).","type":"string"}},"title":"Spotify Podcast Episodes input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"oneOf":[{"type":"null"},{"additionalProperties":false,"properties":{"episodes":{"description":"Populated whenever the provider has data for the entity.","items":{"properties":{"description":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"durationMs":{"type":"integer"},"id":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"name":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"releaseDate":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"uri":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true}},"required":["id","name","description","durationMs","releaseDate","uri"],"type":"object"},"type":"array","x-anyapi-must-populate":true},"nextCursor":{"description":"Opaque cursor for the next page of episodes, or null when this lane has no more. Pass it back as cursor to continue.","type":["string","null"]},"totalCount":{"type":"integer"}},"required":["nextCursor","totalCount","episodes"],"type":"object"}]},"found":{"type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"Spotify Podcast Episodes output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"Spotify Podcast Episodes","tags":["spotify"],"x-mint":{"href":"/api-reference/spotify/podcast-episodes"},"x-payment-info":{"price":{"amount":"0.001200","currency":"USD","mode":"fixed"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"amount":"0.001200","currency":"USD","minimumUsd":"0.001000","mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"amount":"0.001200","currency":"USD","minimumUsd":null,"mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/spotify.search":{"post":{"description":"Search Spotify for matching tracks, albums, artists, podcasts, and playlists by keyword.\n\n**Price:** \\$1.20 per 1,000 requests (flat per request - same cost regardless of results returned).\n\n**Routing:** one lane serves this API today, so a failed attempt has nowhere to fail over to. Payment outcome follows the selected rail's settlement policy.\n\n**Catalog:** [Spotify Search pricing and uptime](https://getanyapi.com/api/spotify/search) - live USD price, lane routing, and measured 30-day uptime. [Every Spotify endpoint](https://getanyapi.com/api/spotify).","operationId":"spotify_search","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"query":"my first million"},"schema":{"additionalProperties":false,"example":{"query":"my first million"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"query":{"description":"Search term (e.g. \"my first million\").","type":"string"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true}},"required":["query"],"title":"Spotify Search input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"oneOf":[{"type":"null"},{"additionalProperties":false,"properties":{"albums":{"description":"Populated whenever the provider has data for the entity.","items":{"properties":{"artistName":{"description":"Name of the primary artist.","type":"string"},"id":{"type":"string"},"image":{"description":"URL of the cover art image.","type":"string"},"name":{"type":"string"},"type":{"description":"Album type, for example ALBUM, SINGLE or COMPILATION.","type":"string"},"uri":{"type":"string"},"year":{"type":"integer"}},"required":["id","name","year","uri"],"type":"object"},"type":"array","x-anyapi-must-populate":true},"artists":{"description":"Populated whenever the provider has data for the entity.","items":{"properties":{"id":{"type":"string"},"name":{"type":"string"},"uri":{"type":"string"},"verified":{"type":"boolean"}},"required":["id","name","verified","uri"],"type":"object"},"type":"array","x-anyapi-must-populate":true},"podcasts":{"description":"Populated whenever the provider has data for the entity.","items":{"properties":{"id":{"type":"string"},"image":{"description":"URL of the cover art image.","type":"string"},"name":{"type":"string"},"publisher":{"type":"string"},"uri":{"description":"Spotify URI of the podcast show.","type":"string"}},"required":["id","name","publisher"],"type":"object"},"type":"array","x-anyapi-must-populate":true},"tracks":{"description":"Populated whenever the provider has data for the entity.","items":{"properties":{"albumName":{"description":"Name of the album the track appears on.","type":"string"},"id":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"image":{"description":"URL of the cover art image.","type":"string"},"name":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"uri":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true}},"required":["id","name","uri"],"type":"object"},"type":"array","x-anyapi-must-populate":true}},"required":["tracks","albums","artists","podcasts"],"type":"object"}]},"found":{"type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"Spotify Search output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"Spotify Search","tags":["spotify"],"x-mint":{"href":"/api-reference/spotify/search"},"x-payment-info":{"price":{"amount":"0.001200","currency":"USD","mode":"fixed"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"amount":"0.001200","currency":"USD","minimumUsd":"0.001000","mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"amount":"0.001200","currency":"USD","minimumUsd":null,"mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/spotify.track":{"post":{"description":"Fetch a Spotify track's play count, popularity, duration, and album details by track URL or ID.\n\n**Price:** \\$1.20 per 1,000 requests (flat per request - same cost regardless of results returned).\n\n**Routing:** one lane serves this API today, so a failed attempt has nowhere to fail over to. Payment outcome follows the selected rail's settlement policy.\n\n**Catalog:** [Spotify Track pricing and uptime](https://getanyapi.com/api/spotify/track) - live USD price, lane routing, and measured 30-day uptime. [Every Spotify endpoint](https://getanyapi.com/api/spotify).","operationId":"spotify_track","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"url":"https://open.spotify.com/track/4cOdK2wGLETKBW3PvgPWqT"},"schema":{"additionalProperties":false,"example":{"url":"https://open.spotify.com/track/4cOdK2wGLETKBW3PvgPWqT"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"id":{"description":"Spotify track ID (alternative to url).","type":"string"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"url":{"description":"Spotify track URL (e.g. https://open.spotify.com/track/4cOdK2wGLETKBW3PvgPWqT).","type":"string"}},"title":"Spotify Track input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"oneOf":[{"type":"null"},{"properties":{"albumName":{"description":"Name of the album the track appears on.","type":"string"},"artistName":{"description":"Name of the primary artist.","type":"string"},"durationMs":{"description":"Populated whenever the provider has data for the entity.","type":"integer","x-anyapi-must-populate":true},"id":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"image":{"description":"URL of the cover art image.","type":"string"},"name":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"playcount":{"type":"integer"},"popularity":{"type":"integer"},"releaseDate":{"description":"Album release date as an ISO 8601 string.","type":"string"},"shareUrl":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"trackNumber":{"description":"Populated whenever the provider has data for the entity.","type":"integer","x-anyapi-must-populate":true},"uri":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true}},"required":["id","name","playcount","popularity","durationMs","trackNumber","uri","shareUrl"],"type":"object"}]},"found":{"type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"Spotify Track output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"Spotify Track","tags":["spotify"],"x-mint":{"href":"/api-reference/spotify/track"},"x-payment-info":{"price":{"amount":"0.001200","currency":"USD","mode":"fixed"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"amount":"0.001200","currency":"USD","minimumUsd":"0.001000","mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"amount":"0.001200","currency":"USD","minimumUsd":null,"mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/substack.posts":{"post":{"description":"Pull posts from any Substack publication by its URL, or pass a single post URL (…/p/slug) to fetch just that one article. Returns title, subtitle, publish date, paywall status, word count, engagement (reactions, comments, restacks), author profile, publication details, the full article body as text, HTML and Markdown, and optional comment threads.\n\n**Price:** billed per result - \\$0.39 per 1,000 requests base + \\$0.44 per 1,000 results, capped at \\$44.40 per 1,000 requests.\n\n**Routing:** one lane serves this API today, so a failed attempt has nowhere to fail over to. Payment outcome follows the selected rail's settlement policy.\n\n**Catalog:** [Substack Posts pricing and uptime](https://getanyapi.com/api/substack/posts) - live USD price, lane routing, and measured 30-day uptime. [Every Substack endpoint](https://getanyapi.com/api/substack).","operationId":"substack_posts","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"limit":3,"url":"https://www.astralcodexten.com"},"schema":{"additionalProperties":false,"example":{"limit":3,"url":"https://www.astralcodexten.com"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"contentType":{"default":"all","description":"Restrict to a single post type, or 'all' (e.g. newsletter).","enum":["all","newsletter","podcast","thread"],"type":"string"},"endDate":{"description":"Only return posts published on or before this date, format YYYY-MM-DD (e.g. 2024-12-31). Applied within the most recent 'limit' posts scanned.","type":"string"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"includeComments":{"default":false,"description":"Include public comment threads and their direct replies on each post (e.g. true).","type":"boolean"},"includeContent":{"default":true,"description":"Include the full article body as text, HTML and Markdown. Set false for metadata only, which is faster (e.g. false).","type":"boolean"},"limit":{"description":"Maximum number of recent posts to return when given a publication URL (1-100, default 25); ignored for a single post URL, which always returns that one post. You are billed per post returned, so a lower limit costs less.","maximum":100,"minimum":1,"type":"integer"},"maxComments":{"description":"Maximum comments collected per post when 'includeComments' is true (0-500, default 20). Costs nothing extra (e.g. 50).","maximum":500,"minimum":0,"type":"integer"},"minComments":{"description":"Only return posts with at least this many comments (e.g. 10).","minimum":0,"type":"integer"},"minReactions":{"description":"Only return posts with at least this many reactions (e.g. 100).","minimum":0,"type":"integer"},"minWordCount":{"description":"Only return posts with at least this many words, which filters out short notes and announcements (e.g. 1000).","minimum":0,"type":"integer"},"onlyFree":{"default":false,"description":"Return only free (non-paywalled) posts (e.g. true).","type":"boolean"},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"startDate":{"description":"Only return posts published on or after this date, format YYYY-MM-DD (e.g. 2024-01-01). Applied within the most recent 'limit' posts scanned, so raise 'limit' to reach older date ranges.","type":"string"},"url":{"description":"Either a Substack publication URL / custom domain to fetch its recent posts (e.g. https://www.astralcodexten.com), OR a single post URL to fetch just that one article with full content (e.g. https://www.astralcodexten.com/p/your-book-review).","type":"string"}},"required":["url"],"title":"Substack posts input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"description":"Result payload, or null when nothing was found.","oneOf":[{"type":"null"},{"additionalProperties":false,"properties":{"items":{"description":"Post records: title, subtitle, URL, publish date, paywall status, word count, engagement (reactions, comments, restacks), author profile, publication details, the article body as text, HTML and Markdown, and comment threads when requested. Populated whenever the provider has data for the entity.","items":{"properties":{"authorBio":{"description":"Author bio as shown on their Substack profile.","type":"string"},"authorHandle":{"description":"Substack handle of the post author. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"authorImage":{"description":"Profile photo URL of the post author.","format":"uri","type":"string"},"authorName":{"description":"Display name of the post author. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"authorUrl":{"description":"Substack profile URL of the post author.","format":"uri","type":"string"},"commentCount":{"description":"Number of top-level comments on the post.","type":"integer"},"comments":{"description":"Top-level comment threads on the post, each with its direct replies. Empty unless 'includeComments' is true. Replies nested more than one level deep are not returned.","items":{"properties":{"authorHandle":{"description":"Substack handle of the comment author.","type":"string"},"authorImage":{"description":"Profile photo URL of the comment author.","format":"uri","type":"string"},"authorName":{"description":"Display name of the comment author.","type":"string"},"authorUrl":{"description":"Substack profile URL of the comment author.","format":"uri","type":"string"},"commentId":{"description":"Substack comment identifier.","type":"string"},"createdUtc":{"description":"UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds.","type":"number"},"editedUtc":{"description":"UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds.","type":"number"},"isAuthor":{"description":"Whether the comment was written by the post author.","type":"boolean"},"isPinned":{"description":"Whether the comment is pinned by the publication.","type":"boolean"},"reactionCount":{"description":"Number of reactions on the comment.","type":"integer"},"replies":{"description":"Direct replies to this comment.","items":{"properties":{"authorHandle":{"description":"Substack handle of the reply author.","type":"string"},"authorImage":{"description":"Profile photo URL of the reply author.","format":"uri","type":"string"},"authorName":{"description":"Display name of the reply author.","type":"string"},"authorUrl":{"description":"Substack profile URL of the reply author.","format":"uri","type":"string"},"commentId":{"description":"Substack comment identifier.","type":"string"},"createdUtc":{"description":"UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds.","type":"number"},"editedUtc":{"description":"UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds.","type":"number"},"isAuthor":{"description":"Whether the reply was written by the post author.","type":"boolean"},"isPinned":{"description":"Whether the reply is pinned by the publication.","type":"boolean"},"reactionCount":{"description":"Number of reactions on the reply.","type":"integer"},"restackCount":{"description":"Number of times the reply was restacked.","type":"integer"},"text":{"description":"Reply body text.","type":"string"}},"required":["commentId"],"type":"object"},"type":"array"},"restackCount":{"description":"Number of times the comment was restacked.","type":"integer"},"text":{"description":"Comment body text.","type":"string"}},"required":["commentId"],"type":"object"},"type":"array"},"contentStatus":{"description":"How much of the article body this record carries: 'full' for the whole article, 'preview_only' for the public excerpt of a paywalled post, 'metadata_only' when no body was requested or available, or 'failed' when extraction failed. Read this before trusting 'text', 'html', or 'markdown'. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"createdUtc":{"description":"UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds. Populated whenever the provider has data for the entity.","type":"number","x-anyapi-must-populate":true},"description":{"description":"Short post description, usually the subtitle or an excerpt.","type":"string"},"hasVoiceover":{"description":"Whether the post carries a narrated audio version.","type":"boolean"},"html":{"description":"Article body as HTML. Present when 'includeContent' is true and 'contentStatus' is 'full' or 'preview_only'.","type":"string"},"image":{"description":"Cover image URL.","format":"uri","type":"string"},"isPaid":{"description":"Whether the post is behind a paywall.","type":"boolean"},"language":{"description":"Two-letter language code of the post.","type":"string"},"markdown":{"description":"Article body as Markdown. Present when 'includeContent' is true and 'contentStatus' is 'full' or 'preview_only'.","type":"string"},"podcastUrl":{"description":"Audio URL for a podcast post or a narrated voiceover, when the post has one.","format":"uri","type":"string"},"postId":{"description":"Substack post identifier. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"postType":{"description":"Post type (newsletter, podcast, or thread). Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"publication":{"description":"The publication the post belongs to.","properties":{"customDomain":{"description":"Custom domain the publication is served on, when it has one.","type":"string"},"description":{"description":"Publication tagline or hero text.","type":"string"},"id":{"description":"Substack publication identifier.","type":"string"},"image":{"description":"Publication logo URL.","format":"uri","type":"string"},"language":{"description":"Two-letter language code of the publication.","type":"string"},"name":{"description":"Publication name.","type":"string"},"paymentsEnabled":{"description":"Whether the publication sells paid subscriptions.","type":"boolean"},"subdomain":{"description":"Publication subdomain on substack.com.","type":"string"},"subscriberCount":{"description":"Subscriber count, when the publication publishes it.","type":"integer"},"url":{"description":"Publication home URL.","format":"uri","type":"string"}},"type":"object"},"reactionCount":{"description":"Number of reactions (likes) on the post.","type":"integer"},"replyCount":{"description":"Number of replies to comments on the post.","type":"integer"},"restackCount":{"description":"Number of times the post was restacked.","type":"integer"},"slug":{"description":"Post slug, the last path segment of the post URL. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"subtitle":{"description":"Post subtitle or deck.","type":"string"},"text":{"description":"Article body as plain text. Present when 'includeContent' is true and 'contentStatus' is 'full' or 'preview_only'.","type":"string"},"title":{"description":"Post title. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"updatedUtc":{"description":"UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds.","type":"number"},"url":{"description":"Canonical post URL. Populated whenever the provider has data for the entity.","format":"uri","type":"string","x-anyapi-must-populate":true},"wordcount":{"description":"Approximate word count of the article.","type":"integer"}},"required":["title","url"],"type":"object"},"type":"array","x-anyapi-must-populate":true}},"required":["items"],"type":"object"}]},"found":{"description":"Whether any posts were found for the request.","type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"Substack posts output","type":"object","x-anyapi-heavy":true},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"Substack Posts","tags":["substack"],"x-mint":{"href":"/api-reference/substack/posts"},"x-payment-info":{"price":{"currency":"USD","max":"0.044400","min":"0.000390","mode":"dynamic"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"currency":"USD","max":"0.044400","min":"0.001000","minimumUsd":"0.001000","mode":"dynamic","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"currency":"USD","max":"0.044400","min":"0.000390","minimumUsd":null,"mode":"dynamic","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/technographics.theirstack":{"post":{"description":"Read the technology stack TheirStack detects for a company from its job posts, with how many posts mention each technology, when it was first and last seen, and how dominant it is within its category. Billed per technology returned.\n\n**Price:** billed per result - \\$199.20 per 1,000 results, capped at \\$9,960.00 per 1,000 requests.\n\n**Routing:** one lane serves this API today, so a failed attempt has nowhere to fail over to. Payment outcome follows the selected rail's settlement policy.\n\n**Catalog:** [Technographics - TheirStack pricing and uptime](https://getanyapi.com/api/technographics/theirstack) - live USD price, lane routing, and measured 30-day uptime. [Every Technographics endpoint](https://getanyapi.com/api/technographics).","operationId":"technographics_theirstack","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"companyDomain":"posthog.com","limit":1},"schema":{"additionalProperties":false,"example":{"companyDomain":"posthog.com","limit":1},"minProperties":1,"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"companyDomain":{"description":"Only return companies that match this domain exactly. It accepts full urls (https://www.google.com/) and emails (john.polo@gmail.com).","type":"string"},"companyId":{"description":"Only return companies that match this TheirStack Company ID exactly. This ID is temporary and internal and will change in the future and become stable. Until then, it is only meant to be used internally by our UI (app.theirstack.com). For deduplication logic, use company_domain or company_linkedin_url instead.","type":"string"},"companyKeywordSlugOr":{"description":"Return companies that have mentioned any of these keywords (technologies or buying intent topics) in their jobs. Case sensitive. Pass slugs. Check out all keywords at GET /v0/catalog/keywords","items":{"type":"string"},"type":"array"},"companyLinkedinUrl":{"description":"Return companies whose LinkedIn URL matches this URL exactly.","type":"string"},"companyName":{"description":"Only return companies that match this name exactly, case-sensitively.","type":"string"},"companyNameOr":{"description":"Only return companies that match these names exactly, case-sensitively. Deprecated, use the `company_name` filter instead.","items":{"type":"string"},"type":"array"},"companyTechnologySlugOr":{"description":"Return companies that have mentioned any of these keywords (technologies or buying intent topics) in their jobs. Case sensitive. Pass slugs. Check out all keywords at GET /v0/catalog/keywords","items":{"type":"string"},"type":"array"},"confidenceOr":{"description":"Returns technologies with any of these confidence values that the companies use them. Available values: \"high\", \"medium\", \"low\"","items":{"type":"string"},"type":"array"},"firstDateFoundGte":{"description":"Only return technologies where the first time they were found was after or on this date. Format: \"YYYY-MM-DD\"","type":"string"},"firstDateFoundLte":{"description":"Only return technologies where the first time they were found was before or on this date. Format: \"YYYY-MM-DD\"","type":"string"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"includeTotalResults":{"description":"When enabled, calculates and returns `total_results` and `total_companies` fields in the response. WARNING: This significantly slows down responses as it requires reading the entire dataset. Recommended usage: enable only for the initial request to get totals, then disable for subsequent pagination requests.","type":"boolean"},"keywordCategorySlugOr":{"description":"Return companies that have mentioned any keyword from any of these categories in their jobs. Case sensitive. Pass slugs. Check out all keyword categories at GET /v0/catalog/keywords/categories","items":{"type":"string"},"type":"array"},"keywordParentCategorySlugOr":{"description":"Return companies that have mentioned any keyword from any of these parent categories in their jobs. Case sensitive. Pass slugs. Check out all keyword categories at GET /v0/catalog/keywords/categories","items":{"type":"string"},"type":"array"},"keywordSlugOr":{"description":"Return companies that have mentioned any of these keywords (technologies or buying intent topics) in their jobs. Case sensitive. Pass slugs. Check out all keywords at GET /v0/catalog/keywords","items":{"type":"string"},"type":"array"},"lastDateFoundGte":{"description":"Only return technologies where the last time they were found was after or on this date. Format: \"YYYY-MM-DD\"","type":"string"},"lastDateFoundLte":{"description":"Only return technologies where the last time they were found was before or on this date. Format: \"YYYY-MM-DD\"","type":"string"},"limit":{"default":25,"description":"Rows to return on this page, up to TheirStack's maximum of 500. Every row returned is billed.","maximum":50,"minimum":1,"type":"integer"},"maxJobs":{"description":"Maximum number of jobs found by each company using a technology","type":"integer"},"maxRank":{"description":"The rank measures how common is a technology within its category. The technology most used among similar ones by a company will have a rank of 1, the second: 2, etc. This is useful to filter results by technology and get only results for the primary technology.","type":"integer"},"minJobs":{"description":"Minimum number of jobs found by each company using a technology","type":"integer"},"minRelativeOccurrence":{"description":"Minimum value of relative_occurrence_within_category for each technology. Higher values increase the probability that this technology is actually used by the company, because it means a higher percentage of mentions to technologies among this category are of this technology.","type":"number"},"offset":{"description":"Number of results to skip. Required for offset-based pagination.","type":"integer"},"orderBy":{"description":"List of column objects. You can pass several columns to order by, in order of priority. Only `field` is required, `desc` is True by default.","items":{"type":"string"},"type":"array"},"page":{"description":"Page number. Required when using page-based pagination.","type":"integer"},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"technologyCategorySlugOr":{"description":"Deprecated: use `keyword_category_slug_or` instead. Will return companies that have mentioned any keyword from any of these categories in their jobs. Case sensitive. Pass slugs.","items":{"type":"string"},"type":"array"},"technologyParentCategorySlugOr":{"description":"Deprecated: use `keyword_parent_category_slug_or` instead. Will return companies that have mentioned any keyword from any of these parent categories in their jobs. Case sensitive. Pass slugs.","items":{"type":"string"},"type":"array"},"technologySlugOr":{"description":"Deprecated: use `keyword_slug_or` instead. Will return companies that have mentioned any of these technologies in their jobs. Case sensitive. Pass slugs.","items":{"type":"string"},"type":"array"}},"title":"Technographics - TheirStack input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"description":"The matching rows plus TheirStack's result counters.","oneOf":[{"type":"null"},{"additionalProperties":false,"properties":{"technologies":{"description":"Technologies detected for the company, most prominent first.","items":{"properties":{"confidence":{"description":"How sure TheirStack is that the company uses it: high, medium or low.","type":"string"},"firstFoundUtc":{"description":"UTC epoch timestamp in seconds (Unix time) the technology was first seen. Multiply by 1000 for a JS Date in milliseconds.","type":"number"},"jobs":{"description":"Job posts mentioning the technology, all time.","type":"integer"},"jobsLast180Days":{"description":"Job posts mentioning it in the last 180 days.","type":"integer"},"jobsLast30Days":{"description":"Job posts mentioning it in the last 30 days.","type":"integer"},"jobsLast7Days":{"description":"Job posts mentioning it in the last 7 days.","type":"integer"},"lastFoundUtc":{"description":"UTC epoch timestamp in seconds (Unix time) the technology was last seen. Multiply by 1000 for a JS Date in milliseconds.","type":"number"},"rankWithinCategory":{"description":"Rank of this technology among the company's technologies in the same category, 1 being the most used.","type":"integer"},"relativeOccurrenceWithinCategory":{"description":"Share of the company's mentions within this category that are of this technology, 0 to 1. A higher value means the company more likely really uses it.","type":"number"},"technology":{"description":"The technology itself.","properties":{"category":{"description":"Category the technology sits in, e.g. Languages.","type":"string"},"categorySlug":{"description":"Slug for that category.","type":"string"},"image":{"description":"Technology logo URL.","format":"uri","type":"string"},"name":{"description":"Technology name, e.g. Python.","type":"string"},"parentCategory":{"description":"Parent category, e.g. Programming Languages And Frameworks.","type":"string"},"parentCategorySlug":{"description":"Slug for that parent category.","type":"string"},"slug":{"description":"Technology slug. This is the value the technology filters take.","type":"string"},"thumbnail":{"description":"Smaller technology logo URL.","format":"uri","type":"string"},"type":{"description":"Whether the row is a technology or a buying-intent keyword.","type":"string"}},"type":"object"}},"required":["confidence"],"type":"object"},"type":"array"},"totalCompanies":{"description":"Distinct companies matching the filters. TheirStack computes it only when you send includeTotalResults.","type":"integer"},"totalResults":{"description":"Rows matching the filters across all pages. TheirStack computes it only when you send includeTotalResults, and omits it otherwise.","type":"integer"},"truncatedCompanies":{"description":"Companies TheirStack withheld because the plan's result ceiling was reached.","type":"integer"},"truncatedResults":{"description":"Rows TheirStack withheld because the plan's result ceiling was reached.","type":"integer"}},"required":["technologies"],"type":"object"}]},"found":{"description":"False when nothing matched the filters.","type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"Technographics - TheirStack output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"Technographics - TheirStack","tags":["technographics"],"x-mint":{"href":"/api-reference/technographics/theirstack"},"x-payment-info":{"price":{"currency":"USD","max":"9.960000","min":"0.000000","mode":"dynamic"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"currency":"USD","max":"9.960000","min":"0.001000","minimumUsd":"0.001000","mode":"dynamic","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"currency":"USD","max":"9.960000","min":"0.000000","minimumUsd":null,"mode":"dynamic","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/threads.post":{"post":{"description":"Fetch a single Threads post by URL: text, author, engagement counts, and timestamp.\n\n**Price:** \\$1.20 per 1,000 requests (flat per request - same cost regardless of results returned).\n\n**Routing:** 2 independent lanes are available in execution order. A failed attempt uses the next lane only when the request's payment authorizes that lane's price; the normalized schema stays the same.\n\n**Catalog:** [Threads Post pricing and uptime](https://getanyapi.com/api/threads/post) - live USD price, lane routing, and measured 30-day uptime. [Every Threads endpoint](https://getanyapi.com/api/threads).","operationId":"threads_post","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"url":"https://www.threads.com/@aaronparnas/post/DZxPYVFkYSq"},"schema":{"additionalProperties":false,"example":{"url":"https://www.threads.com/@aaronparnas/post/DZxPYVFkYSq"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"url":{"description":"The full URL of the Threads post to fetch (e.g. https://www.threads.com/@zuck/post/C8yKXdRxKqK).","type":"string"}},"required":["url"],"title":"Threads post input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"description":"The post record, or null when nothing was found.","oneOf":[{"type":"null"},{"properties":{"code":{"description":"Threads post shortcode.","type":"string"},"createdUtc":{"description":"UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds.","type":"number"},"fullName":{"description":"Display name of the author. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"id":{"description":"Post identifier. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"isVerified":{"description":"True when the author's account carries a verified badge.","type":"boolean"},"likeCount":{"description":"Number of likes on the post.","type":"integer"},"profilePicUrl":{"description":"Profile picture URL of the author.","type":"string"},"quoteCount":{"description":"Number of quote posts.","type":"integer"},"replyCount":{"description":"Number of replies to the post.","type":"integer"},"repostCount":{"description":"Number of reposts of the post.","type":"integer"},"text":{"description":"Post text content. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"url":{"description":"Canonical URL of the post.","type":"string"},"username":{"description":"Username of the author. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true}},"required":["id","code","text","username","fullName","likeCount","replyCount","repostCount","quoteCount","createdUtc"],"type":"object"}]},"found":{"description":"True when the post was found; false when the lookup returned nothing.","type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"Threads post output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"Threads Post","tags":["threads"],"x-mint":{"href":"/api-reference/threads/post"},"x-payment-info":{"price":{"amount":"0.001200","currency":"USD","mode":"fixed"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"amount":"0.001200","currency":"USD","minimumUsd":"0.001000","mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"amount":"0.001200","currency":"USD","minimumUsd":null,"mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/threads.profile":{"post":{"description":"Fetch a Threads user's public profile (bio, follower count, verification, profile picture) by username.\n\n**Price:** \\$1.20 per 1,000 requests (flat per request - same cost regardless of results returned).\n\n**Routing:** 2 independent lanes are available in execution order. A failed attempt uses the next lane only when the request's payment authorizes that lane's price; the normalized schema stays the same.\n\n**Catalog:** [Threads Profile pricing and uptime](https://getanyapi.com/api/threads/profile) - live USD price, lane routing, and measured 30-day uptime. [Every Threads endpoint](https://getanyapi.com/api/threads).","operationId":"threads_profile","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"username":"zuck"},"schema":{"additionalProperties":false,"example":{"username":"zuck"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"username":{"description":"The Threads username to look up, without the @ prefix (e.g. zuck).","type":"string"}},"required":["username"],"title":"Threads profile input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"oneOf":[{"type":"null"},{"properties":{"biography":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"followerCount":{"type":"integer"},"fullName":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"id":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"isPrivate":{"type":"boolean"},"isVerified":{"type":"boolean"},"profilePicUrl":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"username":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true}},"required":["id","username","fullName","biography","followerCount","isVerified","isPrivate","profilePicUrl"],"type":"object"}]},"found":{"type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"Threads profile output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"Threads Profile","tags":["threads"],"x-mint":{"href":"/api-reference/threads/profile"},"x-payment-info":{"price":{"amount":"0.001200","currency":"USD","mode":"fixed"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"amount":"0.001200","currency":"USD","minimumUsd":"0.001000","mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"amount":"0.001200","currency":"USD","minimumUsd":null,"mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/threads.search":{"post":{"description":"Search public Threads posts by keyword or hashtag and get normalized post records: text, author, and engagement.\n\n**Price:** \\$1.20 per 1,000 requests (flat per request - same cost regardless of results returned).\n\n**Routing:** 2 independent lanes are available in execution order. A failed attempt uses the next lane only when the request's payment authorizes that lane's price; the normalized schema stays the same.\n\n**Catalog:** [Threads Search pricing and uptime](https://getanyapi.com/api/threads/search) - live USD price, lane routing, and measured 30-day uptime. [Every Threads endpoint](https://getanyapi.com/api/threads).","operationId":"threads_search","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"query":"trump"},"schema":{"additionalProperties":false,"example":{"query":"trump"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"endDate":{"description":"Only return posts published on or before this date, format YYYY-MM-DD (e.g. 2026-08-07). Threads pages backwards in time from here, so narrowing this is how you walk older results.","type":"string"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"query":{"description":"Keyword or hashtag to search public Threads posts for; the # prefix is optional (e.g. AI agents). Threads matches text in posts, so search a brand or topic rather than a URL - a query that is only a domain is searched by its name (wander.com is searched as wander).","type":"string"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"startDate":{"description":"Only return posts published on or after this date, format YYYY-MM-DD (e.g. 2026-08-01).","type":"string"}},"required":["query"],"title":"Threads search input","type":"object","x-anyapi-input-normalizers":{"query":"bare_domain_to_label"}}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"description":"Wrapper holding the posts array. Present whenever the search ran, with an empty array when nothing matched; null only when the search could not run.","oneOf":[{"type":"null"},{"additionalProperties":false,"properties":{"posts":{"description":"Matching public post records: text, author, engagement counts, timestamp, and URL. Populated whenever the provider has data for the entity.","items":{"properties":{"code":{"description":"Threads post shortcode.","type":"string"},"createdUtc":{"description":"UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds.","type":"number"},"fullName":{"description":"Display name of the author. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"id":{"description":"Post identifier. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"isVerified":{"description":"True when the author's account carries a verified badge.","type":"boolean"},"likeCount":{"description":"Number of likes on the post.","type":"integer"},"profilePicUrl":{"description":"Profile picture URL of the author.","type":"string"},"quoteCount":{"description":"Number of quote posts.","type":"integer"},"replyCount":{"description":"Number of replies to the post.","type":"integer"},"repostCount":{"description":"Number of reposts of the post.","type":"integer"},"text":{"description":"Post text content. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"url":{"description":"Canonical URL of the post. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"username":{"description":"Username of the author. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true}},"required":["id","code","text","username","fullName","likeCount","replyCount","repostCount","createdUtc","url"],"type":"object"},"type":"array","x-anyapi-must-populate":true}},"required":["posts"],"type":"object"}]},"found":{"description":"True when the search ran. An empty \"posts\" array means the search completed and nothing matched, which is an answer rather than a failure; false is reserved for a search the upstream could not run.","type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"Threads search output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"Threads Search","tags":["threads"],"x-mint":{"href":"/api-reference/threads/search"},"x-payment-info":{"price":{"amount":"0.001200","currency":"USD","mode":"fixed"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"amount":"0.001200","currency":"USD","minimumUsd":"0.001000","mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"amount":"0.001200","currency":"USD","minimumUsd":null,"mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/threads.search_users":{"post":{"description":"Search Threads users by name or username and get normalized profile records: username, full name, verification, and picture.\n\n**Price:** \\$1.20 per 1,000 requests (flat per request - same cost regardless of results returned).\n\n**Routing:** 2 independent lanes are available in execution order. A failed attempt uses the next lane only when the request's payment authorizes that lane's price; the normalized schema stays the same.\n\n**Catalog:** [Threads User Search pricing and uptime](https://getanyapi.com/api/threads/search-users) - live USD price, lane routing, and measured 30-day uptime. [Every Threads endpoint](https://getanyapi.com/api/threads).","operationId":"threads_search_users","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"query":"shams"},"schema":{"additionalProperties":false,"example":{"query":"shams"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"query":{"description":"The name or username to search Threads users for.","type":"string"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true}},"required":["query"],"title":"Threads User Search input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"oneOf":[{"type":"null"},{"additionalProperties":false,"properties":{"users":{"description":"Populated whenever the provider has data for the entity.","items":{"properties":{"fullName":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"id":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"isVerified":{"type":"boolean"},"profilePicUrl":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"username":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true}},"required":["id","username","fullName","isVerified","profilePicUrl"],"type":"object"},"type":"array","x-anyapi-must-populate":true}},"required":["users"],"type":"object"}]},"found":{"type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"Threads User Search output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"Threads User Search","tags":["threads"],"x-mint":{"href":"/api-reference/threads/search-users"},"x-payment-info":{"price":{"amount":"0.001200","currency":"USD","mode":"fixed"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"amount":"0.001200","currency":"USD","minimumUsd":"0.001000","mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"amount":"0.001200","currency":"USD","minimumUsd":null,"mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/threads.user_posts":{"post":{"description":"List a Threads user's recent public posts by username: text, engagement counts, and post URLs.\n\n**Price:** \\$1.20 per 1,000 requests (flat per request - same cost regardless of results returned).\n\n**Routing:** 2 independent lanes are available in execution order. A failed attempt uses the next lane only when the request's payment authorizes that lane's price; the normalized schema stays the same.\n\n**Catalog:** [Threads User Posts pricing and uptime](https://getanyapi.com/api/threads/user-posts) - live USD price, lane routing, and measured 30-day uptime. [Every Threads endpoint](https://getanyapi.com/api/threads).","operationId":"threads_user_posts","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"handle":"trendspider"},"schema":{"additionalProperties":false,"example":{"handle":"trendspider"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"handle":{"description":"The Threads username to list posts for, without the @ prefix.","type":"string"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true}},"required":["handle"],"title":"Threads User Posts input","type":"object","x-aliases":{"username":"handle"}}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"description":"Wrapper holding the posts array, or null when nothing was found.","oneOf":[{"type":"null"},{"additionalProperties":false,"properties":{"posts":{"description":"The user's recent posts. Populated whenever the provider has data for the entity.","items":{"properties":{"code":{"description":"Threads post shortcode.","type":"string"},"createdUtc":{"description":"UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds.","type":"number"},"id":{"description":"Post identifier. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"isVerified":{"description":"True when the author's account carries a verified badge.","type":"boolean"},"likeCount":{"description":"Number of likes on the post.","type":"integer"},"profilePicUrl":{"description":"Profile picture URL of the author.","type":"string"},"quoteCount":{"description":"Number of quote posts.","type":"integer"},"replyCount":{"description":"Number of replies to the post.","type":"integer"},"repostCount":{"description":"Number of reposts of the post.","type":"integer"},"text":{"description":"Post text content. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"url":{"description":"Canonical URL of the post. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"username":{"description":"Username of the author. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true}},"required":["id","code","url","text","username","likeCount","replyCount","repostCount","quoteCount","createdUtc"],"type":"object"},"type":"array","x-anyapi-must-populate":true}},"required":["posts"],"type":"object"}]},"found":{"description":"True when the user's posts were found; false when the lookup returned nothing.","type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"Threads User Posts output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"Threads User Posts","tags":["threads"],"x-mint":{"href":"/api-reference/threads/user-posts"},"x-payment-info":{"price":{"amount":"0.001200","currency":"USD","mode":"fixed"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"amount":"0.001200","currency":"USD","minimumUsd":"0.001000","mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"amount":"0.001200","currency":"USD","minimumUsd":null,"mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/tiktok.ad_library_ad":{"post":{"description":"Fetch full details for a single TikTok ad (brand, title, spend, CTR, objectives, landing page, and video info).\n\n**Price:** \\$1.20 per 1,000 requests (flat per request - same cost regardless of results returned).\n\n**Routing:** 2 independent lanes are available in execution order. A failed attempt uses the next lane only when the request's payment authorizes that lane's price; the normalized schema stays the same.\n\n**Catalog:** [TikTok Ad Library Ad pricing and uptime](https://getanyapi.com/api/tiktok/ad-library-ad) - live USD price, lane routing, and measured 30-day uptime. [Every TikTok endpoint](https://getanyapi.com/api/tiktok).","operationId":"tiktok_ad_library_ad","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"adId":"7648493525660270600"},"schema":{"additionalProperties":false,"example":{"adId":"7648493525660270600"},"properties":{"adId":{"description":"TikTok Top Ads material/ad ID, or a Top Ads detail URL (e.g. 7648493525660270600).","type":"string"},"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true}},"required":["adId"],"title":"TikTok Ad Library Ad input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"oneOf":[{"type":"null"},{"properties":{"adId":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"adTitle":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"brandName":{"type":"string"},"comments":{"type":"integer"},"cost":{"type":"number"},"coverUrl":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"ctr":{"type":"number"},"durationSeconds":{"description":"Ad creative duration in seconds.","type":"number"},"height":{"description":"Pixel height of the ad video.","type":"integer"},"industry":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"landingPage":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"likes":{"type":"integer"},"objective":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"shares":{"type":"integer"},"videoUrl":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"width":{"description":"Pixel width of the ad video.","type":"integer"}},"required":["adId","adTitle","brandName","cost","ctr","likes","comments","shares","industry","objective","landingPage","videoUrl","coverUrl"],"type":"object"}]},"found":{"type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"TikTok Ad Library Ad output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"TikTok Ad Library Ad","tags":["tiktok"],"x-mint":{"href":"/api-reference/tiktok/ad-library-ad"},"x-payment-info":{"price":{"amount":"0.001200","currency":"USD","mode":"fixed"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"amount":"0.001200","currency":"USD","minimumUsd":"0.001000","mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"amount":"0.001200","currency":"USD","minimumUsd":null,"mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/tiktok.ad_library_search":{"post":{"description":"Search TikTok's public Ads Library by keyword or advertiser (advertiser, title, audience band, run dates, library link, and video).\n\n**Price:** \\$0.50 per 1,000 requests (flat per request - same cost regardless of results returned).\n\n**Routing:** 2 independent lanes are available in execution order. A failed attempt uses the next lane only when the request's payment authorizes that lane's price; the normalized schema stays the same.\n\n**Catalog:** [TikTok Ad Library Search pricing and uptime](https://getanyapi.com/api/tiktok/ad-library-search) - live USD price, lane routing, and measured 30-day uptime. [Every TikTok endpoint](https://getanyapi.com/api/tiktok).","operationId":"tiktok_ad_library_search","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"query":"spotify"},"schema":{"additionalProperties":false,"example":{"query":"spotify"},"oneOf":[{"not":{"required":["advertiserName"]},"required":["query"]},{"not":{"required":["query"]},"required":["advertiserName"]}],"properties":{"advertiserName":{"description":"Advertiser name to list ads for (e.g. Spotify). Provide advertiserName or query, never both.","minLength":1,"pattern":"\\S","type":"string"},"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"cursor":{"description":"Opaque cursor from a previous response's nextCursor. Omit it for the first page.","type":"string"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"query":{"description":"Keyword to search ad titles and content (e.g. spotify). Provide query or advertiserName, never both.","minLength":1,"pattern":"\\S","type":"string"},"region":{"description":"Two-letter region code for TikTok's Commercial Content Library, such as DE, FR, GB or IT. Each region holds a different set of ads. Omit it to take the library's own default region, DE. Coverage is the EU and EEA; a non-EU code such as US is not served.","minLength":1,"type":"string"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true}},"title":"TikTok Ad Library Search input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"oneOf":[{"type":"null"},{"additionalProperties":false,"properties":{"ads":{"description":"Populated whenever the provider has data for the entity.","items":{"properties":{"adId":{"description":"TikTok ad id. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"adTitle":{"description":"Ad title as shown in TikTok's ad library. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"brandName":{"description":"Advertiser name on the ad.","type":"string"},"coverUrl":{"description":"Cover image URL of the ad's first video. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"estimatedAudience":{"description":"Audience size band TikTok publishes for the ad, for example \"100K-200K\".","type":"string"},"firstShownUtc":{"description":"UTC epoch timestamp in seconds (Unix time) when TikTok first showed the ad. Multiply by 1000 for a JS Date in milliseconds.","type":"integer"},"format":{"description":"TikTok's creative format code for the ad, as the ad library reports it.","type":"string"},"lastShownUtc":{"description":"UTC epoch timestamp in seconds (Unix time) when TikTok last showed the ad. Multiply by 1000 for a JS Date in milliseconds.","type":"integer"},"status":{"description":"TikTok's audit status code for the ad, as the ad library reports it.","type":"string"},"url":{"description":"Link to the ad's detail page in TikTok's public Ads Library.","type":"string"},"videoUrl":{"description":"Playable URL of the ad's first video. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true}},"required":["adId","adTitle","brandName","estimatedAudience","videoUrl","coverUrl"],"type":"object"},"type":"array","x-anyapi-must-populate":true},"hasMore":{"type":"boolean"},"nextCursor":{"description":"Opaque cursor for the next page of ads, or null when this lane has no more. Pass it back as cursor to continue.","type":["string","null"]},"total":{"type":"integer"}},"required":["nextCursor","hasMore","total","ads"],"type":"object"}]},"found":{"type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"TikTok Ad Library Search output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"TikTok Ad Library Search","tags":["tiktok"],"x-mint":{"href":"/api-reference/tiktok/ad-library-search"},"x-payment-info":{"price":{"amount":"0.000500","currency":"USD","mode":"fixed"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"amount":"0.001000","currency":"USD","minimumUsd":"0.001000","mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"amount":"0.000500","currency":"USD","minimumUsd":null,"mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/tiktok.ad_transparency_search":{"post":{"description":"Search TikTok's EU Commercial Content Library by keyword or advertiser ID.\n\n**Price:** \\$0.50 per 1,000 requests (flat per request - same cost regardless of results returned).\n\n**Routing:** one lane serves this API today, so a failed attempt has nowhere to fail over to. Payment outcome follows the selected rail's settlement policy.\n\n**Catalog:** [TikTok Ad Transparency Search pricing and uptime](https://getanyapi.com/api/tiktok/ad-transparency-search) - live USD price, lane routing, and measured 30-day uptime. [Every TikTok endpoint](https://getanyapi.com/api/tiktok).","operationId":"tiktok_ad_transparency_search","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"days":30,"limit":20,"query":"nike","region":"DE"},"schema":{"additionalProperties":false,"anyOf":[{"required":["query"]},{"required":["advertiserId"]}],"example":{"days":30,"limit":20,"query":"nike","region":"DE"},"properties":{"advertiserId":{"description":"TikTok Commercial Content Library advertiser ID. Provide advertiserId or query.","minLength":1,"type":"string"},"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"cursor":{"description":"Search cursor from a previous response's nextCursor.","type":"string"},"days":{"default":30,"description":"Number of days of Commercial Content Library history to search, from 1 to 365. Defaults to 30.","maximum":365,"minimum":1,"type":"integer"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"limit":{"default":20,"description":"Maximum number of ads to return, from 1 to 50. Defaults to 20. Billing is flat per request.","maximum":50,"minimum":1,"type":"integer"},"offset":{"default":0,"description":"Zero-based result offset. Defaults to 0.","minimum":0,"type":"integer"},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"query":{"description":"Keyword to search in TikTok's EU Commercial Content Library. Provide query or advertiserId.","minLength":1,"type":"string"},"region":{"default":"DE","description":"Region code for the transparency search. Defaults to DE.","type":"string"},"sort":{"default":"last_shown_date,desc","description":"Upstream sort expression. Defaults to last_shown_date,desc.","type":"string"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true}},"title":"TikTok Ad Transparency Search input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"description":"Ad transparency search results and pagination, or null when no ads were found.","oneOf":[{"type":"null"},{"additionalProperties":false,"properties":{"ads":{"description":"Commercial Content Library ad records returned for the search. Populated whenever the provider has data for the entity.","items":{"properties":{"adTitle":{"description":"Ad title as shown in TikTok's ad library.","type":"string"},"advertiserName":{"description":"Advertiser display name associated with the ad. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"estimatedAudience":{"description":"Estimated audience size band the ad reached, as a range string.","type":"string"},"firstShownUtc":{"description":"UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds. When the ad was first shown. Populated whenever the provider has data for the entity.","type":"number","x-anyapi-must-populate":true},"format":{"description":"Commercial Content Library creative format code for the ad. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"id":{"description":"TikTok Commercial Content Library ad identifier. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"image":{"description":"Signed cover image URL exactly as returned by the Commercial Content Library. Populated whenever the provider has data for the entity.","format":"uri","type":"string","x-anyapi-must-populate":true},"lastShownUtc":{"description":"UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds. When the ad was last shown. Populated whenever the provider has data for the entity.","type":"number","x-anyapi-must-populate":true},"status":{"description":"Commercial Content Library audit status code for the ad. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"videoUrl":{"description":"Signed video asset URL exactly as returned by the Commercial Content Library. Populated whenever the provider has data for the entity.","format":"uri","type":"string","x-anyapi-must-populate":true}},"required":["id"],"type":"object"},"type":"array","x-anyapi-must-populate":true},"hasMore":{"description":"Whether the Commercial Content Library reports more matching ads. Populated whenever the provider has data for the entity.","type":"boolean","x-anyapi-must-populate":true},"nextCursor":{"description":"Search cursor to pass as cursor on a subsequent request, or null when there is no next page. Populated whenever the provider has data for the entity.","type":["string","null"],"x-anyapi-must-populate":true},"offset":{"description":"Zero-based result offset reported for this page.","type":"integer"},"region":{"description":"Region code applied to this transparency search. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"total":{"description":"Total number of matching ads reported by the Commercial Content Library. Populated whenever the provider has data for the entity.","type":"integer","x-anyapi-must-populate":true}},"required":["nextCursor","hasMore","total","offset","region","ads"],"type":"object"}]},"found":{"description":"True when TikTok's EU Commercial Content Library returned at least one ad.","type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"TikTok Ad Transparency Search output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"TikTok Ad Transparency Search","tags":["tiktok"],"x-mint":{"href":"/api-reference/tiktok/ad-transparency-search"},"x-payment-info":{"price":{"amount":"0.000500","currency":"USD","mode":"fixed"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"amount":"0.001000","currency":"USD","minimumUsd":"0.001000","mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"amount":"0.000500","currency":"USD","minimumUsd":null,"mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/tiktok.audience_demographics":{"post":{"description":"Get the audience country breakdown (follower count and share per country) for a TikTok creator by handle.\n\n**Price:** \\$18.00 per 1,000 requests (flat per request - same cost regardless of results returned).\n\n**Routing:** 2 independent lanes are available in execution order. A failed attempt uses the next lane only when the request's payment authorizes that lane's price; the normalized schema stays the same.\n\n**Catalog:** [TikTok Audience Demographics pricing and uptime](https://getanyapi.com/api/tiktok/audience-demographics) - live USD price, lane routing, and measured 30-day uptime. [Every TikTok endpoint](https://getanyapi.com/api/tiktok).","operationId":"tiktok_audience_demographics","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"handle":"shakira"},"schema":{"additionalProperties":false,"example":{"handle":"shakira"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"handle":{"description":"TikTok username without the leading @ (e.g. \"shakira\").","type":"string"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true}},"required":["handle"],"title":"TikTok Audience Demographics input","type":"object","x-aliases":{"username":"handle"}}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"oneOf":[{"type":"null"},{"additionalProperties":false,"properties":{"audienceLocations":{"items":{"properties":{"count":{"type":"integer"},"country":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"countryCode":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"percentage":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true}},"required":["country","countryCode","count","percentage"],"type":"object"},"type":"array"}},"required":["audienceLocations"],"type":"object"}]},"found":{"type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"TikTok Audience Demographics output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"TikTok Audience Demographics","tags":["tiktok"],"x-mint":{"href":"/api-reference/tiktok/audience-demographics"},"x-payment-info":{"price":{"amount":"0.018000","currency":"USD","mode":"fixed"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"amount":"0.018000","currency":"USD","minimumUsd":"0.001000","mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"amount":"0.018000","currency":"USD","minimumUsd":null,"mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/tiktok.comment_replies":{"post":{"description":"List the replies to a TikTok comment with cursor pagination (text, author, likes).\n\n**Price:** \\$0.90 per 1,000 requests (flat per request - same cost regardless of results returned).\n\n**Routing:** 3 independent lanes are available in execution order. A failed attempt uses the next lane only when the request's payment authorizes that lane's price; the normalized schema stays the same.\n\n**Catalog:** [TikTok Comment Replies pricing and uptime](https://getanyapi.com/api/tiktok/comment-replies) - live USD price, lane routing, and measured 30-day uptime. [Every TikTok endpoint](https://getanyapi.com/api/tiktok).","operationId":"tiktok_comment_replies","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"commentId":"7623828115408274207","url":"https://www.tiktok.com/@stoolpresidente/video/7623818255903329566"},"schema":{"additionalProperties":false,"example":{"commentId":"7623828115408274207","url":"https://www.tiktok.com/@stoolpresidente/video/7623818255903329566"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"commentId":{"description":"TikTok comment ID (the comment's cid from the comments endpoint).","type":"string"},"cursor":{"description":"Pagination cursor from a previous response.","type":"string"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"url":{"description":"TikTok video URL the comment belongs to.","type":"string"}},"required":["commentId","url"],"title":"TikTok Comment Replies input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"oneOf":[{"type":"null"},{"additionalProperties":false,"properties":{"comments":{"items":{"properties":{"author":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"authorImage":{"description":"Reply author's avatar image URL. Signed and short-lived, so the query string is load-bearing and kept intact.","type":"string"},"authorName":{"description":"Reply author's display name.","type":"string"},"createdUtc":{"description":"UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds.","type":"number"},"id":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"likes":{"type":"integer"},"text":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"videoId":{"description":"Identifier of the video the reply belongs to.","type":"string"}},"required":["id","text","author","likes","createdUtc"],"type":"object"},"type":"array"},"nextCursor":{"description":"Opaque cursor for the next page of comments, or null when this lane has no more. Pass it back as cursor to continue.","type":["string","null"]}},"required":["comments","nextCursor"],"type":"object"}]},"found":{"type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"TikTok Comment Replies output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"TikTok Comment Replies","tags":["tiktok"],"x-mint":{"href":"/api-reference/tiktok/comment-replies"},"x-payment-info":{"price":{"amount":"0.000900","currency":"USD","mode":"fixed"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"amount":"0.001000","currency":"USD","minimumUsd":"0.001000","mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"amount":"0.000900","currency":"USD","minimumUsd":null,"mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/tiktok.followers":{"post":{"description":"List the followers of a TikTok account by username, returning each follower's profile basics.\n\n**Price:** \\$1.20 per 1,000 requests (flat per request - same cost regardless of results returned).\n\n**Routing:** 2 independent lanes are available in execution order. A failed attempt uses the next lane only when the request's payment authorizes that lane's price; the normalized schema stays the same.\n\n**Catalog:** [TikTok Followers pricing and uptime](https://getanyapi.com/api/tiktok/followers) - live USD price, lane routing, and measured 30-day uptime. [Every TikTok endpoint](https://getanyapi.com/api/tiktok).","operationId":"tiktok_followers","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"handle":"stoolpresidente"},"schema":{"additionalProperties":false,"example":{"handle":"stoolpresidente"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"cursor":{"description":"Pagination cursor from a previous response's nextCursor, to fetch the next page of followers.","type":"string"},"handle":{"description":"TikTok username whose followers to list, without the @ prefix (e.g. stoolpresidente).","type":"string"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true}},"required":["handle"],"title":"TikTok Followers input","type":"object","x-aliases":{"username":"handle"}}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"oneOf":[{"type":"null"},{"additionalProperties":false,"properties":{"followers":{"items":{"properties":{"avatarUrl":{"type":"string"},"bio":{"description":"Account bio text.","type":"string"},"createdUtc":{"description":"UTC epoch timestamp in seconds (Unix time) the account was created. Multiply by 1000 for a JS Date in milliseconds.","type":"number"},"followerCount":{"type":"integer"},"followingCount":{"type":"integer"},"nickname":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"region":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"userId":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"username":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true}},"required":["userId","username","nickname","region","followerCount","followingCount","avatarUrl"],"type":"object"},"type":"array"},"nextCursor":{"description":"Opaque cursor for the next page of followers, or null when this lane has no more. Pass it back as cursor to continue.","type":["string","null"]},"total":{"type":"integer"}},"required":["nextCursor","total","followers"],"type":"object"}]},"found":{"type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"TikTok Followers output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"TikTok Followers","tags":["tiktok"],"x-mint":{"href":"/api-reference/tiktok/followers"},"x-payment-info":{"price":{"amount":"0.001200","currency":"USD","mode":"fixed"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"amount":"0.001200","currency":"USD","minimumUsd":"0.001000","mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"amount":"0.001200","currency":"USD","minimumUsd":null,"mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/tiktok.following":{"post":{"description":"List the accounts a TikTok user follows (handle, display name, follower count, bio) by username.\n\n**Price:** \\$1.20 per 1,000 requests (flat per request - same cost regardless of results returned).\n\n**Routing:** 2 independent lanes are available in execution order. A failed attempt uses the next lane only when the request's payment authorizes that lane's price; the normalized schema stays the same.\n\n**Catalog:** [TikTok Following pricing and uptime](https://getanyapi.com/api/tiktok/following) - live USD price, lane routing, and measured 30-day uptime. [Every TikTok endpoint](https://getanyapi.com/api/tiktok).","operationId":"tiktok_following","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"handle":"stoolpresidente"},"schema":{"additionalProperties":false,"example":{"handle":"stoolpresidente"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"cursor":{"description":"Pagination cursor from a previous response.","type":"string"},"handle":{"description":"TikTok username without the leading @ (e.g. \"stoolpresidente\").","type":"string"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"requireCursor":{"deprecated":true,"description":"Deprecated; send `requireFields: [\"nextCursor\"]` instead, which does exactly the same thing. Set true if you intend to page through results, so the request is only served by a source that can return a nextCursor. Omit it and routing is unchanged, with the cheapest source serving. This can raise your price: when the cheapest source cannot page, a source that can serves, and you are quoted and charged its price. It stays accepted so callers that already send it keep working.","type":"boolean"},"requireFields":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Name the output fields this request must be able to return, for example `nextCursor`, and it is served only by a source that returns every one of them. Fields you do not name are still returned whenever the serving source has them. This can raise your price: when the cheapest source cannot return a named field, a dearer source serves, and you are quoted and charged its price. A named field can still be absent on a profile that genuinely lacks it. Naming a combination that no single source returns together is refused as invalid input, with no charge. On a paginated walk it applies to the first page only; later pages stay with the source that page chose, at the price it was quoted.","items":{"enum":["avatarUrl","bio","createdUtc","followers","following","likes","nextCursor","private","videos"],"type":"string"},"type":"array","uniqueItems":true},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true}},"required":["handle"],"title":"TikTok Following input","type":"object","x-aliases":{"username":"handle"}}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"oneOf":[{"type":"null"},{"additionalProperties":false,"properties":{"following":{"items":{"properties":{"avatarUrl":{"description":"Account avatar image URL. Signed and short-lived, so the query string is load-bearing and kept intact.","type":"string"},"bio":{"type":"string"},"createdUtc":{"description":"UTC epoch timestamp in seconds (Unix time) the account was created. Multiply by 1000 for a JS Date in milliseconds.","type":"number"},"displayName":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"followers":{"type":"integer"},"following":{"description":"Number of accounts this account follows.","type":"integer"},"handle":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"id":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"likes":{"description":"Total likes the account has received.","type":"integer"},"private":{"description":"Whether the account is private.","type":"boolean"},"region":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"videos":{"type":"integer"}},"required":["id","handle","displayName","followers","videos","region","bio"],"type":"object"},"type":"array"},"nextCursor":{"description":"Opaque cursor for the next page of followed accounts, or null when this lane has no more. Pass it back as cursor to continue.","type":["string","null"]}},"required":["following"],"type":"object"}]},"found":{"type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"TikTok Following output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"TikTok Following","tags":["tiktok"],"x-mint":{"href":"/api-reference/tiktok/following"},"x-payment-info":{"price":{"amount":"0.001200","currency":"USD","mode":"fixed"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"amount":"0.001200","currency":"USD","minimumUsd":"0.001000","mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"amount":"0.001200","currency":"USD","minimumUsd":null,"mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/tiktok.hashtag_videos":{"post":{"description":"List recent TikTok videos for a hashtag (creator, caption, views, likes, shares).\n\n**Price:** \\$0.80 per 1,000 requests (flat per request - same cost regardless of results returned).\n\n**Routing:** 3 independent lanes are available in execution order. A failed attempt uses the next lane only when the request's payment authorizes that lane's price; the normalized schema stays the same.\n\n**Catalog:** [TikTok Hashtag Videos pricing and uptime](https://getanyapi.com/api/tiktok/hashtag-videos) - live USD price, lane routing, and measured 30-day uptime. [Every TikTok endpoint](https://getanyapi.com/api/tiktok).","operationId":"tiktok_hashtag_videos","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"hashtag":"cooking","limit":3},"schema":{"additionalProperties":false,"example":{"hashtag":"cooking","limit":3},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"hashtag":{"description":"TikTok hashtag to fetch videos for, without the # prefix (e.g. booktok).","type":"string"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"limit":{"description":"Maximum number of results to return (1-20, default 20).","maximum":20,"minimum":1,"type":"integer"},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true}},"required":["hashtag"],"title":"TikTok hashtag videos input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"oneOf":[{"type":"null"},{"additionalProperties":false,"properties":{"items":{"description":"Recent TikTok video records for the hashtag. Populated whenever the provider has data for the entity.","items":{"properties":{"authorHandle":{"description":"Username of the video's creator, without the @ prefix. Empty when the upstream omits it.","type":"string"},"authorImage":{"description":"Author's avatar image URL. Signed and short-lived, so the query string is load-bearing and kept intact.","type":"string"},"authorName":{"description":"Author's display name.","type":"string"},"authorUserId":{"description":"Author's numeric TikTok user id.","type":"string"},"authorVerified":{"description":"Whether the author's account carries a TikTok verification badge.","type":"boolean"},"collectCount":{"description":"Number of times the video was saved.","type":"integer"},"commentCount":{"description":"Number of comments on the video.","type":"integer"},"createdUtc":{"description":"UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds.","type":"number"},"durationSeconds":{"description":"Video duration in seconds.","type":"number"},"id":{"description":"The video's numeric TikTok ID, as a string. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"image":{"description":"URL of the video's cover/thumbnail image, with tracking query params stripped. Empty when the upstream omits it.","type":"string"},"likeCount":{"description":"Number of likes on the video.","type":"integer"},"playCount":{"description":"Number of views/plays of the video.","type":"integer"},"shareCount":{"description":"Number of shares of the video.","type":"integer"},"text":{"description":"The video caption text. Empty for videos with no caption.","type":"string"},"url":{"description":"Canonical tiktok.com URL of the video, with tracking query params stripped. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"videoUrl":{"description":"Playable video URL. Signed and short-lived, so the query string is load-bearing and kept intact.","type":"string"}},"required":["id","url","createdUtc"],"type":"object"},"type":"array","x-anyapi-must-populate":true}},"required":["items"],"type":"object"}]},"found":{"description":"Whether any videos were returned for the hashtag.","type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"TikTok hashtag videos output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"TikTok Hashtag Videos","tags":["tiktok"],"x-mint":{"href":"/api-reference/tiktok/hashtag-videos"},"x-payment-info":{"price":{"amount":"0.000800","currency":"USD","mode":"fixed"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"amount":"0.001000","currency":"USD","minimumUsd":"0.001000","mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"amount":"0.000800","currency":"USD","minimumUsd":null,"mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/tiktok.live":{"post":{"description":"Check whether a TikTok creator is live and get the current live room (title, viewers, start time) by handle.\n\n**Price:** \\$1.20 per 1,000 requests (flat per request - same cost regardless of results returned).\n\n**Routing:** 2 independent lanes are available in execution order. A failed attempt uses the next lane only when the request's payment authorizes that lane's price; the normalized schema stays the same.\n\n**Catalog:** [TikTok Live pricing and uptime](https://getanyapi.com/api/tiktok/live) - live USD price, lane routing, and measured 30-day uptime. [Every TikTok endpoint](https://getanyapi.com/api/tiktok).","operationId":"tiktok_live","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"handle":"thejustalex"},"schema":{"additionalProperties":false,"example":{"handle":"thejustalex"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"handle":{"description":"TikTok username without the leading @ (e.g. \"thejustalex\").","type":"string"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true}},"required":["handle"],"title":"TikTok Live input","type":"object","x-aliases":{"username":"handle"}}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"oneOf":[{"type":"null"},{"properties":{"avatarUrl":{"description":"Host's avatar image URL. Signed and short-lived, so the query string is load-bearing and kept intact.","type":"string"},"bio":{"description":"Host's bio text.","type":"string"},"coverUrl":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"displayName":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"enterCount":{"type":"integer"},"followers":{"description":"Host's follower count.","type":"integer"},"following":{"description":"Number of accounts the host follows.","type":"integer"},"handle":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"private":{"description":"Whether the host's account is private.","type":"boolean"},"roomId":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"secUid":{"description":"Host's opaque secondary TikTok user id.","type":"string"},"startTime":{"type":"integer"},"status":{"type":"integer"},"title":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"userId":{"description":"Host's numeric TikTok user id.","type":"string"},"verified":{"description":"Whether the host's account carries a TikTok verification badge.","type":"boolean"},"viewers":{"type":"integer"}},"required":["handle","displayName","roomId","title","coverUrl","startTime","status","viewers","enterCount"],"type":"object"}]},"found":{"type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"TikTok Live output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"TikTok Live","tags":["tiktok"],"x-mint":{"href":"/api-reference/tiktok/live"},"x-payment-info":{"price":{"amount":"0.001200","currency":"USD","mode":"fixed"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"amount":"0.001200","currency":"USD","minimumUsd":"0.001000","mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"amount":"0.001200","currency":"USD","minimumUsd":null,"mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/tiktok.photos":{"post":{"description":"Get every image in a TikTok photo-mode (slideshow) post by URL, in order, with pixel dimensions and both the clean and watermarked variant of each. Videos carry no images - use tiktok.video_download for those.\n\n**Price:** \\$1.20 per 1,000 requests (flat per request - same cost regardless of results returned).\n\n**Routing:** 2 independent lanes are available in execution order. A failed attempt uses the next lane only when the request's payment authorizes that lane's price; the normalized schema stays the same.\n\n**Catalog:** [TikTok Photos pricing and uptime](https://getanyapi.com/api/tiktok/photos) - live USD price, lane routing, and measured 30-day uptime. [Every TikTok endpoint](https://getanyapi.com/api/tiktok).","operationId":"tiktok_photos","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"url":"https://www.tiktok.com/@foodbyfranchi/video/7479916555602513174"},"schema":{"additionalProperties":false,"example":{"url":"https://www.tiktok.com/@foodbyfranchi/video/7479916555602513174"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"url":{"description":"Full TikTok photo-mode post URL. TikTok serves slideshow posts under the same /video/\u003cid\u003e path as videos, so the normal share link works.","minLength":1,"type":"string"}},"required":["url"],"title":"TikTok Photos input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"oneOf":[{"type":"null"},{"additionalProperties":false,"properties":{"authorHandle":{"description":"Author's TikTok handle, without the leading @.","type":"string"},"authorImage":{"description":"Author's avatar image URL. Signed and short-lived, so the query string is load-bearing and kept intact.","type":"string"},"authorName":{"description":"Author's display name.","type":"string"},"authorUserId":{"description":"Author's numeric TikTok user id.","type":"string"},"caption":{"description":"Post caption.","type":"string"},"comments":{"description":"Comment count.","type":"integer"},"createdUtc":{"description":"UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds.","type":"number"},"id":{"description":"TikTok post id. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"images":{"description":"Every image in the post, in the order the creator arranged them. Populated whenever the provider has data for the entity.","items":{"properties":{"height":{"description":"Pixel height of the image.","type":"integer"},"image":{"description":"The image without TikTok's watermark or the creator's handle. A signed, short-lived TikTok CDN URL, so fetch it promptly; the query params are the signature and must be kept intact. Despite the .jpeg in the path this is often served as HEIC, so transcode if you need broad browser support. Populated whenever the provider has data for the entity.","format":"uri","type":"string","x-anyapi-must-populate":true},"watermarkedImage":{"description":"The same image carrying TikTok's watermark and the creator's handle. Signed and short-lived on the same terms as image.","format":"uri","type":"string"},"width":{"description":"Pixel width of the image.","type":"integer"}},"required":["image"],"type":"object"},"type":"array","x-anyapi-must-populate":true},"likes":{"description":"Like count.","type":"integer"},"region":{"description":"Two-letter region code the post was published from.","type":"string"},"saves":{"description":"Save count.","type":"integer"},"shares":{"description":"Share count.","type":"integer"},"url":{"description":"Canonical TikTok URL of the photo post.","type":"string"},"views":{"description":"View count.","type":"integer"}},"required":["id","images"],"type":"object"}]},"found":{"description":"False when the post carries no photo-mode images: a plain video (use tiktok.video_download), or a deleted or private post.","type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"TikTok Photos output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"TikTok Photos","tags":["tiktok"],"x-mint":{"href":"/api-reference/tiktok/photos"},"x-payment-info":{"price":{"amount":"0.001200","currency":"USD","mode":"fixed"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"amount":"0.001200","currency":"USD","minimumUsd":"0.001000","mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"amount":"0.001200","currency":"USD","minimumUsd":null,"mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/tiktok.playlist_videos":{"post":{"description":"List the videos inside one TikTok playlist by playlist URL or id, in playlist order, with view, like and comment counts.\n\n**Price:** \\$1.20 per 1,000 requests (flat per request - same cost regardless of results returned).\n\n**Routing:** one lane serves this API today, so a failed attempt has nowhere to fail over to. Payment outcome follows the selected rail's settlement policy.\n\n**Catalog:** [TikTok Playlist Videos pricing and uptime](https://getanyapi.com/api/tiktok/playlist-videos) - live USD price, lane routing, and measured 30-day uptime. [Every TikTok endpoint](https://getanyapi.com/api/tiktok).","operationId":"tiktok_playlist_videos","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"url":"https://www.tiktok.com/@mrbeast/playlist/Beast%20Games-7596415294902389534"},"schema":{"additionalProperties":false,"example":{"url":"https://www.tiktok.com/@mrbeast/playlist/Beast%20Games-7596415294902389534"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"cursor":{"description":"Pagination cursor from a previous response's nextCursor.","type":"string"},"id":{"description":"TikTok playlist id. Use it when tiktok.profile_playlists handed you the id.","type":"string"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"limit":{"default":20,"description":"Maximum items to return in one page.","maximum":30,"minimum":1,"type":"integer"},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"url":{"description":"Full TikTok playlist URL. The playlist id is the numeric run at the end.","type":"string"}},"required":[],"title":"TikTok playlist videos input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"oneOf":[{"type":"null"},{"additionalProperties":false,"properties":{"nextCursor":{"description":"Opaque cursor for the next page, or null when there are no more. Pass it back as cursor to continue.","type":["string","null"]},"videos":{"description":"Videos in the playlist, in the order TikTok lists them.","items":{"properties":{"author":{"description":"Handle of the account that posted the video, without the leading @. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"authorFollowers":{"description":"The author's follower count at the time of the request. TikTok rounds this for large accounts.","type":"integer"},"authorName":{"description":"The author's display name, which is not the handle and can contain any characters.","type":"string"},"authorSecUid":{"description":"The author's TikTok sec_uid. Pass it straight to tiktok.profile_reposts or tiktok.profile_playlists to pivot to that creator without a tiktok.profile lookup.","type":"string"},"authorVerified":{"type":"boolean"},"caption":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"comments":{"type":"integer"},"createdUtc":{"description":"UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds. Populated whenever the provider has data for the entity.","type":"number","x-anyapi-must-populate":true},"durationSeconds":{"description":"Video length in seconds.","type":"integer"},"hashtags":{"description":"Hashtags carried in the caption, without the leading #. Empty when the post uses none; @-mentions are excluded.","items":{"type":"string"},"type":"array"},"id":{"description":"TikTok video id. Pass it to tiktok.video as id for the full record. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"image":{"description":"URL of the video's cover image. A signed, short-lived TikTok CDN URL - the query params are load-bearing, so keep the URL intact. Absent when the upstream provides no cover.","type":"string"},"likes":{"type":"integer"},"saves":{"type":"integer"},"shares":{"type":"integer"},"soundAuthor":{"description":"Credited author of the sound.","type":"string"},"soundClipId":{"description":"Id of the sound the post uses. Pass it to tiktok.song or tiktok.song_videos as clipId.","type":"string"},"soundTitle":{"description":"Name of the sound. \"original sound\" means the creator's own audio rather than a licensed track.","type":"string"},"views":{"type":"integer"}},"required":["id","caption","author","createdUtc","views","likes","comments","shares"],"type":"object"},"type":"array"}},"required":["videos","nextCursor"],"type":"object"}]},"found":{"type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"TikTok playlist videos output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"TikTok Playlist Videos","tags":["tiktok"],"x-mint":{"href":"/api-reference/tiktok/playlist-videos"},"x-payment-info":{"price":{"amount":"0.001200","currency":"USD","mode":"fixed"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"amount":"0.001200","currency":"USD","minimumUsd":"0.001000","mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"amount":"0.001200","currency":"USD","minimumUsd":null,"mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/tiktok.profile":{"post":{"description":"Fetch a TikTok creator's public profile (followers, likes, bio, verification) by handle.\n\n**Price:** \\$0.45 per 1,000 requests (flat per request - same cost regardless of results returned).\n\n**Routing:** 5 independent lanes are available in execution order. A failed attempt uses the next lane only when the request's payment authorizes that lane's price; the normalized schema stays the same.\n\n**Catalog:** [TikTok Profile pricing and uptime](https://getanyapi.com/api/tiktok/profile) - live USD price, lane routing, and measured 30-day uptime. [Every TikTok endpoint](https://getanyapi.com/api/tiktok).","operationId":"tiktok_profile","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"handle":"zachking"},"schema":{"additionalProperties":false,"example":{"handle":"zachking"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"handle":{"description":"TikTok username without the leading @ (e.g. \"stoolpresidente\").","type":"string"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true}},"required":["handle"],"title":"TikTok profile input","type":"object","x-aliases":{"username":"handle"}}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"oneOf":[{"type":"null"},{"properties":{"avatarUrl":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"bio":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"createdUtc":{"description":"UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds.","type":"number"},"displayName":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"externalUrl":{"description":"The single link the account publishes in its bio, normalized to an absolute URL. Absent when the account publishes no link. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"followers":{"type":"integer"},"following":{"type":"integer"},"handle":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"likes":{"type":"integer"},"private":{"description":"Whether the account is private.","type":"boolean"},"secUid":{"description":"TikTok's sec_uid: the opaque account identifier TikTok's own web and app endpoints key on, and the id most third-party TikTok tools ask for.","type":"string"},"userId":{"description":"TikTok's numeric internal user id for the account. Unlike the handle it never changes, so store it as the account's key. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"verified":{"type":"boolean"},"videos":{"type":"integer"}},"required":["handle","displayName","followers","following","likes","videos","bio","verified","avatarUrl"],"type":"object"}]},"found":{"type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"TikTok profile output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"TikTok Profile","tags":["tiktok"],"x-mint":{"href":"/api-reference/tiktok/profile"},"x-payment-info":{"price":{"amount":"0.000450","currency":"USD","mode":"fixed"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"amount":"0.001000","currency":"USD","minimumUsd":"0.001000","mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"amount":"0.000450","currency":"USD","minimumUsd":null,"mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/tiktok.profile_contact":{"post":{"description":"Find the public contact email behind a TikTok creator's profile: the address written into the bio plus any published on the site the profile links to, each labelled with where it came from. Returns the creator's profile stats and linked social accounts alongside.\n\n**Price:** billed per result - \\$1.16 per 1,000 requests base + \\$0.00 per 1,000 results, capped at \\$1.16 per 1,000 requests.\n\n**Routing:** 2 independent lanes are available in execution order. A failed attempt uses the next lane only when the request's payment authorizes that lane's price; the normalized schema stays the same.\n\n**Catalog:** [TikTok Profile Contact Info pricing and uptime](https://getanyapi.com/api/tiktok/profile-contact) - live USD price, lane routing, and measured 30-day uptime. [Every TikTok endpoint](https://getanyapi.com/api/tiktok).","operationId":"tiktok_profile_contact","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"handle":"gordonramsayofficial"},"schema":{"additionalProperties":false,"example":{"handle":"gordonramsayofficial"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"handle":{"description":"TikTok username without the leading @.","minLength":1,"type":"string"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"requireFields":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Name the output fields this request must be able to return, for example `socialLinks` or `domain`, and it is served only by a source that returns every one of them. Fields you do not name are still returned whenever the serving source has them. This can raise your price: when the cheapest source cannot return a named field, a dearer source serves, and you are quoted and charged its price. A named field can still be absent on a profile that genuinely lacks it. Naming a combination that no single source returns together is refused as invalid input, with no charge.","items":{"enum":["avatarUrl","bio","displayName","domain","domainHealth","email","externalUrl","followers","following","likes","platform","primaryEmail","private","profileUrl","seller","socialLinks","sourceType","sourceUrl","url","userId","verified","videos"],"type":"string"},"type":"array","uniqueItems":true},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true}},"required":["handle"],"title":"TikTok profile contact input","type":"object","x-aliases":{"username":"handle"}}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"description":"The creator and the contact details published for them, or null when no public email was found.","oneOf":[{"type":"null"},{"properties":{"avatarUrl":{"description":"Profile picture URL. TikTok signs this URL, so it expires; re-fetch rather than storing it.","type":"string"},"bio":{"description":"Profile biography text.","type":"string"},"displayName":{"description":"Account display name.","type":"string"},"emails":{"description":"Every public email the source publishes for the creator, each labelled with where it came from. Some sources report only the address they judge best, so a single entry does not mean a single address exists. Never empty: a creator with no public email returns found false instead. Populated whenever the provider has data for the entity.","items":{"properties":{"domain":{"description":"The email address's own domain. Absent when the source that served the request does not report it.","type":"string"},"domainHealth":{"description":"The source's verdict on whether the address can receive mail: healthy or unhealthy from a domain-level check, deliverable, risky or missing from a mailbox-level one. Which vocabulary you get varies with the source that served the request.","type":"string"},"email":{"description":"The email address as published.","type":"string"},"sourceType":{"description":"Where the address was read: the TikTok bio itself (tiktok_bio) or a page the profile links to (linked_page, website). An address read off a linked page may belong to a brand or a partner rather than the creator. The exact word varies with the source that served the request.","type":"string"},"sourceUrl":{"description":"The page the address was read from. Absent for an address read from the TikTok bio itself.","type":"string"}},"required":["email"],"type":"object"},"type":"array","x-anyapi-must-populate":true},"externalUrl":{"description":"The single link the account publishes in its bio. Absent when the account publishes no link.","type":"string"},"followers":{"description":"Follower count.","type":"integer"},"following":{"description":"Number of accounts this account follows.","type":"integer"},"handle":{"description":"TikTok username without the leading @. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"likes":{"description":"Total likes across the account's videos.","type":"integer"},"primaryEmail":{"description":"The address the upstream considers the creator's best contact, chosen from emails. Absent when no email was found.","type":"string"},"private":{"description":"Whether the account is private.","type":"boolean"},"profileUrl":{"description":"Canonical URL of the TikTok profile.","type":"string"},"seller":{"description":"Whether the account sells through TikTok Shop.","type":"boolean"},"socialLinks":{"description":"Other social accounts found for the creator on the page their profile links to. Empty when none were found.","items":{"properties":{"platform":{"description":"The platform the link points at, for example instagram, youtube, facebook.","type":"string"},"url":{"description":"The account URL on that platform.","type":"string"}},"required":["platform","url"],"type":"object"},"type":"array"},"userId":{"description":"TikTok's numeric internal user id for the account. Unlike the handle it never changes, so store it as the account's key.","type":"string"},"verified":{"description":"Whether the account carries TikTok's verified badge.","type":"boolean"},"videos":{"description":"Number of videos the account has published.","type":"integer"}},"required":["handle","emails"],"type":"object"}]},"found":{"description":"True when at least one public email was found for the creator. A real account that publishes no email anywhere returns false, and the call is free.","type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"TikTok profile contact output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"TikTok Profile Contact Info","tags":["tiktok"],"x-mint":{"href":"/api-reference/tiktok/profile-contact"},"x-payment-info":{"price":{"currency":"USD","max":"0.001160","min":"0.001160","mode":"dynamic"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"currency":"USD","max":"0.001160","min":"0.001160","minimumUsd":"0.001000","mode":"dynamic","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"currency":"USD","max":"0.001160","min":"0.001160","minimumUsd":null,"mode":"dynamic","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/tiktok.profile_playlists":{"post":{"description":"List the playlists a TikTok creator has published on their profile, with each playlist's name, video count and cover image.\n\n**Price:** \\$1.20 per 1,000 requests (flat per request - same cost regardless of results returned).\n\n**Routing:** one lane serves this API today, so a failed attempt has nowhere to fail over to. Payment outcome follows the selected rail's settlement policy.\n\n**Catalog:** [TikTok Profile Playlists pricing and uptime](https://getanyapi.com/api/tiktok/profile-playlists) - live USD price, lane routing, and measured 30-day uptime. [Every TikTok endpoint](https://getanyapi.com/api/tiktok).","operationId":"tiktok_profile_playlists","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"secUid":"MS4wLjABAAAABKjQkOz_IIzXXzEAl_9LGsWhvK-gBnlczwRPXK8EmxAp6K3X0qiaP5_OEqmm0XwG"},"schema":{"additionalProperties":false,"example":{"secUid":"MS4wLjABAAAABKjQkOz_IIzXXzEAl_9LGsWhvK-gBnlczwRPXK8EmxAp6K3X0qiaP5_OEqmm0XwG"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"cursor":{"description":"Pagination cursor from a previous response's nextCursor.","type":"string"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"limit":{"default":20,"description":"Maximum items to return in one page.","maximum":30,"minimum":1,"type":"integer"},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"secUid":{"description":"TikTok's opaque sec_uid for the account. TikTok's own endpoint keys on it and will not accept a handle; call tiktok.profile with the handle first and read secUid off its response.","type":"string"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true}},"required":["secUid"],"title":"TikTok profile playlists input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"oneOf":[{"type":"null"},{"additionalProperties":false,"properties":{"nextCursor":{"description":"Opaque cursor for the next page, or null when there are no more. Pass it back as cursor to continue.","type":["string","null"]},"playlists":{"items":{"properties":{"coverUrl":{"description":"Playlist cover image. A signed, short-lived TikTok CDN URL - the query params are load-bearing, so keep the URL intact.","type":"string"},"creatorHandle":{"description":"Handle of the account that owns the playlist, without the leading @. Useful because this SKU is keyed by secUid rather than handle.","type":"string"},"id":{"description":"Playlist id. Pass it to tiktok.playlist_videos as id to list the videos in it. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"name":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"videoCount":{"description":"Number of videos TikTok reports in the playlist.","type":"integer"}},"required":["id","name","videoCount"],"type":"object"},"type":"array"}},"required":["playlists","nextCursor"],"type":"object"}]},"found":{"type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"TikTok profile playlists output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"TikTok Profile Playlists","tags":["tiktok"],"x-mint":{"href":"/api-reference/tiktok/profile-playlists"},"x-payment-info":{"price":{"amount":"0.001200","currency":"USD","mode":"fixed"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"amount":"0.001200","currency":"USD","minimumUsd":"0.001000","mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"amount":"0.001200","currency":"USD","minimumUsd":null,"mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/tiktok.profile_region":{"post":{"description":"Resolve the home region (country) of a TikTok creator by handle.\n\n**Price:** \\$1.20 per 1,000 requests (flat per request - same cost regardless of results returned).\n\n**Routing:** 2 independent lanes are available in execution order. A failed attempt uses the next lane only when the request's payment authorizes that lane's price; the normalized schema stays the same.\n\n**Catalog:** [TikTok Profile Region pricing and uptime](https://getanyapi.com/api/tiktok/profile-region) - live USD price, lane routing, and measured 30-day uptime. [Every TikTok endpoint](https://getanyapi.com/api/tiktok).","operationId":"tiktok_profile_region","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"handle":"stoolpresidente"},"schema":{"additionalProperties":false,"example":{"handle":"stoolpresidente"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"handle":{"description":"TikTok username without the leading @ (e.g. \"stoolpresidente\").","type":"string"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true}},"required":["handle"],"title":"TikTok Profile Region input","type":"object","x-aliases":{"username":"handle"}}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"oneOf":[{"type":"null"},{"properties":{"handle":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"profileUrl":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"region":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true}},"required":["handle","profileUrl","region"],"type":"object"}]},"found":{"type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"TikTok Profile Region output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"TikTok Profile Region","tags":["tiktok"],"x-mint":{"href":"/api-reference/tiktok/profile-region"},"x-payment-info":{"price":{"amount":"0.001200","currency":"USD","mode":"fixed"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"amount":"0.001200","currency":"USD","minimumUsd":"0.001000","mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"amount":"0.001200","currency":"USD","minimumUsd":null,"mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/tiktok.profile_reposts":{"post":{"description":"List the videos a TikTok creator has reposted to their profile, with view, like and comment counts and cursor pagination.\n\n**Price:** \\$1.20 per 1,000 requests (flat per request - same cost regardless of results returned).\n\n**Routing:** one lane serves this API today, so a failed attempt has nowhere to fail over to. Payment outcome follows the selected rail's settlement policy.\n\n**Catalog:** [TikTok Profile Reposts pricing and uptime](https://getanyapi.com/api/tiktok/profile-reposts) - live USD price, lane routing, and measured 30-day uptime. [Every TikTok endpoint](https://getanyapi.com/api/tiktok).","operationId":"tiktok_profile_reposts","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"secUid":"MS4wLjABAAAABKjQkOz_IIzXXzEAl_9LGsWhvK-gBnlczwRPXK8EmxAp6K3X0qiaP5_OEqmm0XwG"},"schema":{"additionalProperties":false,"example":{"secUid":"MS4wLjABAAAABKjQkOz_IIzXXzEAl_9LGsWhvK-gBnlczwRPXK8EmxAp6K3X0qiaP5_OEqmm0XwG"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"cursor":{"description":"Pagination cursor from a previous response's nextCursor.","type":"string"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"limit":{"default":20,"description":"Maximum items to return in one page.","maximum":30,"minimum":1,"type":"integer"},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"secUid":{"description":"TikTok's opaque sec_uid for the account. TikTok's own endpoint keys on it and will not accept a handle; call tiktok.profile with the handle first and read secUid off its response.","type":"string"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true}},"required":["secUid"],"title":"TikTok profile reposts input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"oneOf":[{"type":"null"},{"additionalProperties":false,"properties":{"nextCursor":{"description":"Opaque cursor for the next page, or null when there are no more. Pass it back as cursor to continue.","type":["string","null"]},"videos":{"description":"Videos the creator reposted, newest first. Reposts are other accounts' videos, so author is usually not the creator you asked about.","items":{"properties":{"author":{"description":"Handle of the account that posted the video, without the leading @. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"authorFollowers":{"description":"The author's follower count at the time of the request. TikTok rounds this for large accounts.","type":"integer"},"authorName":{"description":"The author's display name, which is not the handle and can contain any characters.","type":"string"},"authorSecUid":{"description":"The author's TikTok sec_uid. Pass it straight to tiktok.profile_reposts or tiktok.profile_playlists to pivot to that creator without a tiktok.profile lookup.","type":"string"},"authorVerified":{"type":"boolean"},"caption":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"comments":{"type":"integer"},"createdUtc":{"description":"UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds. Populated whenever the provider has data for the entity.","type":"number","x-anyapi-must-populate":true},"durationSeconds":{"description":"Video length in seconds.","type":"integer"},"hashtags":{"description":"Hashtags carried in the caption, without the leading #. Empty when the post uses none; @-mentions are excluded.","items":{"type":"string"},"type":"array"},"id":{"description":"TikTok video id. Pass it to tiktok.video as id for the full record. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"image":{"description":"URL of the video's cover image. A signed, short-lived TikTok CDN URL - the query params are load-bearing, so keep the URL intact. Absent when the upstream provides no cover.","type":"string"},"likes":{"type":"integer"},"saves":{"type":"integer"},"shares":{"type":"integer"},"soundAuthor":{"description":"Credited author of the sound.","type":"string"},"soundClipId":{"description":"Id of the sound the post uses. Pass it to tiktok.song or tiktok.song_videos as clipId.","type":"string"},"soundTitle":{"description":"Name of the sound. \"original sound\" means the creator's own audio rather than a licensed track.","type":"string"},"views":{"type":"integer"}},"required":["id","caption","author","createdUtc","views","likes","comments","shares"],"type":"object"},"type":"array"}},"required":["videos","nextCursor"],"type":"object"}]},"found":{"type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"TikTok profile reposts output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"TikTok Profile Reposts","tags":["tiktok"],"x-mint":{"href":"/api-reference/tiktok/profile-reposts"},"x-payment-info":{"price":{"amount":"0.001200","currency":"USD","mode":"fixed"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"amount":"0.001200","currency":"USD","minimumUsd":"0.001000","mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"amount":"0.001200","currency":"USD","minimumUsd":null,"mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/tiktok.profile_videos":{"post":{"description":"List a TikTok creator's recent videos (views, likes, comments) by handle with cursor pagination.\n\n**Price:** \\$0.70 per 1,000 requests (flat per request - same cost regardless of results returned).\n\n**Routing:** 5 independent lanes are available in execution order. A failed attempt uses the next lane only when the request's payment authorizes that lane's price; the normalized schema stays the same.\n\n**Catalog:** [TikTok Profile Videos pricing and uptime](https://getanyapi.com/api/tiktok/profile-videos) - live USD price, lane routing, and measured 30-day uptime. [Every TikTok endpoint](https://getanyapi.com/api/tiktok).","operationId":"tiktok_profile_videos","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"handle":"zachking"},"schema":{"additionalProperties":false,"example":{"handle":"zachking"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"cursor":{"description":"Pagination cursor from a previous response's nextCursor.","type":"string"},"handle":{"description":"TikTok username without the leading @.","type":"string"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true}},"required":["handle"],"title":"TikTok profile videos input","type":"object","x-aliases":{"username":"handle"}}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"oneOf":[{"type":"null"},{"additionalProperties":false,"properties":{"nextCursor":{"description":"Opaque cursor for the next page of videos, or null when this lane has no more. Pass it back as cursor to continue.","type":["string","null"]},"videos":{"items":{"properties":{"authorHandle":{"description":"Author's TikTok handle, without the leading @.","type":"string"},"authorImage":{"description":"Author's avatar image URL. Signed and short-lived, so the query string is load-bearing and kept intact.","type":"string"},"authorName":{"description":"Author's display name.","type":"string"},"authorUserId":{"description":"Author's numeric TikTok user id.","type":"string"},"caption":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"comments":{"type":"integer"},"createdUtc":{"description":"UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds. Populated whenever the provider has data for the entity.","type":"number","x-anyapi-must-populate":true},"durationSeconds":{"description":"Video duration in seconds.","type":"number"},"id":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"image":{"description":"URL of the video's cover/thumbnail image. A signed, short-lived TikTok CDN URL (typically expires within about a day; query params are load-bearing and kept intact), often served as HEIC rather than JPEG, so fetch it promptly and transcode if you need broad browser support. Absent when the upstream provides no cover.","type":"string"},"likes":{"type":"integer"},"saves":{"type":"integer"},"shares":{"description":"Share count.","type":"integer"},"url":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"videoUrl":{"description":"Playable video URL. Signed and short-lived, so the query string is load-bearing and kept intact.","type":"string"},"views":{"type":"integer"}},"required":["id","url","caption","views","likes","comments","createdUtc"],"type":"object"},"type":"array"}},"required":["videos","nextCursor"],"type":"object"}]},"found":{"type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"TikTok profile videos output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"TikTok Profile Videos","tags":["tiktok"],"x-mint":{"href":"/api-reference/tiktok/profile-videos"},"x-payment-info":{"price":{"amount":"0.000700","currency":"USD","mode":"fixed"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"amount":"0.001000","currency":"USD","minimumUsd":"0.001000","mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"amount":"0.000700","currency":"USD","minimumUsd":null,"mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/tiktok.search_hashtag":{"post":{"description":"Search TikTok by hashtag and get matching videos (caption, views, likes, comments, shares) as normalized JSON.\n\n**Price:** \\$1.20 per 1,000 requests (flat per request - same cost regardless of results returned).\n\n**Routing:** 2 independent lanes are available in execution order. A failed attempt uses the next lane only when the request's payment authorizes that lane's price; the normalized schema stays the same.\n\n**Catalog:** [TikTok Hashtag Search pricing and uptime](https://getanyapi.com/api/tiktok/search-hashtag) - live USD price, lane routing, and measured 30-day uptime. [Every TikTok endpoint](https://getanyapi.com/api/tiktok).","operationId":"tiktok_search_hashtag","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"query":"recipe"},"schema":{"additionalProperties":false,"example":{"query":"recipe"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"cursor":{"description":"Pagination cursor from a previous response.","type":"string"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"query":{"description":"Hashtag or keyword to search for (without the leading #).","type":"string"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true}},"required":["query"],"title":"TikTok Hashtag Search input","type":"object","x-aliases":{"hashtag":"query"}}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"oneOf":[{"type":"null"},{"additionalProperties":false,"properties":{"nextCursor":{"description":"Opaque cursor for the next page of videos, or null when this lane has no more. Pass it back as cursor to continue.","type":["string","null"]},"videos":{"description":"Populated whenever the provider has data for the entity.","items":{"properties":{"author":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"authorImage":{"description":"Author's avatar image URL. Signed and short-lived, so the query string is load-bearing and kept intact.","type":"string"},"authorName":{"description":"Author's display name.","type":"string"},"authorUserId":{"description":"Author's numeric TikTok user id.","type":"string"},"authorVerified":{"description":"Whether the author's account carries a TikTok verification badge.","type":"boolean"},"caption":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"comments":{"type":"integer"},"createdUtc":{"description":"UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds.","type":"number"},"durationSeconds":{"description":"Video duration in seconds.","type":"number"},"id":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"image":{"description":"URL of the video's cover image. Signed and short-lived, so the query string is load-bearing and kept intact.","type":"string"},"likes":{"type":"integer"},"saves":{"description":"Save count.","type":"integer"},"shares":{"type":"integer"},"url":{"description":"Canonical TikTok URL of the video.","type":"string"},"videoUrl":{"description":"Playable video URL. Signed and short-lived, so the query string is load-bearing and kept intact.","type":"string"},"views":{"type":"integer"}},"required":["id","caption","author","views","likes","comments","shares","createdUtc"],"type":"object"},"type":"array","x-anyapi-must-populate":true}},"required":["videos","nextCursor"],"type":"object"}]},"found":{"type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"TikTok Hashtag Search output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"TikTok Hashtag Search","tags":["tiktok"],"x-mint":{"href":"/api-reference/tiktok/search-hashtag"},"x-payment-info":{"price":{"amount":"0.001200","currency":"USD","mode":"fixed"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"amount":"0.001200","currency":"USD","minimumUsd":"0.001000","mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"amount":"0.001200","currency":"USD","minimumUsd":null,"mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/tiktok.search_keyword":{"post":{"description":"Search TikTok by keyword and get matching videos (caption, views, likes, comments, shares) as normalized JSON.\n\n**Price:** \\$0.70 per 1,000 requests (flat per request - same cost regardless of results returned).\n\n**Routing:** 5 independent lanes are available in execution order. A failed attempt uses the next lane only when the request's payment authorizes that lane's price; the normalized schema stays the same.\n\n**Catalog:** [TikTok Keyword Search pricing and uptime](https://getanyapi.com/api/tiktok/search-keyword) - live USD price, lane routing, and measured 30-day uptime. [Every TikTok endpoint](https://getanyapi.com/api/tiktok).","operationId":"tiktok_search_keyword","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"datePosted":0,"query":"cooking","sortBy":"relevance"},"schema":{"additionalProperties":false,"example":{"datePosted":0,"query":"cooking","sortBy":"relevance"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"cursor":{"description":"Pagination cursor from a previous response.","type":"string"},"datePosted":{"default":0,"description":"Time frame filter, in days back from now. Use a canonical JSON integer that is nonnegative: 0 for any time, 1 for the past 24 hours, 7 for the past week, 30 for the past month, 90 for the past three months, or 180 for the past six months. Any other number is not guaranteed to filter anything. Legacy numeric strings remain accepted.","minimum":0,"pattern":"^[0-9]+$","type":["integer","string"]},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"query":{"description":"The keyword to search TikTok for.","type":"string"},"requireCursor":{"deprecated":true,"description":"Deprecated. Every source for this search returns a nextCursor, so this changes nothing about the price or which source serves you; it stays accepted so callers that already send it keep working.","type":"boolean"},"sortBy":{"default":"relevance","description":"Sort order: relevance, most-liked, date-posted.","enum":["relevance","most-liked","date-posted"],"type":"string"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true}},"required":["query"],"title":"TikTok keyword search input","type":"object","x-anyapi-compat-values":{"sortBy":{"0":"relevance","1":"most-liked","2":"date-posted","like":"most-liked","popular":"most-liked"}}}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"oneOf":[{"type":"null"},{"additionalProperties":false,"properties":{"nextCursor":{"description":"Opaque cursor for the next page of videos, or null when this lane has no more. Pass it back as cursor to continue.","type":["string","null"]},"videos":{"description":"Populated whenever the provider has data for the entity.","items":{"properties":{"author":{"description":"Username (handle) of the account that posted, without the @ prefix.","type":"string"},"caption":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"comments":{"type":"integer"},"createdUtc":{"description":"UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds.","type":"number"},"id":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"likes":{"type":"integer"},"region":{"type":"string"},"saves":{"type":"integer"},"shares":{"type":"integer"},"views":{"type":"integer"}},"required":["id","caption","region","views","likes","comments","shares"],"type":"object"},"type":"array","x-anyapi-must-populate":true}},"required":["videos"],"type":"object"}]},"found":{"type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"TikTok keyword search output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"TikTok Keyword Search","tags":["tiktok"],"x-mint":{"href":"/api-reference/tiktok/search-keyword"},"x-payment-info":{"price":{"amount":"0.000700","currency":"USD","mode":"fixed"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"amount":"0.001000","currency":"USD","minimumUsd":"0.001000","mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"amount":"0.000700","currency":"USD","minimumUsd":null,"mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/tiktok.search_photos":{"post":{"description":"Search TikTok for photo-mode (slideshow) posts by keyword, with every image in each post plus view, like and comment counts. tiktok.search_keyword returns videos and drops these.\n\n**Price:** \\$1.20 per 1,000 requests (flat per request - same cost regardless of results returned).\n\n**Routing:** one lane serves this API today, so a failed attempt has nowhere to fail over to. Payment outcome follows the selected rail's settlement policy.\n\n**Catalog:** [TikTok Photo Search pricing and uptime](https://getanyapi.com/api/tiktok/search-photos) - live USD price, lane routing, and measured 30-day uptime. [Every TikTok endpoint](https://getanyapi.com/api/tiktok).","operationId":"tiktok_search_photos","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"query":"latte art"},"schema":{"additionalProperties":false,"example":{"query":"latte art"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"cursor":{"description":"Pagination cursor from a previous response's nextCursor.","type":"string"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"limit":{"default":20,"description":"Maximum items to return in one page.","maximum":30,"minimum":1,"type":"integer"},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"query":{"description":"Search keyword.","type":"string"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true}},"required":["query"],"title":"TikTok photo search input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"oneOf":[{"type":"null"},{"additionalProperties":false,"properties":{"nextCursor":{"description":"Opaque cursor for the next page, or null when there are no more. Pass it back as cursor to continue.","type":["string","null"]},"posts":{"description":"Photo-mode posts matching the keyword.","items":{"properties":{"author":{"description":"Handle of the account that posted the video, without the leading @. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"authorFollowers":{"description":"The author's follower count at the time of the request. TikTok rounds this for large accounts.","type":"integer"},"authorName":{"description":"The author's display name, which is not the handle and can contain any characters.","type":"string"},"authorSecUid":{"description":"The author's TikTok sec_uid. Pass it straight to tiktok.profile_reposts or tiktok.profile_playlists to pivot to that creator without a tiktok.profile lookup.","type":"string"},"authorVerified":{"type":"boolean"},"caption":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"comments":{"type":"integer"},"createdUtc":{"description":"UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds. Populated whenever the provider has data for the entity.","type":"number","x-anyapi-must-populate":true},"hashtags":{"description":"Hashtags carried in the caption, without the leading #. Empty when the post uses none; @-mentions are excluded.","items":{"type":"string"},"type":"array"},"id":{"description":"TikTok video id. Pass it to tiktok.video as id for the full record. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"images":{"description":"The slideshow's images in order.","items":{"properties":{"height":{"type":"integer"},"image":{"description":"Image URL. A signed, short-lived TikTok CDN URL - the query params are load-bearing, so keep the URL intact. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"width":{"type":"integer"}},"required":["image"],"type":"object"},"type":"array"},"likes":{"type":"integer"},"saves":{"type":"integer"},"shares":{"type":"integer"},"soundAuthor":{"description":"Credited author of the sound.","type":"string"},"soundClipId":{"description":"Id of the sound the post uses. Pass it to tiktok.song or tiktok.song_videos as clipId.","type":"string"},"soundTitle":{"description":"Name of the sound. \"original sound\" means the creator's own audio rather than a licensed track.","type":"string"},"title":{"description":"The slideshow's own title, which TikTok stores separately from the caption. Absent when the creator set none.","type":"string"},"views":{"type":"integer"}},"required":["id","caption","author","createdUtc","views","likes","comments","shares"],"type":"object"},"type":"array"}},"required":["posts","nextCursor"],"type":"object"}]},"found":{"type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"TikTok photo search output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"TikTok Photo Search","tags":["tiktok"],"x-mint":{"href":"/api-reference/tiktok/search-photos"},"x-payment-info":{"price":{"amount":"0.001200","currency":"USD","mode":"fixed"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"amount":"0.001200","currency":"USD","minimumUsd":"0.001000","mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"amount":"0.001200","currency":"USD","minimumUsd":null,"mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/tiktok.search_suggestions":{"post":{"description":"Get the search terms TikTok suggests for a keyword, each with its language and relative weight - the queries real TikTok users type around your topic.\n\n**Price:** \\$1.20 per 1,000 requests (flat per request - same cost regardless of results returned).\n\n**Routing:** one lane serves this API today, so a failed attempt has nowhere to fail over to. Payment outcome follows the selected rail's settlement policy.\n\n**Catalog:** [TikTok Search Suggestions pricing and uptime](https://getanyapi.com/api/tiktok/search-suggestions) - live USD price, lane routing, and measured 30-day uptime. [Every TikTok endpoint](https://getanyapi.com/api/tiktok).","operationId":"tiktok_search_suggestions","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"query":"protein powder"},"schema":{"additionalProperties":false,"example":{"query":"protein powder"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"query":{"description":"Seed keyword to expand.","type":"string"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true}},"required":["query"],"title":"TikTok search suggestions input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"oneOf":[{"type":"null"},{"additionalProperties":false,"properties":{"suggestions":{"description":"Suggested searches, most relevant first.","items":{"properties":{"language":{"description":"BCP-47 language code TikTok assigns the suggestion, e.g. en.","type":"string"},"score":{"description":"TikTok's relative weight for the suggestion. Comparable within one response only; it is not a search volume.","type":"number"},"text":{"description":"The suggested search term. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true}},"required":["text"],"type":"object"},"type":"array"}},"required":["suggestions"],"type":"object"}]},"found":{"type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"TikTok search suggestions output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"TikTok Search Suggestions","tags":["tiktok"],"x-mint":{"href":"/api-reference/tiktok/search-suggestions"},"x-payment-info":{"price":{"amount":"0.001200","currency":"USD","mode":"fixed"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"amount":"0.001200","currency":"USD","minimumUsd":"0.001000","mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"amount":"0.001200","currency":"USD","minimumUsd":null,"mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/tiktok.search_top":{"post":{"description":"Search TikTok's top results for a keyword (caption, views, likes, comments, shares) with cursor pagination.\n\n**Price:** \\$0.90 per 1,000 requests (flat per request - same cost regardless of results returned).\n\n**Routing:** 3 independent lanes are available in execution order. A failed attempt uses the next lane only when the request's payment authorizes that lane's price; the normalized schema stays the same.\n\n**Catalog:** [TikTok Top Search pricing and uptime](https://getanyapi.com/api/tiktok/search-top) - live USD price, lane routing, and measured 30-day uptime. [Every TikTok endpoint](https://getanyapi.com/api/tiktok).","operationId":"tiktok_search_top","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"query":"funny"},"schema":{"additionalProperties":false,"example":{"query":"funny"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"cursor":{"description":"Pagination cursor from a previous response.","type":"string"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"publishTime":{"description":"Time-frame filter: yesterday, this-week, this-month, last-3-months, last-6-months, all-time.","enum":["yesterday","this-week","this-month","last-3-months","last-6-months","all-time"],"type":"string"},"query":{"description":"Keyword to search for (e.g. \"funny\").","type":"string"},"region":{"description":"2-letter country code for the proxy location (e.g. US, GB, FR).","type":"string"},"sortBy":{"description":"Sort order: relevance, most-liked, date-posted.","enum":["relevance","most-liked","date-posted"],"type":"string"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true}},"required":["query"],"title":"TikTok Top Search input","type":"object","x-anyapi-compat-values":{"publishTime":{"last-month":"this-month","last-week":"this-week"},"sortBy":{"latest":"date-posted"}}}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"oneOf":[{"type":"null"},{"additionalProperties":false,"properties":{"items":{"description":"Populated whenever the provider has data for the entity.","items":{"properties":{"author":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"authorImage":{"description":"Author's avatar image URL. Signed and short-lived, so the query string is load-bearing and kept intact.","type":"string"},"authorName":{"description":"Author's display name.","type":"string"},"authorUserId":{"description":"Author's numeric TikTok user id.","type":"string"},"caption":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"comments":{"type":"integer"},"contentType":{"type":"string"},"createdUtc":{"description":"UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds. Populated whenever the provider has data for the entity.","type":"number","x-anyapi-must-populate":true},"durationSeconds":{"description":"Media duration in seconds.","type":"number"},"id":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"image":{"description":"URL of the item's cover image. Signed and short-lived, so the query string is load-bearing and kept intact.","type":"string"},"likes":{"type":"integer"},"saves":{"type":"integer"},"shares":{"type":"integer"},"url":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"videoUrl":{"description":"Playable video URL. Signed and short-lived, so the query string is load-bearing and kept intact.","type":"string"},"views":{"type":"integer"}},"required":["id","caption","contentType","url","author","views","likes","comments","shares"],"type":"object"},"type":"array","x-anyapi-must-populate":true},"nextCursor":{"description":"Opaque cursor for the next page of results, or null when this lane has no more. Pass it back as cursor to continue.","type":["string","null"]}},"required":["items","nextCursor"],"type":"object"}]},"found":{"type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"TikTok Top Search output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"TikTok Top Search","tags":["tiktok"],"x-mint":{"href":"/api-reference/tiktok/search-top"},"x-payment-info":{"price":{"amount":"0.000900","currency":"USD","mode":"fixed"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"amount":"0.001000","currency":"USD","minimumUsd":"0.001000","mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"amount":"0.000900","currency":"USD","minimumUsd":null,"mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/tiktok.search_users":{"post":{"description":"Search TikTok accounts by keyword (handle, nickname, follower count) with cursor pagination.\n\n**Price:** \\$0.70 per 1,000 requests (flat per request - same cost regardless of results returned).\n\n**Routing:** 5 independent lanes are available in execution order. A failed attempt uses the next lane only when the request's payment authorizes that lane's price; the normalized schema stays the same.\n\n**Catalog:** [TikTok User Search pricing and uptime](https://getanyapi.com/api/tiktok/search-users) - live USD price, lane routing, and measured 30-day uptime. [Every TikTok endpoint](https://getanyapi.com/api/tiktok).","operationId":"tiktok_search_users","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"query":"chef"},"schema":{"additionalProperties":false,"example":{"query":"chef"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"cursor":{"description":"Pagination cursor from a previous response's nextCursor.","type":"string"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"query":{"description":"The keyword to search TikTok accounts for.","type":"string"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true}},"required":["query"],"title":"TikTok user search input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"oneOf":[{"type":"null"},{"additionalProperties":false,"properties":{"nextCursor":{"description":"Opaque cursor for the next page of users, or null when this lane has no more. Pass it back as cursor to continue.","type":["string","null"]},"users":{"description":"Populated whenever the provider has data for the entity.","items":{"properties":{"avatarUrl":{"description":"Account avatar image URL. Signed and short-lived, so the query string is load-bearing and kept intact.","type":"string"},"followers":{"type":"integer"},"following":{"type":"integer"},"handle":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"likes":{"description":"Total likes the account has received.","type":"integer"},"nickname":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"userId":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"verified":{"description":"Whether the account carries a TikTok verification badge.","type":"boolean"},"videos":{"description":"Number of videos the account has posted.","type":"integer"}},"required":["handle","nickname","userId","followers","following"],"type":"object"},"type":"array","x-anyapi-must-populate":true}},"required":["users","nextCursor"],"type":"object"}]},"found":{"type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"TikTok user search output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"TikTok User Search","tags":["tiktok"],"x-mint":{"href":"/api-reference/tiktok/search-users"},"x-payment-info":{"price":{"amount":"0.000700","currency":"USD","mode":"fixed"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"amount":"0.001000","currency":"USD","minimumUsd":"0.001000","mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"amount":"0.000700","currency":"USD","minimumUsd":null,"mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/tiktok.song":{"post":{"description":"Fetch details for a TikTok song or sound (title, author, duration, cover art, and how many videos use it).\n\n**Price:** \\$0.90 per 1,000 requests (flat per request - same cost regardless of results returned).\n\n**Routing:** 3 independent lanes are available in execution order. A failed attempt uses the next lane only when the request's payment authorizes that lane's price; the normalized schema stays the same.\n\n**Catalog:** [TikTok Song pricing and uptime](https://getanyapi.com/api/tiktok/song) - live USD price, lane routing, and measured 30-day uptime. [Every TikTok endpoint](https://getanyapi.com/api/tiktok).","operationId":"tiktok_song","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"clipId":"7439295283975702544"},"schema":{"additionalProperties":false,"example":{"clipId":"7439295283975702544"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"clipId":{"description":"The clip identifier for the song, found in TikTok music URLs (e.g. 7439295283975702544).","type":"string"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true}},"required":["clipId"],"title":"TikTok Song input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"oneOf":[{"type":"null"},{"properties":{"album":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"author":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"coverUrl":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"duration":{"description":"Populated whenever the provider has data for the entity.","type":"integer","x-anyapi-must-populate":true},"isOriginal":{"type":"boolean"},"shareUrl":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"songId":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"title":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"videoCount":{"type":"integer"}},"required":["songId","title","author","album","duration","isOriginal","videoCount","coverUrl","shareUrl"],"type":"object"}]},"found":{"type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"TikTok Song output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"TikTok Song","tags":["tiktok"],"x-mint":{"href":"/api-reference/tiktok/song"},"x-payment-info":{"price":{"amount":"0.000900","currency":"USD","mode":"fixed"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"amount":"0.001000","currency":"USD","minimumUsd":"0.001000","mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"amount":"0.000900","currency":"USD","minimumUsd":null,"mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/tiktok.song_videos":{"post":{"description":"List TikTok videos that use a given song or sound (with descriptions, authors, and engagement stats).\n\n**Price:** \\$0.90 per 1,000 requests (flat per request - same cost regardless of results returned).\n\n**Routing:** 3 independent lanes are available in execution order. A failed attempt uses the next lane only when the request's payment authorizes that lane's price; the normalized schema stays the same.\n\n**Catalog:** [TikTok Song Videos pricing and uptime](https://getanyapi.com/api/tiktok/song-videos) - live USD price, lane routing, and measured 30-day uptime. [Every TikTok endpoint](https://getanyapi.com/api/tiktok).","operationId":"tiktok_song_videos","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"clipId":"7439295283975702544"},"schema":{"additionalProperties":false,"example":{"clipId":"7439295283975702544"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"clipId":{"description":"The song ID found in TikTok music URLs (e.g. 7439295283975702544).","type":"string"},"cursor":{"description":"Pagination cursor for retrieving the next page of results.","type":"string"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true}},"required":["clipId"],"title":"TikTok Song Videos input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"oneOf":[{"type":"null"},{"additionalProperties":false,"properties":{"hasMore":{"type":"integer"},"nextCursor":{"description":"Opaque cursor for the next page of videos, or null when this lane has no more. Pass it back as cursor to continue.","type":["string","null"]},"videos":{"description":"Populated whenever the provider has data for the entity.","items":{"properties":{"authorHandle":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"authorImage":{"description":"Author's avatar image URL. Signed and short-lived, so the query string is load-bearing and kept intact.","type":"string"},"authorName":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"authorUserId":{"description":"Author's numeric TikTok user id.","type":"string"},"collectCount":{"description":"Number of times the video was saved.","type":"integer"},"commentCount":{"type":"integer"},"createTime":{"type":"integer"},"description":{"type":"string"},"durationSeconds":{"description":"Video duration in seconds.","type":"number"},"image":{"description":"URL of the video's cover image. Signed and short-lived, so the query string is load-bearing and kept intact.","type":"string"},"likeCount":{"type":"integer"},"playCount":{"type":"integer"},"shareCount":{"type":"integer"},"url":{"description":"Canonical TikTok URL of the video.","type":"string"},"videoId":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"videoUrl":{"description":"Playable video URL. Signed and short-lived, so the query string is load-bearing and kept intact.","type":"string"}},"required":["videoId","description","authorHandle","authorName","createTime","playCount","likeCount","commentCount","shareCount"],"type":"object"},"type":"array","x-anyapi-must-populate":true}},"required":["nextCursor","hasMore","videos"],"type":"object"}]},"found":{"type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"TikTok Song Videos output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"TikTok Song Videos","tags":["tiktok"],"x-mint":{"href":"/api-reference/tiktok/song-videos"},"x-payment-info":{"price":{"amount":"0.000900","currency":"USD","mode":"fixed"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"amount":"0.001000","currency":"USD","minimumUsd":"0.001000","mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"amount":"0.000900","currency":"USD","minimumUsd":null,"mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/tiktok.top_ads_search":{"post":{"description":"Search TikTok Creative Center top video ads by keyword, with campaign objective, performance percentile, and time-window filters.\n\n**Price:** \\$1.20 per 1,000 requests (flat per request - same cost regardless of results returned).\n\n**Routing:** one lane serves this API today, so a failed attempt has nowhere to fail over to. Payment outcome follows the selected rail's settlement policy.\n\n**Catalog:** [TikTok Top Ads Search pricing and uptime](https://getanyapi.com/api/tiktok/top-ads-search) - live USD price, lane routing, and measured 30-day uptime. [Every TikTok endpoint](https://getanyapi.com/api/tiktok).","operationId":"tiktok_top_ads_search","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"query":"glasses"},"schema":{"additionalProperties":false,"example":{"query":"glasses"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"limit":{"default":20,"description":"Maximum number of ads requested for this page, from 1 through 20 (default 20).","maximum":20,"minimum":1,"type":"integer"},"objective":{"description":"Campaign objective filter. Omit it to search every objective.","enum":["traffic","app_installs","conversions","video_views","reach","lead_generation","product_sales"],"type":"string"},"page":{"default":1,"description":"One-based provider page number (default 1).","minimum":1,"type":"integer"},"performanceRank":{"description":"Ad performance percentile bucket, where top_1_20 is the highest-performing 20 percent. Omit it to search every bucket.","enum":["top_1_20","top_21_40","top_41_60","top_61_80"],"type":"string"},"period":{"default":180,"description":"Lookback period in days (default 180).","enum":[7,30,180],"type":"integer"},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"query":{"description":"Keyword to search in TikTok Creative Center top video ads.","minLength":1,"type":"string"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true}},"required":["query"],"title":"TikTok Top Ads Search input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"description":"Top-ad results and page metadata, or null when no matching ads were found.","oneOf":[{"type":"null"},{"additionalProperties":false,"properties":{"ads":{"description":"TikTok Creative Center top-ad records returned for this page. Populated whenever the provider has data for the entity.","items":{"properties":{"adId":{"description":"TikTok Creative Center ad material identifier. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"adTitle":{"description":"Title or primary copy shown for the ad. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"brandName":{"description":"Advertiser brand name when supplied by TikTok Creative Center. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"cost":{"description":"TikTok Creative Center's relative cost ranking value for the ad. Populated whenever the provider has data for the entity.","type":"number","x-anyapi-must-populate":true},"ctr":{"description":"TikTok Creative Center's click-through rate value for the ad. Populated whenever the provider has data for the entity.","type":"number","x-anyapi-must-populate":true},"durationSeconds":{"description":"Video duration in seconds. Populated whenever the provider has data for the entity.","type":"number","x-anyapi-must-populate":true},"height":{"description":"Video height in pixels. Populated whenever the provider has data for the entity.","type":"integer","x-anyapi-must-populate":true},"image":{"description":"Signed video cover image URL exactly as returned by TikTok Creative Center. Populated whenever the provider has data for the entity.","format":"uri","type":"string","x-anyapi-must-populate":true},"industry":{"description":"TikTok Creative Center industry classification key. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"likes":{"description":"Number of likes reported for the ad. Populated whenever the provider has data for the entity.","type":"integer","x-anyapi-must-populate":true},"objective":{"description":"TikTok Creative Center campaign objective key. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"videoUrl":{"description":"Signed 720p video asset URL exactly as returned by TikTok Creative Center. Populated whenever the provider has data for the entity.","format":"uri","type":"string","x-anyapi-must-populate":true},"width":{"description":"Video width in pixels. Populated whenever the provider has data for the entity.","type":"integer","x-anyapi-must-populate":true}},"required":["adId"],"type":"object"},"type":"array","x-anyapi-must-populate":true},"hasMore":{"description":"Whether TikTok Creative Center reports another page of matching ads. Populated whenever the provider has data for the entity.","type":"boolean","x-anyapi-must-populate":true},"page":{"description":"One-based page number reported by TikTok Creative Center. Populated whenever the provider has data for the entity.","type":"integer","x-anyapi-must-populate":true},"pageSize":{"description":"Page size reported by TikTok Creative Center. Populated whenever the provider has data for the entity.","type":"integer","x-anyapi-must-populate":true},"total":{"description":"Total number of matching top ads reported by TikTok Creative Center. Populated whenever the provider has data for the entity.","type":"integer","x-anyapi-must-populate":true}},"required":["page","pageSize","total","hasMore","ads"],"type":"object"}]},"found":{"description":"True when TikTok Creative Center returned at least one matching top ad.","type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"TikTok Top Ads Search output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"TikTok Top Ads Search","tags":["tiktok"],"x-mint":{"href":"/api-reference/tiktok/top-ads-search"},"x-payment-info":{"price":{"amount":"0.001200","currency":"USD","mode":"fixed"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"amount":"0.001200","currency":"USD","minimumUsd":"0.001000","mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"amount":"0.001200","currency":"USD","minimumUsd":null,"mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/tiktok.trending_feed":{"post":{"description":"Sample TikTok's For You feed as served to a viewer in one country (caption, views, likes, comments, author). Returns a rotating sample, not a ranked chart.\n\n**Price:** \\$0.80 per 1,000 requests (flat per request - same cost regardless of results returned).\n\n**Routing:** 2 independent lanes are available in execution order. A failed attempt uses the next lane only when the request's payment authorizes that lane's price; the normalized schema stays the same.\n\n**Catalog:** [TikTok Trending Feed pricing and uptime](https://getanyapi.com/api/tiktok/trending-feed) - live USD price, lane routing, and measured 30-day uptime. [Every TikTok endpoint](https://getanyapi.com/api/tiktok).","operationId":"tiktok_trending_feed","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"region":"US"},"schema":{"additionalProperties":false,"example":{"region":"US"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"region":{"description":"2-letter country code for the proxy location (e.g. \"US\").","type":"string"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"trim":{"description":"Set to true to return a simplified response.","type":"string"}},"required":["region"],"title":"TikTok Trending Feed input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"oneOf":[{"type":"null"},{"additionalProperties":false,"properties":{"videos":{"description":"Populated whenever the provider has data for the entity.","items":{"properties":{"author":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"authorImage":{"description":"Author's avatar image URL. Signed and short-lived, so the query string is load-bearing and kept intact.","type":"string"},"authorName":{"description":"Author's display name.","type":"string"},"authorUserId":{"description":"Author's numeric TikTok user id.","type":"string"},"caption":{"type":"string"},"comments":{"type":"integer"},"createdUtc":{"description":"UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds. Populated whenever the provider has data for the entity.","type":"number","x-anyapi-must-populate":true},"durationSeconds":{"description":"Video duration in seconds.","type":"number"},"id":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"image":{"description":"URL of the video's cover image. Signed and short-lived, so the query string is load-bearing and kept intact.","type":"string"},"likes":{"type":"integer"},"region":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"saves":{"description":"Save count.","type":"integer"},"shares":{"type":"integer"},"url":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"videoUrl":{"description":"Playable video URL. Signed and short-lived, so the query string is load-bearing and kept intact.","type":"string"},"views":{"type":"integer"}},"required":["id","caption","url","region","author","views","likes","comments","shares","createdUtc"],"type":"object"},"type":"array","x-anyapi-must-populate":true}},"required":["videos"],"type":"object"}]},"found":{"type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"TikTok Trending Feed output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"TikTok Trending Feed","tags":["tiktok"],"x-mint":{"href":"/api-reference/tiktok/trending-feed"},"x-payment-info":{"price":{"amount":"0.000800","currency":"USD","mode":"fixed"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"amount":"0.001000","currency":"USD","minimumUsd":"0.001000","mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"amount":"0.000800","currency":"USD","minimumUsd":null,"mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/tiktok.trending_hashtags":{"post":{"description":"Rank TikTok's trending hashtags for one country and industry, with each hashtag's daily popularity curve, post count, video views, and leading creators. Ranks 15 industry categories, or omit industry for the all-industries board. TikTok publishes only the top 3 hashtags per board to anonymous callers, so limit 1-3 is served cheaply; a limit above 3 routes to a dearer authenticated source that returns the full ranking. Covers 27 markets: AE, AR, AU, BR, CA, CO, DE, EG, ES, FR, GB, ID, IL, IT, JP, KR, MX, MY, PH, SA, SG, TH, TR, TW, US, VN, ZA.\n\n**Price:** \\$1.20 per 1,000 requests (flat per request - same cost regardless of results returned).\n\n**Routing:** 2 independent lanes are available in execution order. A failed attempt uses the next lane only when the request's payment authorizes that lane's price; the normalized schema stays the same.\n\n**Catalog:** [TikTok Trending Hashtags pricing and uptime](https://getanyapi.com/api/tiktok/trending-hashtags) - live USD price, lane routing, and measured 30-day uptime. [Every TikTok endpoint](https://getanyapi.com/api/tiktok).","operationId":"tiktok_trending_hashtags","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"limit":3,"period":7,"region":"US"},"schema":{"additionalProperties":false,"example":{"limit":3,"period":7,"region":"US"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"industry":{"description":"Restrict the ranking to one industry. Omit for the all-industries board.","enum":["apparel_accessories","baby_kids_maternity","beauty_personal_care","education","food_beverage","games","health","home_improvement","household_products","news_entertainment","pets","sports_outdoor","tech_electronics","travel","vehicle_transportation"],"type":"string"},"limit":{"default":3,"description":"Maximum number of ranked hashtags to return, from 1 through 100 (default 3). TikTok publishes only the top 3 hashtags per board to anonymous callers, so 1 through 3 is served by the cheapest source; a higher limit routes to a dearer source that reads the full ranking.","maximum":100,"minimum":1,"type":"integer"},"period":{"default":7,"description":"Lookback window in days that the ranking and the popularity curve cover (default 7).","enum":[7,30,90],"type":"integer"},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"region":{"default":"US","description":"Two-letter country code of the market whose hashtag ranking to read (default US). Each market is ranked independently, so US and DE return different boards.","enum":["US","FR","DE","IT","ES","GB","AR","AU","BR","CA","CO","EG","ID","IL","JP","KR","MY","MX","PH","SA","SG","ZA","TW","TH","TR","AE","VN"],"type":"string"},"requireFields":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Name the output fields this request must be able to return, for example `industryIds`, and it is served only by a source that returns every one of them. Fields you do not name are still returned whenever the serving source has them. This can raise your price: when the cheapest source cannot return a named field, a dearer source serves, and you are quoted and charged its price. A named field can still be absent on a hashtag that genuinely lacks it. Naming a combination that no single source returns together is refused as invalid input, with no charge.","items":{"enum":["industryIds","topCreators"],"type":"string"},"type":"array","uniqueItems":true},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true}},"title":"TikTok Trending Hashtags input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"description":"The ranked hashtags for the requested market, or null when unavailable.","oneOf":[{"type":"null"},{"additionalProperties":false,"properties":{"items":{"description":"Hashtags in the market's own ranking order, best first. Populated whenever the provider has data for the entity.","items":{"properties":{"hashtag":{"description":"Hashtag name without the leading #. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"hashtagId":{"description":"Stable TikTok hashtag identifier. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"industryIds":{"description":"TikTok industry identifiers the hashtag is classified under, matching the ids behind the `industry` input. Empty when TikTok classifies the hashtag under none.","items":{"type":"integer"},"type":"array"},"popularity":{"description":"Daily popularity curve across the requested period, oldest first. Values are normalized 0-100 within this hashtag's own window, where 100 is its peak day, so they compare days of one hashtag rather than two hashtags. Populated whenever the provider has data for the entity.","items":{"properties":{"atUtc":{"description":"UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds.","type":"number"},"value":{"description":"Normalized popularity for that day, 0 through 100.","maximum":100,"minimum":0,"type":"number"}},"required":["atUtc","value"],"type":"object"},"type":"array","x-anyapi-must-populate":true},"posts":{"description":"Number of videos published with the hashtag during the period. Populated whenever the provider has data for the entity.","type":"integer","x-anyapi-must-populate":true},"rank":{"description":"One-based position in this market's ranking for the requested period. Populated whenever the provider has data for the entity.","minimum":1,"type":"integer","x-anyapi-must-populate":true},"topCreators":{"description":"Creators TikTok surfaces as leading the hashtag, in its own order.","items":{"properties":{"countryCode":{"description":"Two-letter country code TikTok reports for the creator.","type":"string"},"followers":{"description":"Creator's follower count.","type":"integer"},"handle":{"description":"Creator's TikTok username without the leading @.","type":"string"},"image":{"description":"Creator's avatar image URL.","format":"uri","type":"string"},"nickname":{"description":"Creator's display name.","type":"string"},"rank":{"description":"One-based position among the hashtag's top creators.","minimum":1,"type":"integer"},"userId":{"description":"Creator's stable TikTok user id.","type":"string"}},"type":"object"},"type":"array"},"views":{"description":"Total video views the hashtag drew during the period. Populated whenever the provider has data for the entity.","type":"integer","x-anyapi-must-populate":true}},"required":["rank","hashtag","hashtagId"],"type":"object"},"type":"array","x-anyapi-must-populate":true}},"required":["items"],"type":"object"}]},"found":{"description":"Whether a hashtag ranking was resolved for the requested market.","type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"TikTok Trending Hashtags output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"TikTok Trending Hashtags","tags":["tiktok"],"x-mint":{"href":"/api-reference/tiktok/trending-hashtags"},"x-payment-info":{"price":{"amount":"0.001200","currency":"USD","mode":"fixed"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"amount":"0.001200","currency":"USD","minimumUsd":"0.001000","mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"amount":"0.001200","currency":"USD","minimumUsd":null,"mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/tiktok.video":{"post":{"description":"Fetch a single TikTok video by URL with its caption and engagement counts (views, likes, comments, shares, saves).\n\n**Price:** \\$0.45 per 1,000 requests (flat per request - same cost regardless of results returned).\n\n**Routing:** 4 independent lanes are available in execution order. A failed attempt uses the next lane only when the request's payment authorizes that lane's price; the normalized schema stays the same.\n\n**Catalog:** [TikTok Video pricing and uptime](https://getanyapi.com/api/tiktok/video) - live USD price, lane routing, and measured 30-day uptime. [Every TikTok endpoint](https://getanyapi.com/api/tiktok).","operationId":"tiktok_video","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"url":"https://www.tiktok.com/@mrbeast/video/7654638524729216287?_r=1\u0026u_code=elgjf3ff8cajhk\u0026preview_pb=0\u0026sharer_language=en\u0026_d=elh6737j6kjl71\u0026share_item_id=7654638524729216287\u0026source=h5_m"},"schema":{"additionalProperties":false,"anyOf":[{"required":["url"]},{"required":["id"]}],"example":{"url":"https://www.tiktok.com/@mrbeast/video/7654638524729216287?_r=1\u0026u_code=elgjf3ff8cajhk\u0026preview_pb=0\u0026sharer_language=en\u0026_d=elh6737j6kjl71\u0026share_item_id=7654638524729216287\u0026source=h5_m"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"id":{"description":"TikTok video ID, the numeric run at the end of a video URL. Use it when a listing SKU handed you an id and no URL.","type":"string"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"url":{"description":"Full TikTok video URL.","type":"string"}},"title":"TikTok video input","type":"object","x-aliases":{"videoId":"id"}}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"oneOf":[{"type":"null"},{"properties":{"authorHandle":{"description":"Author's TikTok handle, without the leading @.","type":"string"},"authorImage":{"description":"Author's avatar image URL. Signed and short-lived, so the query string is load-bearing and kept intact.","type":"string"},"authorName":{"description":"Author's display name.","type":"string"},"authorUserId":{"description":"Author's numeric TikTok user id.","type":"string"},"caption":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"comments":{"type":"integer"},"createdUtc":{"description":"UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds.","type":"number"},"durationSeconds":{"description":"Video duration in seconds.","type":"number"},"id":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"image":{"description":"URL of the video's cover/thumbnail image. A signed, short-lived TikTok CDN URL (typically expires within about a day; query params are load-bearing and kept intact), often served as HEIC rather than JPEG, so fetch it promptly and transcode if you need broad browser support. Absent when the upstream provides no cover.","type":"string"},"likes":{"type":"integer"},"region":{"type":"string"},"saves":{"type":"integer"},"shares":{"type":"integer"},"url":{"description":"Canonical TikTok URL of the video.","type":"string"},"videoUrl":{"description":"Playable video URL. Signed and short-lived, so the query string is load-bearing and kept intact.","type":"string"},"views":{"type":"integer"}},"required":["id","caption","region","views","likes","comments","shares","saves"],"type":"object"}]},"found":{"type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"TikTok video output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"TikTok Video","tags":["tiktok"],"x-mint":{"href":"/api-reference/tiktok/video"},"x-payment-info":{"price":{"amount":"0.000450","currency":"USD","mode":"fixed"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"amount":"0.001000","currency":"USD","minimumUsd":"0.001000","mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"amount":"0.000450","currency":"USD","minimumUsd":null,"mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/tiktok.video_comments":{"post":{"description":"List the comments on a TikTok video by URL with cursor pagination (text, author, likes, reply count).\n\n**Price:** \\$0.70 per 1,000 requests (flat per request - same cost regardless of results returned).\n\n**Routing:** 5 independent lanes are available in execution order. A failed attempt uses the next lane only when the request's payment authorizes that lane's price; the normalized schema stays the same.\n\n**Catalog:** [TikTok Video Comments pricing and uptime](https://getanyapi.com/api/tiktok/video-comments) - live USD price, lane routing, and measured 30-day uptime. [Every TikTok endpoint](https://getanyapi.com/api/tiktok).","operationId":"tiktok_video_comments","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"url":"https://www.tiktok.com/@zachking/video/7650468599424945422?_r=1\u0026u_code=f0hj7d780760m9\u0026preview_pb=0\u0026sharer_language=en\u0026_d=f0hj7blh067h71\u0026share_item_id=7650468599424945422\u0026source=h5_m"},"schema":{"additionalProperties":false,"example":{"url":"https://www.tiktok.com/@zachking/video/7650468599424945422?_r=1\u0026u_code=f0hj7d780760m9\u0026preview_pb=0\u0026sharer_language=en\u0026_d=f0hj7blh067h71\u0026share_item_id=7650468599424945422\u0026source=h5_m"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"cursor":{"description":"Pagination cursor from a previous response's nextCursor.","type":"string"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"url":{"description":"Full TikTok video URL.","type":"string"}},"required":["url"],"title":"TikTok video comments input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"oneOf":[{"type":"null"},{"additionalProperties":false,"properties":{"comments":{"items":{"properties":{"author":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"authorImage":{"description":"Comment author's avatar image URL. Signed and short-lived, so the query string is load-bearing and kept intact.","type":"string"},"authorName":{"description":"Comment author's display name.","type":"string"},"createdUtc":{"description":"UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds.","type":"number"},"id":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"likes":{"type":"integer"},"replies":{"type":"integer"},"text":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"videoId":{"description":"Identifier of the video the comment belongs to.","type":"string"}},"required":["id","text","author","likes","replies","createdUtc"],"type":"object"},"type":"array"},"nextCursor":{"description":"Opaque cursor for the next page of comments, or null when this lane has no more. Pass it back as cursor to continue.","type":["string","null"]}},"required":["comments","nextCursor"],"type":"object"}]},"found":{"type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"TikTok video comments output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"TikTok Video Comments","tags":["tiktok"],"x-mint":{"href":"/api-reference/tiktok/video-comments"},"x-payment-info":{"price":{"amount":"0.000700","currency":"USD","mode":"fixed"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"amount":"0.001000","currency":"USD","minimumUsd":"0.001000","mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"amount":"0.000700","currency":"USD","minimumUsd":null,"mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/tiktok.video_download":{"post":{"description":"Get the playable media files behind a TikTok video URL: the clean no-watermark MP4, the watermarked one TikTok's own save button produces, and the cover image, with duration and pixel dimensions. Photo-mode posts carry no video file - use tiktok.photos for those.\n\n**Price:** \\$0.90 per 1,000 requests (flat per request - same cost regardless of results returned).\n\n**Routing:** 3 independent lanes are available in execution order. A failed attempt uses the next lane only when the request's payment authorizes that lane's price; the normalized schema stays the same.\n\n**Catalog:** [TikTok Video Download pricing and uptime](https://getanyapi.com/api/tiktok/video-download) - live USD price, lane routing, and measured 30-day uptime. [Every TikTok endpoint](https://getanyapi.com/api/tiktok).","operationId":"tiktok_video_download","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"url":"https://www.tiktok.com/@mrbeast/video/7654638524729216287"},"schema":{"additionalProperties":false,"example":{"url":"https://www.tiktok.com/@mrbeast/video/7654638524729216287"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"requireFields":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Name the output fields this request must be able to return, for example `height` or `width`, and it is served only by a source that returns every one of them. Fields you do not name are still returned whenever the serving source has them. This can raise your price: when the cheapest source cannot return a named field, a dearer source serves, and you are quoted and charged its price. A named field can still be absent on a video that genuinely lacks it. Naming a combination that no single source returns together is refused as invalid input, with no charge.","items":{"enum":["authorHandle","authorName","authorUserId","caption","createdUtc","durationSeconds","height","image","region","url","watermarkedUrl","width"],"type":"string"},"type":"array","uniqueItems":true},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"url":{"description":"Full TikTok video URL. Share links and tracking query params are fine.","minLength":1,"type":"string"}},"required":["url"],"title":"TikTok Video Download input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"oneOf":[{"type":"null"},{"properties":{"authorHandle":{"description":"Author's TikTok handle, without the leading @.","type":"string"},"authorName":{"description":"Author's display name.","type":"string"},"authorUserId":{"description":"Author's numeric TikTok user id.","type":"string"},"caption":{"description":"Post caption.","type":"string"},"createdUtc":{"description":"UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds.","type":"number"},"durationSeconds":{"description":"Length of the video in seconds.","type":"number"},"height":{"description":"Pixel height of the video file.","type":"integer"},"id":{"description":"TikTok video id. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"image":{"description":"Cover image for the video. A signed, short-lived TikTok CDN URL, often served as HEIC rather than JPEG, so fetch it promptly and transcode if you need broad browser support.","format":"uri","type":"string"},"region":{"description":"Two-letter region code the video was published from.","type":"string"},"url":{"description":"Canonical TikTok URL of the video.","type":"string"},"videoUrl":{"description":"Direct MP4 without the TikTok watermark or handle overlay. A signed, short-lived TikTok CDN URL, so fetch it promptly; the query params are the signature and must be kept intact. Send no cookies with the request - a tt_chain_token cookie makes the CDN answer 403. Populated whenever the provider has data for the entity.","format":"uri","type":"string","x-anyapi-must-populate":true},"watermarkedUrl":{"description":"Direct MP4 carrying TikTok's watermark and the creator's handle, the same file TikTok's own save button produces. Signed and short-lived on the same terms as videoUrl.","format":"uri","type":"string"},"width":{"description":"Pixel width of the video file.","type":"integer"}},"required":["id","videoUrl"],"type":"object"}]},"found":{"description":"False when the post has no downloadable video file: a deleted or private video, or a photo-mode post (use tiktok.photos for those).","type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"TikTok Video Download output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"TikTok Video Download","tags":["tiktok"],"x-mint":{"href":"/api-reference/tiktok/video-download"},"x-payment-info":{"price":{"amount":"0.000900","currency":"USD","mode":"fixed"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"amount":"0.001000","currency":"USD","minimumUsd":"0.001000","mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"amount":"0.000900","currency":"USD","minimumUsd":null,"mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/tiktok.video_transcript":{"post":{"description":"Fetch the caption track TikTok itself published for a video, as TikTok wrote it. It is the cheapest way to get the words, and it is only as good as TikTok's own transcription: it mishears names and uncommon words, and many videos - especially non-English ones - have no caption track at all, which comes back as not found. When you need the words to be right, or there is no track to read, tiktok.video_transcript_full transcribes the audio with AnyAPI's own speech-to-text instead.\n\n**Price:** \\$1.20 per 1,000 requests (flat per request - same cost regardless of results returned).\n\n**Routing:** 2 independent lanes are available in execution order. A failed attempt uses the next lane only when the request's payment authorizes that lane's price; the normalized schema stays the same.\n\n**Catalog:** [TikTok Video Transcript (native captions) pricing and uptime](https://getanyapi.com/api/tiktok/video-transcript) - live USD price, lane routing, and measured 30-day uptime. [Every TikTok endpoint](https://getanyapi.com/api/tiktok).","operationId":"tiktok_video_transcript","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"url":"https://www.tiktok.com/@washingtonpost/video/7609177768793787679"},"schema":{"additionalProperties":false,"example":{"url":"https://www.tiktok.com/@washingtonpost/video/7609177768793787679"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"url":{"description":"Full TikTok video URL.","type":"string"}},"required":["url"],"title":"TikTok video transcript input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"oneOf":[{"type":"null"},{"properties":{"id":{"description":"TikTok video id the transcript belongs to.","type":"string"},"language":{"type":"string"},"transcript":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"url":{"description":"Canonical TikTok URL of the video.","type":"string"}},"required":["transcript"],"type":"object"}]},"found":{"type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"TikTok video transcript output","type":"object","x-anyapi-heavy":true},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"TikTok Video Transcript (native captions)","tags":["tiktok"],"x-mint":{"href":"/api-reference/tiktok/video-transcript"},"x-payment-info":{"price":{"amount":"0.001200","currency":"USD","mode":"fixed"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"amount":"0.001200","currency":"USD","minimumUsd":"0.001000","mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"amount":"0.001200","currency":"USD","minimumUsd":null,"mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/tiktok.video_transcript_full":{"post":{"description":"Transcribe the spoken audio of a TikTok video with AnyAPI's own speech-to-text: timed sentence-level segments, speaker labels, detected language, and optional per-word timings, for videos TikTok publishes no caption track for and for videos whose caption track gets the words wrong. AnyAPI downloads the video and runs the audio through MAI-Transcribe-2 rather than reading anything TikTok wrote, which is why it handles non-English speech and hears words the native captions mishear. The answer also carries the video's id, URL, creator handle, and cover image. Turn on hostVideo to also get the MP4 on a hosted link that plays without TikTok's signed, short-lived CDN URL expiring on you. If you only want whatever TikTok itself published and you want it for a tenth of the price, tiktok.video_transcript is that.\n\n**Price:** billed per audio minute - \\$1.50 per 1,000 requests base + \\$6.00 per 1,000 audio minutes, capped at \\$95.00 per 1,000 requests.\n\n**Routing:** one lane serves this API today, so a failed attempt has nowhere to fail over to. Payment outcome follows the selected rail's settlement policy.\n\n**Catalog:** [TikTok Video Transcript (AnyAPI speech to text) pricing and uptime](https://getanyapi.com/api/tiktok/video-transcript-full) - live USD price, lane routing, and measured 30-day uptime. [Every TikTok endpoint](https://getanyapi.com/api/tiktok).","operationId":"tiktok_video_transcript_full","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"url":"https://www.tiktok.com/@thatdudecancook/video/7649086431641521421"},"schema":{"additionalProperties":false,"example":{"url":"https://www.tiktok.com/@thatdudecancook/video/7649086431641521421"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"hostVideo":{"default":false,"description":"Also store the video and return a hosted MP4 link that plays without TikTok's signed CDN URL. Charged as an extra on top of the transcript.","type":"boolean"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"url":{"description":"TikTok video URL (e.g. \"https://www.tiktok.com/@user/video/1234567890\").","minLength":1,"type":"string"},"wordTimestamps":{"default":false,"description":"Return per-word timings inside each segment. Words carry timings only; the recognizer scores a phrase rather than a word, so there is no per-word confidence to report.","type":"boolean"}},"required":["url"],"title":"TikTok Video Transcript (Audio) input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"oneOf":[{"type":"null"},{"properties":{"bytes":{"description":"Size of the hosted MP4 in bytes.","minimum":0,"type":"integer"},"durationSeconds":{"description":"Video duration in seconds.","minimum":0,"type":"number"},"expiresUtc":{"description":"When the hosted link stops working. UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds.","type":"number"},"hostedUrl":{"description":"Hosted MP4 link, returned only when the request set hostVideo. It plays without TikTok's signed CDN URL and without any cookie, and it stops working at expiresUtc.","format":"uri","type":"string","x-anyapi-domain":"media.getanyapi.com"},"id":{"description":"TikTok video id.","type":"string"},"language":{"description":"Detected spoken language of the audio (BCP-47 style code, e.g. \"en\").","type":"string"},"ownerUsername":{"description":"Creator handle, without the leading @.","type":"string"},"segments":{"description":"Timed transcript segments in playback order, one per sentence, so a segment locates a specific line in the video rather than a whole speaker turn. Populated whenever the provider has data for the entity.","items":{"properties":{"endSeconds":{"description":"Segment end offset in seconds, taken from the last word it contains.","minimum":0,"type":"number"},"language":{"description":"Detected language for this segment.","type":"string"},"speaker":{"description":"Speaker label for this segment, stable within one response and meaningless across responses. Telling voices apart is a guess, not an identification, and the label is not a name.","type":"string"},"startSeconds":{"description":"Segment start offset in seconds, taken from the first word it contains.","minimum":0,"type":"number"},"text":{"description":"Text of this segment.","type":"string"},"words":{"description":"Per-word timings for this segment, returned only when the request set wordTimestamps. Words carry no confidence score: the recognizer scores a phrase rather than a word.","items":{"properties":{"endSeconds":{"description":"Word end offset in seconds.","minimum":0,"type":"number"},"startSeconds":{"description":"Word start offset in seconds.","minimum":0,"type":"number"},"text":{"description":"The recognized word, in display form with its own punctuation.","type":"string"}},"required":["text"],"type":"object"},"type":"array"}},"required":["text","startSeconds","endSeconds"],"type":"object"},"type":"array","x-anyapi-must-populate":true},"source":{"description":"How the text was produced. \"audio_asr\" means the words come from speech recognition over the video's audio, never from a caption track TikTok published - for TikTok's own captions, use tiktok.video_transcript. \"transcript_unavailable\" means recognition did not complete for this video, so the transcript is empty for that reason rather than because the video has no speech in it; the rest of the record is still what we resolved, and no audio time is charged. Populated whenever the provider has data for the entity.","enum":["audio_asr","transcript_unavailable"],"type":"string","x-anyapi-must-populate":true},"thumbnailUrl":{"description":"Cover image for the video. A signed, short-lived TikTok CDN URL, often served as HEIC rather than JPEG, so fetch it promptly and transcode if you need broad browser support.","format":"uri","type":"string"},"transcript":{"description":"Full spoken-word transcript, recognized from the video's audio track. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"url":{"description":"Canonical URL of the video this transcript came from.","format":"uri","type":"string"}},"required":["transcript","source"],"type":"object"}]},"found":{"type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"TikTok Video Transcript (AnyAPI speech to text) output","type":"object","x-anyapi-heavy":true},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"TikTok Video Transcript (AnyAPI speech to text)","tags":["tiktok"],"x-mint":{"href":"/api-reference/tiktok/video-transcript-full"},"x-payment-info":{"price":{"currency":"USD","max":"0.095000","min":"0.001500","mode":"dynamic"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"currency":"USD","max":"0.095000","min":"0.001500","minimumUsd":"0.001000","mode":"dynamic","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"currency":"USD","max":"0.095000","min":"0.001500","minimumUsd":null,"mode":"dynamic","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/tiktok_shop.categories":{"post":{"description":"List the TikTok Shop category tree for a market: top-level categories with ids, slugs, and images, each with its child categories.\n\n**Price:** \\$1.20 per 1,000 requests (flat per request - same cost regardless of results returned).\n\n**Routing:** one lane serves this API today, so a failed attempt has nowhere to fail over to. Payment outcome follows the selected rail's settlement policy.\n\n**Catalog:** [TikTok Shop Categories pricing and uptime](https://getanyapi.com/api/tiktok-shop/categories) - live USD price, lane routing, and measured 30-day uptime. [Every TikTok Shop endpoint](https://getanyapi.com/api/tiktok-shop).","operationId":"tiktok_shop_categories","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"region":"US"},"schema":{"additionalProperties":false,"example":{"region":"US"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"region":{"default":"US","description":"Country code of the TikTok Shop market whose category tree to list. Only US and VN publish a category tree.","enum":["US","VN"],"type":"string"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true}},"required":[],"title":"TikTok Shop categories input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"oneOf":[{"type":"null"},{"additionalProperties":false,"properties":{"categories":{"description":"Top-level TikTok Shop categories for the market, each with its child categories. Populated whenever the provider has data for the entity.","items":{"properties":{"categoryId":{"description":"TikTok Shop category id. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"children":{"description":"Child categories one level down.","items":{"properties":{"categoryId":{"description":"TikTok Shop category id.","type":"string"},"image":{"description":"Category image URL.","type":"string"},"isLeaf":{"description":"True when the category has no children.","type":"boolean"},"name":{"description":"Display name of the category.","type":"string"},"slug":{"description":"URL slug of the category.","type":"string"}},"required":["categoryId","name"],"type":"object"},"type":"array"},"image":{"description":"Category tile image URL.","type":"string"},"isLeaf":{"description":"True when the category has no children.","type":"boolean"},"name":{"description":"Display name of the category. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"slug":{"description":"URL slug of the category.","type":"string"}},"required":["categoryId","name"],"type":"object"},"type":"array","x-anyapi-must-populate":true}},"required":["categories"],"type":"object"}]},"found":{"type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"TikTok Shop categories output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"TikTok Shop Categories","tags":["tiktok-shop"],"x-mint":{"href":"/api-reference/tiktok-shop/categories"},"x-payment-info":{"price":{"amount":"0.001200","currency":"USD","mode":"fixed"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"amount":"0.001200","currency":"USD","minimumUsd":"0.001000","mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"amount":"0.001200","currency":"USD","minimumUsd":null,"mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/tiktok_shop.creator":{"post":{"description":"TikTok Shop creator performance by handle: GMV range, promoted product count, brand collaborations, follower age/gender/location demographics, category GMV split, and video versus live engagement.\n\n**Price:** billed per result - \\$5.50 per 1,000 requests base + \\$0.00 per 1,000 results, capped at \\$5.50 per 1,000 requests.\n\n**Routing:** one lane serves this API today, so a failed attempt has nowhere to fail over to. Payment outcome follows the selected rail's settlement policy.\n\n**Catalog:** [TikTok Shop Creator pricing and uptime](https://getanyapi.com/api/tiktok-shop/creator) - live USD price, lane routing, and measured 30-day uptime. [Every TikTok Shop endpoint](https://getanyapi.com/api/tiktok-shop).","operationId":"tiktok_shop_creator","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"handle":"golinutrition"},"schema":{"additionalProperties":false,"example":{"handle":"golinutrition"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"handle":{"description":"TikTok handle of the creator or shop account, without the @ (e.g. golinutrition).","type":"string"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"region":{"default":"us","description":"Lowercase two-letter country code of the TikTok Shop market (e.g. us).","type":"string"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true}},"required":["handle"],"title":"TikTok Shop creator input","type":"object","x-aliases":{"username":"handle"}}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"oneOf":[{"type":"null"},{"properties":{"audienceAge":{"description":"Follower age distribution.","items":{"properties":{"bucket":{"description":"Age bucket, e.g. 25-34.","type":"string"},"sharePct":{"description":"Share of followers in this bucket, as a percentage.","type":"number"}},"type":"object"},"type":"array"},"audienceGender":{"description":"Follower gender distribution.","items":{"properties":{"gender":{"description":"Gender label as published upstream.","type":"string"},"sharePct":{"description":"Share of followers, as a percentage.","type":"number"}},"type":"object"},"type":"array"},"audienceLocations":{"description":"Top follower locations.","items":{"properties":{"followers":{"description":"Followers in this location.","type":"integer"},"state":{"description":"State or region name.","type":"string"}},"type":"object"},"type":"array"},"avgCommissionRange":{"description":"Banded average affiliate commission rate the creator earns. Empty when upstream does not publish it.","type":"string"},"avgLiveLikes":{"description":"Average likes per live stream.","type":"number"},"avgLiveViews":{"description":"Average viewers per live stream.","type":"number"},"avgVideoComments":{"description":"Average comments per video.","type":"number"},"avgVideoLikes":{"description":"Average likes per video.","type":"number"},"avgVideoViews":{"description":"Average views per video.","type":"number"},"bio":{"description":"Creator bio text.","type":"string"},"brandCollaborations":{"description":"Number of distinct brands the creator has collaborated with.","type":"integer"},"categories":{"description":"TikTok Shop categories the creator sells in.","items":{"properties":{"categoryId":{"description":"TikTok Shop category id.","type":"string"},"name":{"description":"Category display name.","type":"string"}},"type":"object"},"type":"array"},"followers":{"description":"Follower count.","type":"integer"},"gmvRange":{"description":"Banded gross merchandise value the creator has driven, e.g. \"$25K-$60K\". Upstream publishes a band rather than an exact figure.","type":"string"},"gpm":{"description":"Gross merchandise value per thousand views. Zero when upstream does not publish it.","type":"number"},"handle":{"description":"TikTok handle of the creator, without the @. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"image":{"description":"Creator avatar URL.","type":"string"},"liveCount":{"description":"Number of live streams in the measured window.","type":"integer"},"liveEngagementRate":{"description":"Engagement rate on live streams, as a percentage.","type":"number"},"nickname":{"description":"Display name of the creator. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"postRate":{"description":"Share of the creator's posts that carry a shop product, as a percentage.","type":"number"},"promotedProducts":{"description":"Number of TikTok Shop products the creator has promoted.","type":"integer"},"rating":{"description":"Creator rating. Zero when upstream does not publish it.","type":"number"},"region":{"description":"Two-letter country code of the creator's TikTok Shop market.","type":"string"},"videoCount":{"description":"Number of videos posted in the measured window.","type":"integer"},"videoEngagementRate":{"description":"Engagement rate on videos, as a percentage.","type":"number"}},"required":["handle"],"type":"object"}]},"found":{"type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"TikTok Shop creator output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"TikTok Shop Creator","tags":["tiktok-shop"],"x-mint":{"href":"/api-reference/tiktok-shop/creator"},"x-payment-info":{"price":{"currency":"USD","max":"0.005500","min":"0.005500","mode":"dynamic"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"currency":"USD","max":"0.005500","min":"0.005500","minimumUsd":"0.001000","mode":"dynamic","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"currency":"USD","max":"0.005500","min":"0.005500","minimumUsd":null,"mode":"dynamic","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/tiktok_shop.product":{"post":{"description":"Fetch TikTok Shop product details (title, price, sales, seller, and ratings) from a product URL.\n\n**Price:** \\$1.20 per 1,000 requests (flat per request - same cost regardless of results returned).\n\n**Routing:** 2 independent lanes are available in execution order. A failed attempt uses the next lane only when the request's payment authorizes that lane's price; the normalized schema stays the same.\n\n**Catalog:** [TikTok Shop Product pricing and uptime](https://getanyapi.com/api/tiktok-shop/product) - live USD price, lane routing, and measured 30-day uptime. [Every TikTok Shop endpoint](https://getanyapi.com/api/tiktok-shop).","operationId":"tiktok_shop_product","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"url":"https://www.tiktok.com/shop/pdp/goli-ashwagandha-gummies-with-vitamin-d-ksm-66-vegan-non-gmo/1729587769570529799"},"schema":{"additionalProperties":false,"example":{"url":"https://www.tiktok.com/shop/pdp/goli-ashwagandha-gummies-with-vitamin-d-ksm-66-vegan-non-gmo/1729587769570529799"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"region":{"description":"Two-letter country code for the proxy location used to access region-specific products (e.g. US, GB, FR). Defaults to US.","type":"string"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"url":{"description":"TikTok Shop product detail page URL (e.g. https://www.tiktok.com/shop/pdp/.../1729587769570529799).","type":"string"}},"required":["url"],"title":"TikTok Shop Product input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"oneOf":[{"type":"null"},{"properties":{"currency":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"originalPrice":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"price":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"productId":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"rating":{"type":"number"},"reviewCount":{"type":"integer"},"sellerLocation":{"type":"string"},"sellerName":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"soldCount":{"type":"integer"},"title":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true}},"required":["productId","title","price","originalPrice","currency","soldCount","rating","reviewCount","sellerName","sellerLocation"],"type":"object"}]},"found":{"type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"TikTok Shop Product output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"TikTok Shop Product","tags":["tiktok-shop"],"x-mint":{"href":"/api-reference/tiktok-shop/product"},"x-payment-info":{"price":{"amount":"0.001200","currency":"USD","mode":"fixed"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"amount":"0.001200","currency":"USD","minimumUsd":"0.001000","mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"amount":"0.001200","currency":"USD","minimumUsd":null,"mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/tiktok_shop.product_full":{"post":{"description":"Deep TikTok Shop product record from a product URL: affiliate commission rate, units sold and GMV over the last 30 days and lifetime, stock, rating, review count, category tree, listing date, and the seller's own sales totals.\n\n**Price:** billed per result - \\$22.00 per 1,000 requests base + \\$0.00 per 1,000 results, capped at \\$22.00 per 1,000 requests.\n\n**Routing:** one lane serves this API today, so a failed attempt has nowhere to fail over to. Payment outcome follows the selected rail's settlement policy.\n\n**Catalog:** [TikTok Shop Product Full pricing and uptime](https://getanyapi.com/api/tiktok-shop/product-full) - live USD price, lane routing, and measured 30-day uptime. [Every TikTok Shop endpoint](https://getanyapi.com/api/tiktok-shop).","operationId":"tiktok_shop_product_full","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"url":"https://www.tiktok.com/shop/pdp/1729527313880355335"},"schema":{"additionalProperties":false,"example":{"url":"https://www.tiktok.com/shop/pdp/1729527313880355335"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"url":{"description":"TikTok Shop product URL. Any of the public forms works (https://www.tiktok.com/shop/pdp/\u003cid\u003e, https://shop.tiktok.com/\u003cregion\u003e/pdp/\u003cslug\u003e/\u003cid\u003e, or https://shop.tiktok.com/view/product/\u003cid\u003e); the product id is read out of it.","type":"string"}},"required":["url"],"title":"TikTok Shop product full input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"oneOf":[{"type":"null"},{"properties":{"categoryId":{"description":"Top-level TikTok Shop category id.","type":"string"},"categoryPath":{"description":"Slash-separated category breadcrumb, e.g. Health/Nutrition \u0026 Wellness/Vitamins.","type":"string"},"categoryRank":{"description":"Sales rank of this product within its category. Approximate.","type":"number"},"commissionRatePct":{"description":"Affiliate commission rate as a percentage, e.g. 25 for 25%. Zero when the product runs no open affiliate offer.","type":"number"},"currency":{"description":"ISO currency code, e.g. USD. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"gmv":{"description":"Lifetime gross merchandise value in the product's currency. Rounded upstream to three significant figures, so treat it as approximate.","type":"number"},"gmv30d":{"description":"Gross merchandise value over the last 30 days, in the product's currency. Rounded upstream to three significant figures, so treat it as approximate.","type":"number"},"image":{"description":"Primary product image URL.","type":"string"},"listedUtc":{"description":"UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds.","type":"number"},"liveCount":{"description":"Lifetime count of live streams promoting this product. Approximate.","type":"number"},"liveCount30d":{"description":"Live streams promoting this product in the last 30 days. Approximate.","type":"number"},"maxPrice":{"description":"Highest variant price.","type":"number"},"minPrice":{"description":"Lowest variant price.","type":"number"},"offShelf":{"description":"True when the listing is no longer on sale.","type":"boolean"},"price":{"description":"Current selling price in the product's currency. Populated whenever the provider has data for the entity.","type":"number","x-anyapi-must-populate":true},"productId":{"description":"TikTok Shop product id. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"rating":{"description":"Average review score.","type":"number"},"region":{"description":"Two-letter country code of the TikTok Shop market, e.g. US.","type":"string"},"reviewCount":{"description":"Number of reviews. Rounded upstream to three significant figures, so treat it as approximate.","type":"number"},"sellerGmv":{"description":"Seller's lifetime gross merchandise value. Approximate.","type":"number"},"sellerId":{"description":"TikTok Shop seller id.","type":"string"},"sellerName":{"description":"Seller shop name. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"sellerUnitsSold":{"description":"Seller's lifetime units sold across all products. Approximate.","type":"number"},"sellerUrl":{"description":"Seller storefront URL.","type":"string"},"stock":{"description":"Units currently in stock. Rounded upstream to three significant figures, so treat it as approximate.","type":"number"},"title":{"description":"Product title. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"unitsSold":{"description":"Lifetime units sold. Rounded upstream to three significant figures, so treat it as approximate.","type":"number"},"unitsSold30d":{"description":"Units sold in the last 30 days. Rounded upstream to three significant figures, so treat it as approximate.","type":"number"},"url":{"description":"Canonical product detail page URL. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"videoCount":{"description":"Lifetime count of videos promoting this product. Approximate.","type":"number"},"videoCount30d":{"description":"Videos promoting this product in the last 30 days. Approximate.","type":"number"}},"required":["productId","title"],"type":"object"}]},"found":{"type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"TikTok Shop product full output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"TikTok Shop Product Full","tags":["tiktok-shop"],"x-mint":{"href":"/api-reference/tiktok-shop/product-full"},"x-payment-info":{"price":{"currency":"USD","max":"0.022000","min":"0.022000","mode":"dynamic"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"currency":"USD","max":"0.022000","min":"0.022000","minimumUsd":"0.001000","mode":"dynamic","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"currency":"USD","max":"0.022000","min":"0.022000","minimumUsd":null,"mode":"dynamic","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/tiktok_shop.product_reviews":{"post":{"description":"Fetch customer reviews for a TikTok Shop product by URL (rating, text, reviewer, country, and verified-purchase flag).\n\n**Price:** \\$1.20 per 1,000 requests (flat per request - same cost regardless of results returned).\n\n**Routing:** 2 independent lanes are available in execution order. A failed attempt uses the next lane only when the request's payment authorizes that lane's price; the normalized schema stays the same.\n\n**Catalog:** [TikTok Shop Product Reviews pricing and uptime](https://getanyapi.com/api/tiktok-shop/product-reviews) - live USD price, lane routing, and measured 30-day uptime. [Every TikTok Shop endpoint](https://getanyapi.com/api/tiktok-shop).","operationId":"tiktok_shop_product_reviews","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"url":"https://www.tiktok.com/shop/pdp/cat-nail-clipper-by-potaroma-adjustable-sizes-built-in-file-safe-for-kittens-cats/1731578642912612516"},"schema":{"additionalProperties":false,"example":{"url":"https://www.tiktok.com/shop/pdp/cat-nail-clipper-by-potaroma-adjustable-sizes-built-in-file-safe-for-kittens-cats/1731578642912612516"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"page":{"default":1,"description":"1-based results page. Use with hasMore in the output to paginate.","minimum":1,"type":"integer"},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"region":{"description":"Two-letter country code of the product's shop region (e.g. US). Strongly recommended for correct results.","type":"string"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"url":{"description":"TikTok Shop product URL (e.g. https://www.tiktok.com/shop/pdp/.../1729385633899532161).","type":"string"}},"required":["url"],"title":"TikTok Shop product reviews input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"description":"Wrapper holding the reviews array plus totals, or null when nothing was found.","oneOf":[{"type":"null"},{"additionalProperties":false,"properties":{"hasMore":{"description":"True when more reviews are available beyond this page.","type":"boolean"},"rating":{"description":"Overall product score (1-5).","type":"number"},"reviews":{"description":"Product reviews. Populated whenever the provider has data for the entity.","items":{"properties":{"avatarUrl":{"description":"Reviewer's avatar image URL. Signed and short-lived, so the query string is load-bearing and kept intact.","type":"string"},"country":{"description":"Reviewer's country code.","type":"string"},"createdUtc":{"description":"Review time as epoch milliseconds. Populated whenever the provider has data for the entity.","type":"number","x-anyapi-must-populate":true},"id":{"description":"Review identifier. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"productId":{"description":"Identifier of the reviewed product.","type":"string"},"rating":{"description":"Star rating for this review (1-5).","type":"number"},"reviewerName":{"description":"Display name of the reviewer. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"sku":{"description":"Variant bought, e.g. \"Color: Black\". Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"text":{"description":"Review text content. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"verifiedPurchase":{"description":"True when the review is from a verified purchase.","type":"boolean"}},"required":["id","rating","text","reviewerName","country","sku","verifiedPurchase","createdUtc"],"type":"object"},"type":"array","x-anyapi-must-populate":true},"totalReviews":{"description":"Total number of reviews for the product.","type":"integer"}},"required":["totalReviews","rating","hasMore","reviews"],"type":"object"}]},"found":{"description":"True when reviews were found; false when the lookup returned nothing.","type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"TikTok Shop product reviews output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"TikTok Shop Product Reviews","tags":["tiktok-shop"],"x-mint":{"href":"/api-reference/tiktok-shop/product-reviews"},"x-payment-info":{"price":{"amount":"0.001200","currency":"USD","mode":"fixed"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"amount":"0.001200","currency":"USD","minimumUsd":"0.001000","mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"amount":"0.001200","currency":"USD","minimumUsd":null,"mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/tiktok_shop.search":{"post":{"description":"Search TikTok Shop products by keyword across 15 countries: price, sales, rating, and seller info per product, in one normalized response.\n\n**Price:** \\$1.20 per 1,000 requests (flat per request - same cost regardless of results returned).\n\n**Routing:** 2 independent lanes are available in execution order. A failed attempt uses the next lane only when the request's payment authorizes that lane's price; the normalized schema stays the same.\n\n**Catalog:** [TikTok Shop Search pricing and uptime](https://getanyapi.com/api/tiktok-shop/search) - live USD price, lane routing, and measured 30-day uptime. [Every TikTok Shop endpoint](https://getanyapi.com/api/tiktok-shop).","operationId":"tiktok_shop_search","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"limit":3,"query":"phone case"},"schema":{"additionalProperties":false,"example":{"limit":3,"query":"phone case"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"country":{"default":"US","description":"Country code of the TikTok Shop market to search (e.g. US).","enum":["US","VN","TH","PH","MY","ID","GB","SG","ES","MX","DE","IT","FR","BR","JP"],"type":"string"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"limit":{"description":"Maximum number of results to return (1-10, default 10).","maximum":10,"minimum":1,"type":"integer"},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"query":{"description":"Search keyword for TikTok Shop products (e.g. wireless earbuds).","type":"string"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true}},"required":["query"],"title":"TikTok Shop search input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"oneOf":[{"type":"null"},{"additionalProperties":false,"properties":{"items":{"description":"Product records matching the search query: id, title, price, sales count, rating, seller, and product URL. Populated whenever the provider has data for the entity.","items":{"properties":{"currency":{"description":"ISO currency name, e.g. USD.","type":"string"},"discountPct":{"description":"Discount off the original price as a percentage, e.g. 10 for 10% off. Omitted when the product is not discounted.","type":"number"},"image":{"description":"Product image URL.","type":"string"},"originalPrice":{"description":"Pre-discount list price (0 when not on sale).","type":"number"},"price":{"description":"Current sale price.","type":"number"},"productId":{"description":"TikTok Shop product id. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"rating":{"description":"Average review score.","type":"number"},"reviewCount":{"description":"Number of reviews. Omitted when the lane that served this request does not report it.","type":"integer"},"sellerId":{"description":"TikTok Shop seller id, for joining to the seller's other products.","type":"string"},"shopName":{"description":"Seller shop name.","type":"string"},"soldCount":{"description":"Units sold.","type":"integer"},"title":{"description":"Product title. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"url":{"description":"Canonical product detail page URL. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true}},"required":["productId","title"],"type":"object"},"type":"array","x-anyapi-must-populate":true}},"required":["items"],"type":"object"}]},"found":{"type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"TikTok Shop search output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"TikTok Shop Search","tags":["tiktok-shop"],"x-mint":{"href":"/api-reference/tiktok-shop/search"},"x-payment-info":{"price":{"amount":"0.001200","currency":"USD","mode":"fixed"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"amount":"0.001200","currency":"USD","minimumUsd":"0.001000","mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"amount":"0.001200","currency":"USD","minimumUsd":null,"mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/tiktok_shop.search_suggestions":{"post":{"description":"Get TikTok Shop search autocomplete terms for a keyword: the long-tail queries shoppers actually type, for keyword and demand research.\n\n**Price:** \\$1.20 per 1,000 requests (flat per request - same cost regardless of results returned).\n\n**Routing:** one lane serves this API today, so a failed attempt has nowhere to fail over to. Payment outcome follows the selected rail's settlement policy.\n\n**Catalog:** [TikTok Shop Search Suggestions pricing and uptime](https://getanyapi.com/api/tiktok-shop/search-suggestions) - live USD price, lane routing, and measured 30-day uptime. [Every TikTok Shop endpoint](https://getanyapi.com/api/tiktok-shop).","operationId":"tiktok_shop_search_suggestions","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"country":"US","query":"ashwagandha gummies"},"schema":{"additionalProperties":false,"example":{"country":"US","query":"ashwagandha gummies"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"country":{"default":"US","description":"Two-letter country code of the TikTok Shop market (e.g. US).","type":"string"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"language":{"default":"en-US","description":"Language tag for the suggestions (e.g. en-US).","type":"string"},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"query":{"description":"Seed keyword to expand (e.g. ashwagandha gummies).","type":"string"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true}},"required":["query"],"title":"TikTok Shop search suggestions input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"oneOf":[{"type":"null"},{"properties":{"suggestions":{"description":"Autocomplete terms TikTok Shop suggests for the seed keyword, most relevant first. Populated whenever the provider has data for the entity.","items":{"type":"string"},"type":"array","x-anyapi-must-populate":true}},"required":["suggestions"],"type":"object"}]},"found":{"type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"TikTok Shop search suggestions output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"TikTok Shop Search Suggestions","tags":["tiktok-shop"],"x-mint":{"href":"/api-reference/tiktok-shop/search-suggestions"},"x-payment-info":{"price":{"amount":"0.001200","currency":"USD","mode":"fixed"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"amount":"0.001200","currency":"USD","minimumUsd":"0.001000","mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"amount":"0.001200","currency":"USD","minimumUsd":null,"mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/tiktok_shop.shop_products":{"post":{"description":"List every product of a TikTok Shop store by URL (title, price, sales, and rating per product plus shop-level stats) with cursor pagination.\n\n**Price:** \\$1.20 per 1,000 requests (flat per request - same cost regardless of results returned).\n\n**Routing:** 2 independent lanes are available in execution order. A failed attempt uses the next lane only when the request's payment authorizes that lane's price; the normalized schema stays the same.\n\n**Catalog:** [TikTok Shop Store Products pricing and uptime](https://getanyapi.com/api/tiktok-shop/shop-products) - live USD price, lane routing, and measured 30-day uptime. [Every TikTok Shop endpoint](https://getanyapi.com/api/tiktok-shop).","operationId":"tiktok_shop_shop_products","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"url":"https://www.tiktok.com/shop/store/goli-nutrition/7495794203056835079"},"schema":{"additionalProperties":false,"example":{"url":"https://www.tiktok.com/shop/store/goli-nutrition/7495794203056835079"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"cursor":{"description":"Opaque pagination cursor from a previous response's nextCursor.","type":"string"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"region":{"description":"Two-letter country code of the store's market (e.g. US).","type":"string"},"sortBy":{"default":"top","description":"Product ordering within the store.","enum":["top","new_releases"],"type":"string"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"url":{"description":"TikTok Shop store URL (e.g. https://www.tiktok.com/shop/store/...).","type":"string"}},"required":["url"],"title":"TikTok Shop store products input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"oneOf":[{"type":"null"},{"additionalProperties":false,"properties":{"hasMore":{"type":"boolean"},"nextCursor":{"description":"Opaque cursor for the next page of products, or null when this lane has no more. Pass it back as cursor to continue.","type":["string","null"]},"productCount":{"type":"integer"},"products":{"description":"Populated whenever the provider has data for the entity.","items":{"properties":{"currency":{"type":"string"},"image":{"description":"Product image URL.","type":"string"},"originalPrice":{"type":"number"},"price":{"type":"number"},"productId":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"rating":{"type":"number"},"reviewCount":{"type":"integer"},"soldCount":{"type":"integer"},"title":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"url":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true}},"required":["productId","title","price","originalPrice","currency","rating","reviewCount","soldCount","url"],"type":"object"},"type":"array","x-anyapi-must-populate":true},"shopName":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"shopRating":{"type":"number"},"soldCount":{"type":"integer"}},"required":["shopName","shopRating","soldCount","productCount","hasMore","nextCursor","products"],"type":"object"}]},"found":{"type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"TikTok Shop store products output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"TikTok Shop Store Products","tags":["tiktok-shop"],"x-mint":{"href":"/api-reference/tiktok-shop/shop-products"},"x-payment-info":{"price":{"amount":"0.001200","currency":"USD","mode":"fixed"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"amount":"0.001200","currency":"USD","minimumUsd":"0.001000","mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"amount":"0.001200","currency":"USD","minimumUsd":null,"mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/tiktok_shop.user_showcase":{"post":{"description":"List the TikTok Shop products a creator showcases (title, price, rating, and sales per product).\n\n**Price:** \\$1.20 per 1,000 requests (flat per request - same cost regardless of results returned).\n\n**Routing:** one lane serves this API today, so a failed attempt has nowhere to fail over to. Payment outcome follows the selected rail's settlement policy.\n\n**Catalog:** [TikTok Shop User Showcase pricing and uptime](https://getanyapi.com/api/tiktok-shop/user-showcase) - live USD price, lane routing, and measured 30-day uptime. [Every TikTok Shop endpoint](https://getanyapi.com/api/tiktok-shop).","operationId":"tiktok_shop_user_showcase","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"handle":"mrtiktokreviews"},"schema":{"additionalProperties":false,"example":{"handle":"mrtiktokreviews"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"cursor":{"description":"Pagination token for retrieving subsequent product pages.","type":"string"},"handle":{"description":"The handle of the TikTok user (e.g. mrtiktokreviews).","type":"string"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"region":{"description":"Geographical region for proxy placement (defaults to US).","type":"string"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true}},"required":["handle"],"title":"TikTok Shop User Showcase input","type":"object","x-aliases":{"username":"handle"}}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"oneOf":[{"type":"null"},{"additionalProperties":false,"properties":{"nextCursor":{"description":"Opaque cursor for the next page of products, or null when this lane has no more. Pass it back as cursor to continue.","type":["string","null"]},"products":{"description":"Populated whenever the provider has data for the entity.","items":{"properties":{"currency":{"type":"string"},"imageUrl":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"originalPrice":{"type":"string"},"price":{"type":"string"},"productId":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"rating":{"type":"number"},"reviewCount":{"type":"integer"},"sellerId":{"description":"Identifier of the seller listing the product.","type":"string"},"soldCount":{"type":"integer"},"title":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"url":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true}},"required":["productId","title","price","originalPrice","currency","rating","reviewCount","soldCount","imageUrl","url"],"type":"object"},"type":"array","x-anyapi-must-populate":true}},"required":["nextCursor","products"],"type":"object"}]},"found":{"type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"TikTok Shop User Showcase output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"TikTok Shop User Showcase","tags":["tiktok-shop"],"x-mint":{"href":"/api-reference/tiktok-shop/user-showcase"},"x-payment-info":{"price":{"amount":"0.001200","currency":"USD","mode":"fixed"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"amount":"0.001200","currency":"USD","minimumUsd":"0.001000","mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"amount":"0.001200","currency":"USD","minimumUsd":null,"mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/tripadvisor.reviews":{"post":{"description":"Fetch the latest reviews for any Tripadvisor hotel, restaurant, or attraction by its page URL: rating, text, date, and trip details as normalized JSON.\n\n**Price:** \\$3.00 per 1,000 requests (flat per request - same cost regardless of results returned).\n\n**Routing:** 2 independent lanes are available in execution order. A failed attempt uses the next lane only when the request's payment authorizes that lane's price; the normalized schema stays the same.\n\n**Catalog:** [Tripadvisor Reviews pricing and uptime](https://getanyapi.com/api/tripadvisor/reviews) - live USD price, lane routing, and measured 30-day uptime. [Every Tripadvisor endpoint](https://getanyapi.com/api/tripadvisor).","operationId":"tripadvisor_reviews","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"limit":3,"url":"https://www.tripadvisor.com/Hotel_Review-g60763-d93450-Reviews-The_Plaza-New_York_City_New_York.html"},"schema":{"additionalProperties":false,"example":{"limit":3,"url":"https://www.tripadvisor.com/Hotel_Review-g60763-d93450-Reviews-The_Plaza-New_York_City_New_York.html"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"languages":{"description":"Only return reviews in these ISO 639-1 languages (e.g. [\"en\", \"es\"]); omit for all languages.","items":{"type":"string"},"type":"array"},"limit":{"description":"Maximum number of results to return (1-20, default 20).","maximum":20,"minimum":1,"type":"integer"},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"ratings":{"description":"Only return reviews whose bubble rating is in this set (e.g. [\"5\", \"4\"] for 4 and 5 star reviews); omit for all ratings.","items":{"enum":["1","2","3","4","5"],"type":"string"},"type":"array"},"since":{"description":"Only return reviews newer than this date, YYYY-MM-DD or a relative window like '3 months' (e.g. 2026-01-01).","type":"string"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"url":{"description":"Tripadvisor page URL of the hotel, restaurant, or attraction.","type":"string"}},"required":["url"],"title":"Tripadvisor reviews input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"description":"Result payload, or null when nothing was found.","oneOf":[{"type":"null"},{"additionalProperties":false,"properties":{"items":{"description":"Review records for the place: rating, title, review text, publish date, trip type, and reviewer details. Populated whenever the provider has data for the entity.","items":{"properties":{"author":{"description":"Reviewer display name.","type":"string"},"authorAvatarUrl":{"description":"Reviewer profile photo URL.","type":"string"},"authorId":{"description":"Tripadvisor member identifier of the reviewer.","type":"string"},"authorUrl":{"description":"Tripadvisor profile URL of the reviewer.","type":"string"},"authorVerified":{"description":"Whether Tripadvisor marks the reviewer as verified.","type":"boolean"},"createdUtc":{"description":"UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds. Populated whenever the provider has data for the entity.","type":"number","x-anyapi-must-populate":true},"helpfulVotes":{"description":"Number of helpful votes the review received.","type":"integer"},"id":{"description":"Tripadvisor review identifier.","type":"string"},"language":{"description":"Language code the review was written in.","type":"string"},"ownerResponseText":{"description":"Reply the place owner posted to this review.","type":"string"},"ownerResponseUtc":{"description":"UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds. When the owner replied.","type":"number"},"placeId":{"description":"Tripadvisor location identifier of the reviewed place.","type":"string"},"placeName":{"description":"Name of the reviewed place.","type":"string"},"rating":{"description":"Star rating (typically 1-5).","type":"number"},"stayUtc":{"description":"UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds. When the reviewer stayed or visited.","type":"number"},"text":{"description":"Review body text. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"title":{"description":"Review title or headline. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"tripType":{"description":"Trip type the reviewer selected (e.g. FAMILY, BUSINESS, COUPLES, NONE).","type":"string"},"url":{"description":"Canonical review URL. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true}},"required":["rating","text"],"type":"object"},"type":"array","x-anyapi-must-populate":true}},"required":["items"],"type":"object"}]},"found":{"description":"Whether any reviews were found for the place.","type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"Tripadvisor reviews output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"Tripadvisor Reviews","tags":["tripadvisor"],"x-mint":{"href":"/api-reference/tripadvisor/reviews"},"x-payment-info":{"price":{"amount":"0.003000","currency":"USD","mode":"fixed"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"amount":"0.003000","currency":"USD","minimumUsd":"0.001000","mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"amount":"0.003000","currency":"USD","minimumUsd":null,"mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/tripadvisor.search":{"post":{"description":"Search Tripadvisor for hotels, restaurants, and attractions in any destination and get rich place records (ratings, review counts, contact details, pricing) as normalized JSON.\n\n**Price:** \\$3.00 per 1,000 requests (flat per request - same cost regardless of results returned).\n\n**Routing:** 2 independent lanes are available in execution order. A failed attempt uses the next lane only when the request's payment authorizes that lane's price; the normalized schema stays the same.\n\n**Catalog:** [Tripadvisor Search pricing and uptime](https://getanyapi.com/api/tripadvisor/search) - live USD price, lane routing, and measured 30-day uptime. [Every Tripadvisor endpoint](https://getanyapi.com/api/tripadvisor).","operationId":"tripadvisor_search","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"limit":3,"query":"Paris"},"schema":{"additionalProperties":false,"example":{"limit":3,"query":"Paris"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"currency":{"default":"USD","description":"ISO currency code for prices (e.g. USD, EUR).","type":"string"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"includeAttractions":{"default":true,"description":"Include attractions and things to do in the results; set false to exclude them (e.g. false). Defaults to true.","type":"boolean"},"includeHotels":{"default":true,"description":"Include hotels in the results; set false to exclude them (e.g. false). Defaults to true.","type":"boolean"},"includeRestaurants":{"default":true,"description":"Include restaurants in the results; set false to exclude them (e.g. false). Defaults to true.","type":"boolean"},"limit":{"description":"Maximum number of results to return (1-20, default 20).","maximum":20,"minimum":1,"type":"integer"},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"query":{"description":"Destination or keyword to search for (e.g. Barcelona).","type":"string"},"requireFields":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Name the output fields this request must be able to return, for example `phone` or `website`, and it is served only by a source that returns every one of them. Fields you do not name are still returned whenever the serving source has them. This can raise your price: when the cheapest source cannot return a named field, a dearer source serves, and you are quoted and charged its price. A named field can still be absent on a place that genuinely lacks it. Naming a combination that no single source returns together is refused as invalid input, with no charge.","items":{"enum":["address","category","city","country","email","hotelClass","id","image","latitude","longitude","phone","postalCode","priceLevel","priceRange","ranking","reviewCount","type","website"],"type":"string"},"type":"array","uniqueItems":true},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true}},"required":["query"],"title":"Tripadvisor search input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"description":"The result wrapper, or null when nothing matched.","oneOf":[{"type":"null"},{"additionalProperties":false,"properties":{"items":{"description":"Matching Tripadvisor place records (hotels, restaurants, attractions). Populated whenever the provider has data for the entity.","items":{"properties":{"address":{"description":"Full formatted street address.","type":"string"},"category":{"description":"High-level category (e.g. hotel, restaurant, attraction).","type":"string"},"city":{"description":"City the place is in.","type":"string"},"country":{"description":"Country the place is in.","type":"string"},"email":{"description":"Business contact email, when listed.","type":"string"},"hotelClass":{"description":"Star rating / hotel class, when applicable.","type":"string"},"id":{"description":"Tripadvisor location id (stable identifier for the place).","type":"string"},"image":{"description":"Primary place photo URL.","type":"string"},"latitude":{"description":"Latitude of the place in decimal degrees.","type":"number"},"longitude":{"description":"Longitude of the place in decimal degrees.","type":"number"},"phone":{"description":"Business phone number, when listed.","type":"string"},"postalCode":{"description":"Postal code of the place.","type":"string"},"priceLevel":{"description":"Relative price level indicator (e.g. $$, $$$$).","type":"string"},"priceRange":{"description":"Nightly or per-visit price range in the requested currency.","type":"string"},"ranking":{"description":"Ranking string within its location (e.g. \"#2 of 1,885 hotels in Paris\").","type":"string"},"rating":{"description":"Average traveler rating out of 5. Populated whenever the provider has data for the entity.","type":"number","x-anyapi-must-populate":true},"reviewCount":{"description":"Total number of traveler reviews.","type":"number"},"title":{"description":"Place name. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"type":{"description":"Tripadvisor place type (e.g. HOTEL, RESTAURANT, ATTRACTION).","type":"string"},"url":{"description":"Canonical Tripadvisor listing page URL. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"website":{"description":"The place's own website URL, when listed.","type":"string"}},"required":["title","url","rating"],"type":"object"},"type":"array","x-anyapi-must-populate":true}},"required":["items"],"type":"object"}]},"found":{"description":"True when the search returned at least one matching place.","type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"Tripadvisor search output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"Tripadvisor Search","tags":["tripadvisor"],"x-mint":{"href":"/api-reference/tripadvisor/search"},"x-payment-info":{"price":{"amount":"0.003000","currency":"USD","mode":"fixed"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"amount":"0.003000","currency":"USD","minimumUsd":"0.001000","mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"amount":"0.003000","currency":"USD","minimumUsd":null,"mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/trustpilot.reviews":{"post":{"description":"Pull Trustpilot reviews for any company by brand name: star ratings, review text, dates, and reviewer details as clean JSON.\n\n**Price:** \\$0.80 per 1,000 requests (flat per request - same cost regardless of results returned).\n\n**Routing:** 3 independent lanes are available in execution order. A failed attempt uses the next lane only when the request's payment authorizes that lane's price; the normalized schema stays the same.\n\n**Catalog:** [Trustpilot Reviews pricing and uptime](https://getanyapi.com/api/trustpilot/reviews) - live USD price, lane routing, and measured 30-day uptime. [Every Trustpilot endpoint](https://getanyapi.com/api/trustpilot).","operationId":"trustpilot_reviews","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"company":"stripe.com","limit":3},"schema":{"additionalProperties":false,"example":{"company":"stripe.com","limit":3},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"company":{"description":"Brand name or Trustpilot review-page URL to fetch reviews for (e.g. nike or https://www.trustpilot.com/review/nike.com).","type":"string"},"countries":{"description":"Only return reviews from reviewers in these ISO 3166-1 alpha-2 countries (e.g. [\"US\", \"GB\"]). Omit this field for all countries and to stay on the cheapest price; a country filter routes to the dearest source.","items":{"type":"string"},"type":"array"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"languages":{"description":"Only return reviews in these ISO 639-1 languages (e.g. [\"en\", \"de\"]). Omit this field for all languages and to stay on the cheapest price; a language filter routes to the dearest source.","items":{"type":"string"},"type":"array"},"limit":{"default":200,"description":"Maximum number of results to return (1-200, default 200). Trustpilot serves at most 200 reviews per company.","maximum":200,"minimum":1,"type":"integer"},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"requireFields":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Name the output fields this request must be able to return, for example `avatarUrl`, and it is served only by a source that returns every one of them. Fields you do not name are still returned whenever the serving source has them. This can raise your price: when the cheapest source cannot return a named field, a dearer source serves, and you are quoted and charged its price. A named field can still be absent on a review that genuinely lacks it. Naming a combination that no single source returns together is refused as invalid input, with no charge.","items":{"enum":["author","authorCountry","avatarUrl","language","rating","reviewerReviewsCount","verified"],"type":"string"},"type":"array","uniqueItems":true},"sortBy":{"default":"auto","description":"Review ordering: auto, relevancy, or recent (e.g. recent).","enum":["auto","relevancy","recent"],"type":"string"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"stars":{"description":"Limit reviews to a single star rating from 1 to 5 (e.g. 5).","type":"string"},"startDate":{"description":"Only return reviews on or after this date, inclusive, in YYYY-MM-DD format (e.g. 2026-01-01). Omit this field to stay on the cheapest price; a date floor routes to the dearest source.","type":"string"},"verifiedOnly":{"default":false,"description":"Set true to return only verified reviews (e.g. true). Omit this field, or send false, to stay on the cheapest price; true routes to a dearer source.","type":"boolean"}},"required":["company"],"title":"Trustpilot reviews input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"description":"Result payload, or null when nothing was found.","oneOf":[{"type":"null"},{"additionalProperties":false,"properties":{"items":{"description":"Review records: star rating, review title and text, date, reviewer name and country, and company reply when present. Populated whenever the provider has data for the entity.","items":{"properties":{"author":{"description":"Display name of the reviewer.","type":"string"},"authorCountry":{"description":"Two-letter country code of the reviewer.","type":"string"},"avatarUrl":{"description":"URL of the reviewer's avatar image.","type":"string"},"createdUtc":{"description":"UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds. Populated whenever the provider has data for the entity.","type":"number","x-anyapi-must-populate":true},"language":{"description":"Language code of the review text, e.g. en.","type":"string"},"rating":{"description":"Star rating (1-5).","type":"number"},"reviewerReviewsCount":{"description":"Number of reviews the reviewer has written on Trustpilot.","type":"integer"},"text":{"description":"Review body text. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"title":{"description":"Review title or headline. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"url":{"description":"Canonical review URL. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"verified":{"description":"Whether the reviewer is verified.","type":"boolean"}},"required":["rating","text"],"type":"object"},"type":"array","x-anyapi-must-populate":true}},"required":["items"],"type":"object"}]},"found":{"description":"Whether any reviews were found for the company.","type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"Trustpilot reviews output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"Trustpilot Reviews","tags":["trustpilot"],"x-mint":{"href":"/api-reference/trustpilot/reviews"},"x-payment-info":{"price":{"amount":"0.000800","currency":"USD","mode":"fixed"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"amount":"0.001000","currency":"USD","minimumUsd":"0.001000","mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"amount":"0.000800","currency":"USD","minimumUsd":null,"mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/truthsocial.post":{"post":{"description":"Get a single Truth Social post by its URL - text, author, engagement (likes, comments, shares), and timestamp as clean JSON.\n\n**Price:** \\$3.60 per 1,000 requests (flat per request - same cost regardless of results returned).\n\n**Routing:** one lane serves this API today, so a failed attempt has nowhere to fail over to. Payment outcome follows the selected rail's settlement policy.\n\n**Catalog:** [Truth Social Post pricing and uptime](https://getanyapi.com/api/truthsocial/post) - live USD price, lane routing, and measured 30-day uptime. [Every Truthsocial endpoint](https://getanyapi.com/api/truthsocial).","operationId":"truthsocial_post","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"url":"https://truthsocial.com/@realDonaldTrump/posts/116824551176646175"},"schema":{"additionalProperties":false,"example":{"url":"https://truthsocial.com/@realDonaldTrump/posts/116824551176646175"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"url":{"description":"Full Truth Social post URL, e.g. \"https://truthsocial.com/@realDonaldTrump/posts/116824551176646175\".","type":"string"}},"required":["url"],"title":"Truth Social post input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"description":"The post record, or null when nothing was found.","oneOf":[{"type":"null"},{"properties":{"avatarUrl":{"description":"Avatar URL of the account that posted.","type":"string"},"comments":{"description":"Number of comments on the post.","type":"integer"},"createdUtc":{"description":"UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds. Populated whenever the provider has data for the entity.","type":"number","x-anyapi-must-populate":true},"displayName":{"description":"Display name of the author. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"id":{"description":"Post identifier. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"image":{"description":"Preview image URL for the post.","type":"string"},"likes":{"description":"Number of likes on the post.","type":"integer"},"mediaUrls":{"description":"URLs of media attached to the post.","items":{"type":"string"},"type":"array"},"shares":{"description":"Number of reblogs of the post.","type":"integer"},"text":{"description":"Post text content. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"username":{"description":"Username of the author. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"verified":{"description":"Whether the posting account is verified on Truth Social.","type":"boolean"}},"required":["id","text","username","displayName","likes","comments","shares","createdUtc"],"type":"object"}]},"found":{"description":"True when the post was found; false when the lookup returned nothing.","type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"Truth Social post output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"Truth Social Post","tags":["truthsocial"],"x-mint":{"href":"/api-reference/truthsocial/post"},"x-payment-info":{"price":{"amount":"0.003600","currency":"USD","mode":"fixed"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"amount":"0.003600","currency":"USD","minimumUsd":"0.001000","mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"amount":"0.003600","currency":"USD","minimumUsd":null,"mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/truthsocial.profile":{"post":{"description":"Get a Truth Social account's public profile by handle - display name, bio, follower/following counts, and post count as clean JSON.\n\n**Price:** \\$3.60 per 1,000 requests (flat per request - same cost regardless of results returned).\n\n**Routing:** one lane serves this API today, so a failed attempt has nowhere to fail over to. Payment outcome follows the selected rail's settlement policy.\n\n**Catalog:** [Truth Social Profile pricing and uptime](https://getanyapi.com/api/truthsocial/profile) - live USD price, lane routing, and measured 30-day uptime. [Every Truthsocial endpoint](https://getanyapi.com/api/truthsocial).","operationId":"truthsocial_profile","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"handle":"DevinNunes"},"schema":{"additionalProperties":false,"example":{"handle":"DevinNunes"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"handle":{"description":"Truth Social handle without the @, e.g. \"realDonaldTrump\".","type":"string"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true}},"required":["handle"],"title":"Truth Social profile input","type":"object","x-aliases":{"username":"handle"}}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"oneOf":[{"type":"null"},{"properties":{"avatarUrl":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"bio":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"displayName":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"followers":{"type":"integer"},"following":{"type":"integer"},"id":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"joinedAt":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"postsCount":{"type":"integer"},"private":{"type":"boolean"},"url":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"username":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"verified":{"type":"boolean"}},"required":["id","username","displayName","bio","avatarUrl","url","verified","private","followers","following","postsCount","joinedAt"],"type":"object"}]},"found":{"type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"Truth Social profile output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"Truth Social Profile","tags":["truthsocial"],"x-mint":{"href":"/api-reference/truthsocial/profile"},"x-payment-info":{"price":{"amount":"0.003600","currency":"USD","mode":"fixed"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"amount":"0.003600","currency":"USD","minimumUsd":"0.001000","mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"amount":"0.003600","currency":"USD","minimumUsd":null,"mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/truthsocial.user_posts":{"post":{"description":"List a Truth Social account's recent posts by handle - text, engagement (likes, comments, shares), and timestamps as clean JSON.\n\n**Price:** \\$3.60 per 1,000 requests (flat per request - same cost regardless of results returned).\n\n**Routing:** one lane serves this API today, so a failed attempt has nowhere to fail over to. Payment outcome follows the selected rail's settlement policy.\n\n**Catalog:** [Truth Social User Posts pricing and uptime](https://getanyapi.com/api/truthsocial/user-posts) - live USD price, lane routing, and measured 30-day uptime. [Every Truthsocial endpoint](https://getanyapi.com/api/truthsocial).","operationId":"truthsocial_user_posts","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"handle":"realDonaldTrump"},"schema":{"additionalProperties":false,"example":{"handle":"realDonaldTrump"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"cursor":{"description":"Opaque pagination cursor from a previous response's nextCursor. Omit for the first page; a page holds 20 posts.","type":"string"},"handle":{"description":"Truth Social handle without the @, e.g. \"realDonaldTrump\".","type":"string"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true}},"required":["handle"],"title":"Truth Social user posts input","type":"object","x-aliases":{"username":"handle"}}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"description":"Wrapper holding the posts array, or null when nothing was found.","oneOf":[{"type":"null"},{"additionalProperties":false,"properties":{"nextCursor":{"description":"Opaque cursor for the next page of posts, or null/empty when there are no more. Pass it back as cursor to continue.","type":["string","null"]},"posts":{"description":"The user's recent posts. Populated whenever the provider has data for the entity.","items":{"properties":{"avatarUrl":{"description":"Avatar URL of the account that posted.","type":"string"},"comments":{"description":"Number of comments on the post.","type":"integer"},"createdUtc":{"description":"UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds. Populated whenever the provider has data for the entity.","type":"number","x-anyapi-must-populate":true},"displayName":{"description":"Display name of the account that posted.","type":"string"},"id":{"description":"Post identifier. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"likes":{"description":"Number of likes on the post.","type":"integer"},"shares":{"description":"Number of reblogs of the post.","type":"integer"},"text":{"description":"Post text content. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"url":{"description":"Canonical URL of the post. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"username":{"description":"Handle of the account that posted.","type":"string"},"verified":{"description":"Whether the posting account is verified on Truth Social.","type":"boolean"}},"required":["id","url","text","likes","comments","shares","createdUtc"],"type":"object"},"type":"array","x-anyapi-must-populate":true}},"required":["posts"],"type":"object"}]},"found":{"description":"True when the user's posts were found; false when the lookup returned nothing.","type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"Truth Social user posts output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"Truth Social User Posts","tags":["truthsocial"],"x-mint":{"href":"/api-reference/truthsocial/user-posts"},"x-payment-info":{"price":{"amount":"0.003600","currency":"USD","mode":"fixed"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"amount":"0.003600","currency":"USD","minimumUsd":"0.001000","mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"amount":"0.003600","currency":"USD","minimumUsd":null,"mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/twitter.article":{"post":{"description":"Get a public X long-form article from its wrapper post URL, including its author, engagement, cover image, and structured content blocks.\n\n**Price:** \\$0.75 per 1,000 requests (flat per request - same cost regardless of results returned).\n\n**Routing:** one lane serves this API today, so a failed attempt has nowhere to fail over to. Payment outcome follows the selected rail's settlement policy.\n\n**Catalog:** [X / Twitter Article pricing and uptime](https://getanyapi.com/api/x-twitter/article) - live USD price, lane routing, and measured 30-day uptime. [Every X (Twitter) endpoint](https://getanyapi.com/api/x-twitter).","operationId":"twitter_article","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"url":"https://x.com/Decentralisedco/status/1905545699552375179"},"schema":{"additionalProperties":false,"example":{"url":"https://x.com/Decentralisedco/status/1905545699552375179"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"url":{"description":"Canonical x.com or twitter.com URL of the public wrapper post for an X Article.","pattern":"^https?://(?:(?:www|mobile)\\.)?(?:x\\.com|twitter\\.com)/(?:[A-Za-z0-9_]+|i/web)/status/[0-9]+/?(?:[?#].*)?$","type":"string"}},"required":["url"],"title":"X / Twitter Article input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"description":"Normalized public article, or null when the wrapper post is not an article.","oneOf":[{"type":"null"},{"additionalProperties":false,"properties":{"author":{"description":"Article author profile at retrieval time. Populated whenever the provider has data for the entity.","properties":{"avatarUrl":{"description":"Profile avatar image URL.","format":"uri","type":"string"},"bio":{"description":"Profile biography.","type":"string"},"blueVerified":{"description":"Whether the account has X blue verification.","type":"boolean"},"coverUrl":{"description":"Profile cover image URL when available.","format":"uri","type":"string"},"createdUtc":{"description":"UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds.","type":"number"},"followers":{"description":"Follower count at retrieval time.","minimum":0,"type":"integer"},"following":{"description":"Following count at retrieval time.","minimum":0,"type":"integer"},"handle":{"description":"Current X handle without @. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"id":{"description":"Stable numeric X user ID. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"location":{"description":"Self-reported profile location.","type":"string"},"name":{"description":"Profile display name.","type":"string"},"url":{"description":"Canonical public X profile URL. Populated whenever the provider has data for the entity.","format":"uri","type":"string","x-anyapi-must-populate":true},"verified":{"description":"Whether the account has legacy verification.","type":"boolean"}},"required":["id","handle","url"],"type":"object","x-anyapi-must-populate":true},"contentBlocks":{"description":"Ordered, explicitly normalized article blocks. Unknown future block types remain representable through type and optional fields. Populated whenever the provider has data for the entity.","items":{"properties":{"entities":{"description":"Entity references within the block text.","items":{"properties":{"key":{"description":"Upstream entity table key.","minimum":0,"type":"integer"},"length":{"description":"Entity character length.","minimum":0,"type":"integer"},"offset":{"description":"Zero-based character offset.","minimum":0,"type":"integer"}},"required":["key","offset","length"],"type":"object"},"type":"array"},"height":{"description":"Image height in pixels when supplied.","minimum":0,"type":"integer"},"image":{"description":"Canonical image URL for an image block.","format":"uri","type":"string"},"inlineStyles":{"description":"Formatting ranges within the block text.","items":{"properties":{"length":{"description":"Formatted character length.","minimum":0,"type":"integer"},"offset":{"description":"Zero-based character offset.","minimum":0,"type":"integer"},"style":{"description":"Inline style name reported by X.","type":"string"}},"required":["style","offset","length"],"type":"object"},"type":"array"},"text":{"description":"Text content for a text-bearing block.","type":"string"},"type":{"description":"Block type reported by X, such as unstyled, header-two, image, divider, blockquote, or list item. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"width":{"description":"Image width in pixels when supplied.","minimum":0,"type":"integer"}},"required":["type"],"type":"object"},"type":"array","x-anyapi-must-populate":true},"coverImage":{"description":"Canonical article cover image URL when available.","format":"uri","type":"string"},"createdUtc":{"description":"UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds. Populated whenever the provider has data for the entity.","type":"number","x-anyapi-must-populate":true},"id":{"description":"Stable X Article entity ID. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"likes":{"description":"Wrapper post like count at retrieval time.","minimum":0,"type":"integer"},"mediaCount":{"description":"Number of media items the author has published.","type":"integer"},"posts":{"description":"Number of posts the author has published.","type":"integer"},"previewText":{"description":"Preview text supplied by X.","type":"string"},"quotes":{"description":"Wrapper post quote count at retrieval time.","minimum":0,"type":"integer"},"replies":{"description":"Wrapper post reply count at retrieval time.","minimum":0,"type":"integer"},"title":{"description":"Article title. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"views":{"description":"Wrapper post view count at retrieval time.","minimum":0,"type":"integer"}},"required":["id","title","createdUtc","author","contentBlocks"],"type":"object"}]},"found":{"description":"True when the wrapper post contains a public X Article.","type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"X / Twitter Article output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"X / Twitter Article","tags":["twitter"],"x-mint":{"href":"/api-reference/x-twitter/article"},"x-payment-info":{"price":{"amount":"0.000750","currency":"USD","mode":"fixed"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"amount":"0.001000","currency":"USD","minimumUsd":"0.001000","mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"amount":"0.000750","currency":"USD","minimumUsd":null,"mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/twitter.community":{"post":{"description":"Fetch a Twitter/X community's public details (name, description, member count, join policy) by URL.\n\n**Price:** \\$0.10 per 1,000 requests (flat per request - same cost regardless of results returned).\n\n**Routing:** 3 independent lanes are available in execution order. A failed attempt uses the next lane only when the request's payment authorizes that lane's price; the normalized schema stays the same.\n\n**Catalog:** [Twitter Community pricing and uptime](https://getanyapi.com/api/x-twitter/community) - live USD price, lane routing, and measured 30-day uptime. [Every X (Twitter) endpoint](https://getanyapi.com/api/x-twitter).","operationId":"twitter_community","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"url":"https://x.com/i/communities/1926186499399139650"},"schema":{"additionalProperties":false,"example":{"url":"https://x.com/i/communities/1926186499399139650"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"url":{"description":"Community URL (e.g. https://x.com/i/communities/1926186499399139650).","type":"string"}},"required":["url"],"title":"Twitter Community input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"description":"The community record, or null when nothing was found.","oneOf":[{"type":"null"},{"properties":{"createdUtc":{"description":"UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds.","type":"number"},"creatorHandle":{"description":"Handle of the account that created the community. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"description":{"description":"Community description text. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"id":{"description":"Community identifier. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"joinPolicy":{"description":"How members join, e.g. \"open\" or \"restricted\". Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"memberCount":{"description":"Number of members in the community.","type":"integer"},"name":{"description":"Community name. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"nsfw":{"description":"Whether the community is marked not-safe-for-work.","type":"boolean"},"rules":{"description":"Rules the community publishes.","items":{"properties":{"name":{"description":"Name of the rule.","type":"string"}},"type":"object"},"type":"array"}},"required":["id","name","description","memberCount","joinPolicy","createdUtc","creatorHandle"],"type":"object"}]},"found":{"description":"True when the community was found; false when the lookup returned nothing.","type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"Twitter Community output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"Twitter Community","tags":["twitter"],"x-mint":{"href":"/api-reference/x-twitter/community"},"x-payment-info":{"price":{"amount":"0.000100","currency":"USD","mode":"fixed"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"amount":"0.001000","currency":"USD","minimumUsd":"0.001000","mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"amount":"0.000100","currency":"USD","minimumUsd":null,"mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/twitter.community_tweets":{"post":{"description":"List recent tweets posted in a Twitter/X community by URL.\n\n**Price:** \\$0.50 per 1,000 requests (flat per request - same cost regardless of results returned).\n\n**Routing:** 4 independent lanes are available in execution order. A failed attempt uses the next lane only when the request's payment authorizes that lane's price; the normalized schema stays the same.\n\n**Catalog:** [Twitter Community Tweets pricing and uptime](https://getanyapi.com/api/x-twitter/community-tweets) - live USD price, lane routing, and measured 30-day uptime. [Every X (Twitter) endpoint](https://getanyapi.com/api/x-twitter).","operationId":"twitter_community_tweets","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"url":"https://x.com/i/communities/1926186499399139650"},"schema":{"additionalProperties":false,"example":{"url":"https://x.com/i/communities/1926186499399139650"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"url":{"description":"Community URL (e.g. https://x.com/i/communities/1926186499399139650).","type":"string"}},"required":["url"],"title":"Twitter Community Tweets input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"oneOf":[{"type":"null"},{"additionalProperties":false,"properties":{"tweets":{"description":"Populated whenever the provider has data for the entity.","items":{"properties":{"authorHandle":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"authorName":{"description":"Display name of the account that posted.","type":"string"},"authorVerified":{"description":"Whether the posting account carries an X blue verification badge.","type":"boolean"},"createdUtc":{"description":"UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds. Populated whenever the provider has data for the entity.","type":"number","x-anyapi-must-populate":true},"favoriteCount":{"type":"integer"},"id":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"lang":{"description":"Two-letter language code X detected for the post.","type":"string"},"quoteCount":{"type":"integer"},"replyCount":{"type":"integer"},"retweetCount":{"type":"integer"},"text":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"views":{"description":"View count of the post.","type":"integer"}},"required":["id","text","createdUtc","favoriteCount","replyCount","retweetCount","quoteCount","authorHandle"],"type":"object"},"type":"array","x-anyapi-must-populate":true}},"required":["tweets"],"type":"object"}]},"found":{"type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"Twitter Community Tweets output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"Twitter Community Tweets","tags":["twitter"],"x-mint":{"href":"/api-reference/x-twitter/community-tweets"},"x-payment-info":{"price":{"amount":"0.000500","currency":"USD","mode":"fixed"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"amount":"0.001000","currency":"USD","minimumUsd":"0.001000","mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"amount":"0.000500","currency":"USD","minimumUsd":null,"mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/twitter.followers":{"post":{"description":"Fetch the follower list of any public X (Twitter) account by username with cursor pagination. Limit is a per-page maximum and a native page holds up to 200 accounts; follow the response's nextCursor for more.\n\n**Price:** \\$0.50 per 1,000 requests (flat per request - same cost regardless of results returned).\n\n**Routing:** 2 independent lanes are available in execution order. A failed attempt uses the next lane only when the request's payment authorizes that lane's price; the normalized schema stays the same.\n\n**Catalog:** [X / Twitter Followers pricing and uptime](https://getanyapi.com/api/x-twitter/followers) - live USD price, lane routing, and measured 30-day uptime. [Every X (Twitter) endpoint](https://getanyapi.com/api/x-twitter).","operationId":"twitter_followers","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"limit":200,"username":"nasa"},"schema":{"additionalProperties":false,"example":{"limit":200,"username":"nasa"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"cursor":{"description":"Opaque pagination cursor from a previous response's nextCursor. Omit for the first page; pass it to fetch the next page of followers.","type":"string"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"limit":{"default":200,"description":"Per-page maximum number of followers to return (default 200). A native page holds up to 200 accounts, so a larger limit still returns at most one native page; follow the response's nextCursor for more.","maximum":100000,"minimum":1,"type":"integer"},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"requireFields":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Name the output fields this request must be able to return, for example `bio`, and it is served only by a source that returns every one of them. Fields you do not name are still returned whenever the serving source has them. This can raise your price: when the cheapest source cannot return a named field, a dearer source serves, and you are quoted and charged its price. A named field can still be absent on a profile that genuinely lacks it. Naming a combination that no single source returns together is refused as invalid input, with no charge. On a paginated walk it applies to the first page only; later pages stay with the source that page chose, at the price it was quoted.","items":{"enum":["bio","createdUtc","followers","following","id","location","nextCursor","verified"],"type":"string"},"type":"array","uniqueItems":true},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"username":{"description":"The X (Twitter) username to fetch followers for, without the @ prefix (e.g. elonmusk).","type":"string"}},"required":["username"],"title":"X / Twitter followers input","type":"object","x-aliases":{"handle":"username"}}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"oneOf":[{"type":"null"},{"additionalProperties":false,"properties":{"createdUtc":{"description":"UTC epoch timestamp in seconds (Unix time) the account was created. Multiply by 1000 for a JS Date in milliseconds.","type":"number"},"id":{"description":"Numeric X user id of the account, as a string.","type":"string"},"items":{"description":"Follower records, normalized to a compact shape. Populated whenever the provider has data for the entity.","items":{"properties":{"avatarUrl":{"description":"URL of the account's profile image (may be empty). Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"bio":{"description":"The account's profile bio/description.","type":"string"},"followers":{"description":"How many followers this account has.","type":"integer"},"following":{"description":"How many accounts this account follows.","type":"integer"},"location":{"description":"The account's self-reported location (may be empty).","type":"string"},"name":{"description":"The account's display name. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"username":{"description":"The account's @ handle, without the @ prefix. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"verified":{"description":"Whether the account is verified.","type":"boolean"}},"required":["username","name","followers","verified","location","avatarUrl"],"type":"object"},"type":"array","x-anyapi-must-populate":true},"nextCursor":{"description":"Opaque cursor for the next page of followers, or null when there are no more. Pass it back as cursor to continue.","type":["string","null"]}},"required":["items"],"type":"object"}]},"found":{"type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"X / Twitter followers output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"X / Twitter Followers","tags":["twitter"],"x-mint":{"href":"/api-reference/x-twitter/followers"},"x-payment-info":{"price":{"amount":"0.000500","currency":"USD","mode":"fixed"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"amount":"0.001000","currency":"USD","minimumUsd":"0.001000","mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"amount":"0.000500","currency":"USD","minimumUsd":null,"mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/twitter.following":{"post":{"description":"List the accounts a public X (Twitter) account follows by username with cursor pagination. Limit is a per-page maximum; follow the response's nextCursor for more.\n\n**Price:** \\$0.50 per 1,000 requests (flat per request - same cost regardless of results returned).\n\n**Routing:** 2 independent lanes are available in execution order. A failed attempt uses the next lane only when the request's payment authorizes that lane's price; the normalized schema stays the same.\n\n**Catalog:** [X / Twitter Following pricing and uptime](https://getanyapi.com/api/x-twitter/following) - live USD price, lane routing, and measured 30-day uptime. [Every X (Twitter) endpoint](https://getanyapi.com/api/x-twitter).","operationId":"twitter_following","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"limit":200,"username":"nasa"},"schema":{"additionalProperties":false,"example":{"limit":200,"username":"nasa"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"cursor":{"description":"Opaque pagination cursor from a previous response's nextCursor. Omit for the first page; pass it to fetch the next page of followed accounts.","type":"string"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"limit":{"default":200,"description":"Per-page maximum number of followed accounts to return (default 200). A limit larger than the native page still returns at most one native page; follow the response's nextCursor for more.","maximum":100000,"minimum":1,"type":"integer"},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"requireFields":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Name the output fields this request must be able to return, for example `location`, and it is served only by a source that returns every one of them. Fields you do not name are still returned whenever the serving source has them. This can raise your price: when the cheapest source cannot return a named field, a dearer source serves, and you are quoted and charged its price. A named field can still be absent on a profile that genuinely lacks it. Naming a combination that no single source returns together is refused as invalid input, with no charge. On a paginated walk it applies to the first page only; later pages stay with the source that page chose, at the price it was quoted.","items":{"enum":["bio","createdUtc","followers","following","id","location","nextCursor","posts"],"type":"string"},"type":"array","uniqueItems":true},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"username":{"description":"The X (Twitter) username to fetch the following list for, without the @ prefix (e.g. elonmusk).","type":"string"}},"required":["username"],"title":"X / Twitter following input","type":"object","x-aliases":{"handle":"username"}}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"oneOf":[{"type":"null"},{"additionalProperties":false,"properties":{"createdUtc":{"description":"UTC epoch timestamp in seconds (Unix time) the account was created. Multiply by 1000 for a JS Date in milliseconds.","type":"number"},"id":{"description":"Numeric X user id of the account, as a string.","type":"string"},"items":{"description":"Followed-account records, normalized to a compact shape. Populated whenever the provider has data for the entity.","items":{"properties":{"avatarUrl":{"description":"URL of the account's profile image (may be empty). Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"bio":{"description":"The account's profile bio/description.","type":"string"},"followers":{"description":"How many followers this account has.","type":"integer"},"following":{"description":"How many accounts this account follows.","type":"integer"},"location":{"description":"The account's self-reported location (may be empty).","type":"string"},"name":{"description":"The account's display name. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"username":{"description":"The account's @ handle, without the @ prefix. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true}},"required":["username","name","bio","followers","following","avatarUrl"],"type":"object"},"type":"array","x-anyapi-must-populate":true},"nextCursor":{"description":"Opaque cursor for the next page of followed accounts, or null when there are no more. Pass it back as cursor to continue.","type":["string","null"]},"posts":{"description":"Number of posts the account has published.","type":"integer"}},"required":["items"],"type":"object"}]},"found":{"type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"X / Twitter following output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"X / Twitter Following","tags":["twitter"],"x-mint":{"href":"/api-reference/x-twitter/following"},"x-payment-info":{"price":{"amount":"0.000500","currency":"USD","mode":"fixed"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"amount":"0.001000","currency":"USD","minimumUsd":"0.001000","mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"amount":"0.000500","currency":"USD","minimumUsd":null,"mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/twitter.profile":{"post":{"description":"Fetch a Twitter/X account's public profile (followers, tweets, bio, verification) by handle.\n\n**Price:** \\$0.22 per 1,000 requests (flat per request - same cost regardless of results returned).\n\n**Routing:** 5 independent lanes are available in execution order. A failed attempt uses the next lane only when the request's payment authorizes that lane's price; the normalized schema stays the same.\n\n**Catalog:** [Twitter Profile pricing and uptime](https://getanyapi.com/api/x-twitter/profile) - live USD price, lane routing, and measured 30-day uptime. [Every X (Twitter) endpoint](https://getanyapi.com/api/x-twitter).","operationId":"twitter_profile","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"handle":"nasa"},"schema":{"additionalProperties":false,"example":{"handle":"nasa"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"handle":{"description":"Twitter/X handle without the leading @.","type":"string"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true}},"required":["handle"],"title":"Twitter profile input","type":"object","x-aliases":{"username":"handle"}}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"oneOf":[{"type":"null"},{"properties":{"avatarUrl":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"bio":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"coverUrl":{"description":"Profile banner image URL of the account.","type":"string"},"createdUtc":{"description":"UTC epoch timestamp in seconds (Unix time) the account was created. Multiply by 1000 for a JS Date in milliseconds.","type":"number"},"displayName":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"followers":{"type":"integer"},"following":{"type":"integer"},"handle":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"id":{"description":"Numeric X user id of the account, as a string.","type":"string"},"location":{"description":"Location text on the account's profile.","type":"string"},"mediaCount":{"description":"Number of media items the account has posted.","type":"integer"},"pinnedPostIds":{"description":"Ids of the posts pinned to the account's profile.","items":{"type":"string"},"type":"array"},"private":{"description":"Whether the account is protected (private).","type":"boolean"},"tweets":{"type":"integer"},"verified":{"type":"boolean"},"website":{"type":"string"}},"required":["handle","displayName","followers","following","tweets","bio","verified","avatarUrl","website"],"type":"object"}]},"found":{"type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. `suspended`: the platform has suspended the account. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found","suspended"],"type":"string"}},"required":["found","data"],"title":"Twitter profile output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"Twitter Profile","tags":["twitter"],"x-mint":{"href":"/api-reference/x-twitter/profile"},"x-payment-info":{"price":{"amount":"0.000220","currency":"USD","mode":"fixed"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"amount":"0.001000","currency":"USD","minimumUsd":"0.001000","mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"amount":"0.000220","currency":"USD","minimumUsd":null,"mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/twitter.replies":{"post":{"description":"Fetch the replies to any X (Twitter) post URL as structured records: author, text, and engagement. An empty result is valid and does not assert whether the target post exists.\n\n**Price:** \\$0.50 per 1,000 requests (flat per request - same cost regardless of results returned).\n\n**Routing:** 4 independent lanes are available in execution order. A failed attempt uses the next lane only when the request's payment authorizes that lane's price; the normalized schema stays the same.\n\n**Catalog:** [X / Twitter Post Replies pricing and uptime](https://getanyapi.com/api/x-twitter/replies) - live USD price, lane routing, and measured 30-day uptime. [Every X (Twitter) endpoint](https://getanyapi.com/api/x-twitter).","operationId":"twitter_replies","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"url":"https://x.com/jack/status/20"},"schema":{"additionalProperties":false,"example":{"url":"https://x.com/jack/status/20"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"limit":{"description":"Maximum number of results to return (1-40, default 40). Per-result lanes cost less at lower limits; a backup that bills its native page may cost up to the advertised request price.","maximum":40,"minimum":1,"type":"integer"},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"url":{"description":"Full URL of the X (Twitter) post to fetch replies for (e.g. https://x.com/nasa/status/1846987139428634858).","type":"string"}},"required":["url"],"title":"X / Twitter post replies input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"oneOf":[{"type":"null"},{"additionalProperties":false,"properties":{"conversationId":{"description":"Id of the conversation the reply belongs to, as a string.","type":"string"},"items":{"description":"Reply records for the requested post. Populated whenever the provider has data for the entity.","items":{"properties":{"authorHandle":{"description":"Screen name / handle of the reply's author, without the @ prefix.","type":"string"},"authorName":{"description":"Display name of the reply's author. Empty when the upstream omits it.","type":"string"},"createdUtc":{"description":"UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds.","type":"number"},"id":{"description":"The reply's numeric tweet ID, as a string. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"likeCount":{"description":"Number of likes on this reply.","type":"integer"},"media":{"description":"Photo, video, and GIF attachments on the post. Empty when the post has none.","items":{"properties":{"height":{"description":"Pixel height of the media item, when the lane reports it.","type":"integer"},"type":{"description":"One of photo, video, or gif.","type":"string"},"url":{"description":"Image URL. For a video or GIF this is the poster/thumbnail frame. X media URLs on pbs.twimg.com are publicly fetchable without authentication; append ?name=orig for the full-resolution original.","format":"uri","type":"string"},"videoUrl":{"description":"Playable video file URL. Present only for video and gif items.","format":"uri","type":"string"},"width":{"description":"Pixel width of the media item, when the lane reports it.","type":"integer"}},"required":["type","url"],"type":"object"},"type":"array"},"quoteCount":{"description":"Number of quote tweets of this reply.","type":"integer"},"replyCount":{"description":"Number of replies to this reply.","type":"integer"},"repostCount":{"description":"Number of reposts/retweets of this reply.","type":"integer"},"text":{"description":"The reply's text. Empty for media-only replies with no text.","type":"string"},"url":{"description":"Canonical x.com URL of the reply, with tracking query params stripped. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"viewCount":{"description":"Number of views of this reply.","type":"integer"}},"required":["id","url","text","createdUtc"],"type":"object"},"type":"array","x-anyapi-must-populate":true}},"required":["items"],"type":"object"}]},"found":{"description":"Whether the provider returned a reply result. An empty items array is valid and may mean the post has no replies or the target could not be resolved.","type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"X / Twitter post replies output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"X / Twitter Post Replies","tags":["twitter"],"x-mint":{"href":"/api-reference/x-twitter/replies"},"x-payment-info":{"price":{"amount":"0.000500","currency":"USD","mode":"fixed"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"amount":"0.001000","currency":"USD","minimumUsd":"0.001000","mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"amount":"0.000500","currency":"USD","minimumUsd":null,"mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/twitter.search":{"post":{"description":"Search X (Twitter) with full advanced-search syntax (operators like from:, since:, until:, min_faves: work inline in the query) and get structured tweets with text, author, engagement, and cursor pagination. Limit is a per-page maximum; native pages contain approximately 20 tweets unless requireSinglePage selects a bulk lane.\n\n**Price:** \\$0.65 per 1,000 requests (flat per request - same cost regardless of results returned).\n\n**Routing:** 4 independent lanes are available in execution order. A failed attempt uses the next lane only when the request's payment authorizes that lane's price; the normalized schema stays the same.\n\n**Catalog:** [X / Twitter Search pricing and uptime](https://getanyapi.com/api/x-twitter/search) - live USD price, lane routing, and measured 30-day uptime. [Every X (Twitter) endpoint](https://getanyapi.com/api/x-twitter).","operationId":"twitter_search","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"query":"openai"},"schema":{"additionalProperties":false,"example":{"query":"openai"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"cursor":{"description":"Opaque pagination cursor from a previous response's nextCursor. Omit for the first page; pass it to fetch the next page of search results.","type":"string"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"limit":{"default":20,"description":"Per-page maximum number of results to return (1-50, default 20). A provider may return a smaller native page; follow nextCursor for more.","maximum":50,"minimum":1,"type":"integer"},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"query":{"description":"Search query using X (Twitter) advanced-search syntax. IMPORTANT: bare terms are ANDed - a tweet must contain EVERY word, so a list of loosely related keywords matches nothing; use one short phrase or OR between alternatives (e.g. 'anyapi OR getanyapi'). You can embed X advanced-search operators directly in the query to filter results: from:username and to:username (author or recipient), since:YYYY-MM-DD and until:YYYY-MM-DD (date range), min_faves:N, min_retweets:N, min_replies:N (engagement floors), \"exact phrase\", -term to exclude, filter:media and filter:links and -filter:replies (content filters), lang:en, near:city, and geocode:lat,long,radius. Examples: 'from:OpenAI', 'AI agents min_faves:500 -filter:replies', 'nvidia since:2026-01-01 until:2026-03-01'. A query with no matches returns an empty items array; prefer the fewest words that identify the topic.","type":"string"},"queryType":{"default":"Latest","description":"Result ranking: 'Latest', 'Top', 'Photos', or 'Videos' (e.g. Latest).","enum":["Latest","Top","Photos","Videos"],"type":"string"},"requireFields":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Name the output fields this request must be able to return, for example `nextCursor` or `media`, and it is served only by a source that returns every one of them. Fields you do not name are still returned whenever the serving source has them. This can raise your price: when the cheapest source cannot return a named field, a dearer source serves, and you are quoted and charged its price. A named field can still be absent on a post that genuinely lacks it. Naming a combination that no single source returns together is refused as invalid input, with no charge. On a paginated walk it applies to the first page only; later pages stay with the source that page chose, at the price it was quoted.","items":{"enum":["authorFollowers","authorId","authorImage","authorVerified","bookmarkCount","conversationId","isReply","lang","likeCount","media","nextCursor","quoteCount","replyCount","retweetCount","viewCount"],"type":"string"},"type":"array","uniqueItems":true},"requireSinglePage":{"description":"Set true to get up to limit results in one response instead of provider-native pages, served by a bulk provider when needed.","type":"boolean"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true}},"required":["query"],"title":"X / Twitter search input","type":"object","x-anyapi-compat-inputs":{"lang":{"fold_into":"query","template":" lang:{value}"}}}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"oneOf":[{"type":"null"},{"additionalProperties":false,"properties":{"authorFollowers":{"description":"Follower count of the account that posted.","type":"integer"},"authorId":{"description":"Numeric X user id of the account that posted, as a string.","type":"string"},"authorImage":{"description":"Avatar image URL of the account that posted.","type":"string"},"items":{"description":"Tweet records: text, author profile, timestamp, and engagement metrics (likes, retweets, replies, views). Populated whenever the provider has data for the entity.","items":{"properties":{"authorName":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"authorUsername":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"authorVerified":{"type":"boolean"},"bookmarkCount":{"type":"integer"},"conversationId":{"type":"string"},"createdUtc":{"description":"UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds. Populated whenever the provider has data for the entity.","type":"number","x-anyapi-must-populate":true},"id":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"isReply":{"type":"boolean"},"lang":{"type":"string"},"likeCount":{"type":"integer"},"media":{"description":"Photo, video, and GIF attachments on the post. Empty when the post has none.","items":{"properties":{"height":{"description":"Pixel height of the media item, when the lane reports it.","type":"integer"},"type":{"description":"One of photo, video, or gif.","type":"string"},"url":{"description":"Image URL. For a video or GIF this is the poster/thumbnail frame. X media URLs on pbs.twimg.com are publicly fetchable without authentication; append ?name=orig for the full-resolution original.","format":"uri","type":"string"},"videoUrl":{"description":"Playable video file URL. Present only for video and gif items.","format":"uri","type":"string"},"width":{"description":"Pixel width of the media item, when the lane reports it.","type":"integer"}},"required":["type","url"],"type":"object"},"type":"array"},"quoteCount":{"type":"integer"},"replyCount":{"type":"integer"},"retweetCount":{"type":"integer"},"text":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"url":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"viewCount":{"type":"integer"}},"required":["id","url","text"],"type":"object"},"type":"array","x-anyapi-must-populate":true},"nextCursor":{"description":"Opaque cursor for the next page of search results, or null when there are no more. Pass it back as cursor to continue.","type":["string","null"]}},"required":["items"],"type":"object"}]},"found":{"type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"X / Twitter search output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"X / Twitter Search","tags":["twitter"],"x-mint":{"href":"/api-reference/x-twitter/search"},"x-payment-info":{"price":{"amount":"0.000650","currency":"USD","mode":"fixed"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"amount":"0.001000","currency":"USD","minimumUsd":"0.001000","mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"amount":"0.000650","currency":"USD","minimumUsd":null,"mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/twitter.search_communities":{"post":{"description":"Search X (Twitter) communities by keyword and get their id, name, topic, and member count with cursor pagination. This is how you find a community URL to pass to twitter.community or twitter.community_tweets.\n\n**Price:** billed per result - \\$0.10 per 1,000 requests base + \\$0.10 per 1,000 results, capped at \\$1.10 per 1,000 requests.\n\n**Routing:** one lane serves this API today, so a failed attempt has nowhere to fail over to. Payment outcome follows the selected rail's settlement policy.\n\n**Catalog:** [X / Twitter Community Search pricing and uptime](https://getanyapi.com/api/x-twitter/search-communities) - live USD price, lane routing, and measured 30-day uptime. [Every X (Twitter) endpoint](https://getanyapi.com/api/x-twitter).","operationId":"twitter_search_communities","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"query":"artificial intelligence"},"schema":{"additionalProperties":false,"example":{"query":"artificial intelligence"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"cursor":{"description":"Opaque pagination cursor from a previous response's nextCursor. Omit for the first page; pass it to fetch the next page of communities.","minLength":1,"type":"string"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"query":{"description":"Keyword to match against X (Twitter) community names and topics (e.g. artificial intelligence).","minLength":1,"type":"string"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true}},"required":["query"],"title":"X / Twitter community search input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"description":"The page of matching communities, or null when nothing was found.","oneOf":[{"type":"null"},{"additionalProperties":false,"properties":{"communities":{"description":"Matching X (Twitter) communities. Search returns a summary record; pass url to twitter.community for the full detail, or to twitter.community_tweets for its posts. Populated whenever the provider has data for the entity.","items":{"properties":{"id":{"description":"Community identifier. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"memberCount":{"description":"Number of members in the community.","type":"integer"},"name":{"description":"Community name. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"nsfw":{"description":"Whether the community is flagged as not safe for work.","type":"boolean"},"topic":{"description":"The community's primary topic label (may be empty).","type":"string"},"url":{"description":"Canonical URL of the community on X. Pass it to twitter.community or twitter.community_tweets. Populated whenever the provider has data for the entity.","format":"uri","type":"string","x-anyapi-must-populate":true}},"required":["id","name","url","memberCount","topic","nsfw"],"type":"object"},"type":"array","x-anyapi-must-populate":true},"nextCursor":{"description":"Opaque cursor for the next page of communities, or null when this lane has no more. Pass it back as cursor to continue.","type":["string","null"]}},"required":["communities","nextCursor"],"type":"object"}]},"found":{"description":"True when the search returned at least one community; false when nothing matched.","type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"X / Twitter community search output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"X / Twitter Community Search","tags":["twitter"],"x-mint":{"href":"/api-reference/x-twitter/search-communities"},"x-payment-info":{"price":{"currency":"USD","max":"0.001100","min":"0.000100","mode":"dynamic"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"currency":"USD","max":"0.001100","min":"0.001000","minimumUsd":"0.001000","mode":"dynamic","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"currency":"USD","max":"0.001100","min":"0.000100","minimumUsd":null,"mode":"dynamic","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/twitter.search_users":{"post":{"description":"Search X (Twitter) accounts by keyword - the People tab of X search. Matches handles, display names, and profile bios, and returns normalized profile records with follower, following, and post counts plus cursor pagination. Use twitter.search for posts.\n\n**Price:** \\$0.75 per 1,000 requests (flat per request - same cost regardless of results returned).\n\n**Routing:** 2 independent lanes are available in execution order. A failed attempt uses the next lane only when the request's payment authorizes that lane's price; the normalized schema stays the same.\n\n**Catalog:** [X / Twitter User Search pricing and uptime](https://getanyapi.com/api/x-twitter/search-users) - live USD price, lane routing, and measured 30-day uptime. [Every X (Twitter) endpoint](https://getanyapi.com/api/x-twitter).","operationId":"twitter_search_users","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"query":"ai agents"},"schema":{"additionalProperties":false,"example":{"query":"ai agents"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"cursor":{"description":"Opaque pagination cursor from a previous response's nextCursor. Omit for the first page; pass it to fetch the next page of accounts.","minLength":1,"type":"string"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"query":{"description":"Keyword to match against X (Twitter) handles, display names, and profile bios. This is the People tab of X search: pass a topic ('ai agents'), a name ('Elon Musk'), or a handle ('openai') and get back accounts, not posts. Use twitter.search for posts.","minLength":1,"type":"string"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true}},"required":["query"],"title":"X / Twitter user search input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"description":"The page of matching accounts, or null when nothing was found.","oneOf":[{"type":"null"},{"additionalProperties":false,"properties":{"nextCursor":{"description":"Opaque cursor for the next page of accounts, or null when this lane has no more. Pass it back as cursor to continue.","type":["string","null"]},"users":{"description":"Matching X (Twitter) accounts, normalized to a compact profile record. Populated whenever the provider has data for the entity.","items":{"properties":{"avatarUrl":{"description":"URL of the account's profile image. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"bio":{"description":"The account's profile bio/description (may be empty).","type":"string"},"canDm":{"description":"Whether the account accepts direct messages.","type":"boolean"},"coverUrl":{"description":"Profile banner image URL of the account.","type":"string"},"createdUtc":{"description":"UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds.","type":"number"},"followers":{"description":"How many followers this account has.","type":"integer"},"following":{"description":"How many accounts this account follows.","type":"integer"},"id":{"description":"The account's numeric X user id. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"listedCount":{"description":"Number of public lists the account appears on.","type":"integer"},"location":{"description":"The account's self-reported location (may be empty).","type":"string"},"name":{"description":"The account's display name. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"posts":{"description":"How many posts this account has published.","type":"integer"},"profileUrl":{"description":"Canonical URL of the account's X profile. Populated whenever the provider has data for the entity.","format":"uri","type":"string","x-anyapi-must-populate":true},"username":{"description":"The account's @ handle, without the @ prefix. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"verified":{"description":"Whether the account carries the blue verification check.","type":"boolean"}},"required":["id","username","name","profileUrl","bio","followers","following","posts","verified","location","avatarUrl","createdUtc"],"type":"object"},"type":"array","x-anyapi-must-populate":true}},"required":["users","nextCursor"],"type":"object"}]},"found":{"description":"True when the search returned at least one account; false when nothing matched.","type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"X / Twitter user search output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"X / Twitter User Search","tags":["twitter"],"x-mint":{"href":"/api-reference/x-twitter/search-users"},"x-payment-info":{"price":{"amount":"0.000750","currency":"USD","mode":"fixed"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"amount":"0.001000","currency":"USD","minimumUsd":"0.001000","mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"amount":"0.000750","currency":"USD","minimumUsd":null,"mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/twitter.thread":{"post":{"description":"Resolve the linear self-thread containing an X (Twitter) post, from its root through the author's linked continuations. This excludes replies from other users.\n\n**Price:** \\$3.75 per 1,000 requests (flat per request - same cost regardless of results returned).\n\n**Routing:** one lane serves this API today, so a failed attempt has nowhere to fail over to. Payment outcome follows the selected rail's settlement policy.\n\n**Catalog:** [X / Twitter Tweet Thread pricing and uptime](https://getanyapi.com/api/x-twitter/thread) - live USD price, lane routing, and measured 30-day uptime. [Every X (Twitter) endpoint](https://getanyapi.com/api/x-twitter).","operationId":"twitter_thread","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"url":"https://x.com/SpaceX/status/1732824684683784516"},"schema":{"additionalProperties":false,"example":{"url":"https://x.com/SpaceX/status/1732824684683784516"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"url":{"description":"Canonical x.com or twitter.com status URL with a numeric tweet ID. Any tweet in the self-thread can be supplied; the provider resolves the thread root.","pattern":"^https?://(?:(?:www|mobile)\\.)?(?:x\\.com|twitter\\.com)/(?:[A-Za-z0-9_]+|i/web)/status/[0-9]+(?:/(?:photo|video)/[0-9]+)?/?(?:[?#].*)?$","type":"string"}},"required":["url"],"title":"X / Twitter tweet thread input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"oneOf":[{"type":"null"},{"additionalProperties":false,"properties":{"author":{"properties":{"handle":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"id":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"name":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true}},"required":["id","handle","name"],"type":"object"},"avatarUrl":{"description":"Avatar image URL of the author.","type":"string"},"bio":{"description":"Bio text on the author's profile.","type":"string"},"blueVerified":{"description":"Whether the author carries an X blue verification badge.","type":"boolean"},"complete":{"description":"Whether the provider reached the end of the self-thread without hitting its internal cap.","type":"boolean"},"conversationId":{"description":"Conversation ID shared by the self-thread tweets. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"coverUrl":{"description":"Profile banner image URL of the author.","type":"string"},"createdUtc":{"description":"UTC epoch timestamp in seconds (Unix time) the author's account was created. Multiply by 1000 for a JS Date in milliseconds.","type":"number"},"followers":{"description":"Follower count of the author.","type":"integer"},"following":{"description":"Number of accounts the author follows.","type":"integer"},"location":{"description":"Location text on the author's profile.","type":"string"},"threadLength":{"description":"Number of tweets returned in the self-thread.","type":"integer"},"tweets":{"description":"Ordered self-thread tweets. Replies from other users are excluded. Populated whenever the provider has data for the entity.","items":{"properties":{"authorHandle":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"authorId":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"authorName":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"bookmarkCount":{"description":"Bookmark count of the post.","type":"integer"},"conversationId":{"type":"string"},"createdUtc":{"description":"UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds.","type":"number"},"id":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"inReplyToId":{"type":["string","null"]},"isReply":{"description":"Whether the post is a reply to another post.","type":"boolean"},"lang":{"description":"Two-letter language code X detected for the post.","type":"string"},"likeCount":{"description":"Like count of the post.","type":"integer"},"media":{"description":"Photo, video, and GIF attachments on the post. Empty when the post has none.","items":{"properties":{"height":{"description":"Pixel height of the media item, when the lane reports it.","type":"integer"},"type":{"description":"One of photo, video, or gif.","type":"string"},"url":{"description":"Image URL. For a video or GIF this is the poster/thumbnail frame. X media URLs on pbs.twimg.com are publicly fetchable without authentication; append ?name=orig for the full-resolution original.","format":"uri","type":"string"},"videoUrl":{"description":"Playable video file URL. Present only for video and gif items.","format":"uri","type":"string"},"width":{"description":"Pixel width of the media item, when the lane reports it.","type":"integer"}},"required":["type","url"],"type":"object"},"type":"array"},"quoteCount":{"description":"Quote count of the post.","type":"integer"},"replyCount":{"description":"Reply count of the post.","type":"integer"},"repostCount":{"description":"Repost count of the post.","type":"integer"},"source":{"description":"Client the post was sent from, e.g. \"Twitter Web App\".","type":"string"},"text":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"url":{"description":"Populated whenever the provider has data for the entity.","format":"uri","type":"string","x-anyapi-must-populate":true},"viewCount":{"description":"View count of the post.","type":"integer"}},"required":["id","url","text","conversationId","inReplyToId","authorId","authorHandle","authorName"],"type":"object"},"type":"array","x-anyapi-must-populate":true},"url":{"description":"Canonical X profile URL of the thread's author.","type":"string"},"verified":{"description":"Whether the author carries a legacy X verification badge.","type":"boolean"}},"required":["conversationId","threadLength","complete","author","tweets"],"type":"object"}]},"found":{"description":"Whether the provider returned a tweet thread result.","type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"X / Twitter tweet thread output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"X / Twitter Tweet Thread","tags":["twitter"],"x-mint":{"href":"/api-reference/x-twitter/thread"},"x-payment-info":{"price":{"amount":"0.003750","currency":"USD","mode":"fixed"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"amount":"0.003750","currency":"USD","minimumUsd":"0.001000","mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"amount":"0.003750","currency":"USD","minimumUsd":null,"mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/twitter.trends":{"post":{"description":"Get current X (Twitter) trends for worldwide, a country, or a city in X ranking order, including the resolved location.\n\n**Price:** \\$0.10 per 1,000 requests (flat per request - same cost regardless of results returned).\n\n**Routing:** 2 independent lanes are available in execution order. A failed attempt uses the next lane only when the request's payment authorizes that lane's price; the normalized schema stays the same.\n\n**Catalog:** [X / Twitter Trends pricing and uptime](https://getanyapi.com/api/x-twitter/trends) - live USD price, lane routing, and measured 30-day uptime. [Every X (Twitter) endpoint](https://getanyapi.com/api/x-twitter).","operationId":"twitter_trends","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"limit":10,"location":"US"},"schema":{"additionalProperties":false,"example":{"limit":10,"location":"US"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"limit":{"default":50,"description":"Maximum number of ranked trends to return (1-50, default 50).","maximum":50,"minimum":1,"type":"integer"},"location":{"description":"Country name, city name, or ISO country code. Omit for worldwide trends.","minLength":1,"type":"string"},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"requireFields":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Name the output fields this request must be able to return, for example `promoted`, and it is served only by a source that returns every one of them. Fields you do not name are still returned whenever the serving source has them. This can raise your price: when the cheapest source cannot return a named field, a dearer source serves, and you are quoted and charged its price. A named field can still be absent on a trend that genuinely lacks it. Naming a combination that no single source returns together is refused as invalid input, with no charge.","items":{"enum":["isHashtag","promoted","url"],"type":"string"},"type":"array","uniqueItems":true},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true}},"title":"X / Twitter trends input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"description":"The resolved location and its current ranked trends, or null when unavailable.","oneOf":[{"type":"null"},{"additionalProperties":false,"properties":{"asOfUtc":{"description":"UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds. Populated whenever the provider has data for the entity.","type":"number","x-anyapi-must-populate":true},"items":{"description":"Current trends in X's own ranking order. Distinct ranks may carry the same trend name. Populated whenever the provider has data for the entity.","items":{"properties":{"isHashtag":{"description":"Whether the trend text is a hashtag.","type":"boolean"},"name":{"description":"Trend text displayed by X. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"promoted":{"description":"Whether X marks the trend as promoted.","type":"boolean"},"query":{"description":"Search query corresponding to the trend. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"rank":{"description":"One-based position in X's trend ranking. Populated whenever the provider has data for the entity.","minimum":1,"type":"integer","x-anyapi-must-populate":true}},"required":["rank","name","query"],"type":"object"},"type":"array","x-anyapi-must-populate":true},"location":{"description":"Resolved X trend-location name. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"locationId":{"description":"Resolved Yahoo WOEID used by X, exposed as a stable location identifier. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"url":{"description":"X search URL for the trend.","type":"string"}},"required":["location","locationId","asOfUtc","items"],"type":"object"}]},"found":{"description":"Whether X trends were resolved for the requested location.","type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"X / Twitter trends output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"X / Twitter Trends","tags":["twitter"],"x-mint":{"href":"/api-reference/x-twitter/trends"},"x-payment-info":{"price":{"amount":"0.000100","currency":"USD","mode":"fixed"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"amount":"0.001000","currency":"USD","minimumUsd":"0.001000","mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"amount":"0.000100","currency":"USD","minimumUsd":null,"mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/twitter.tweet":{"post":{"description":"Fetch a single Twitter/X tweet by URL with its full text and engagement counts (likes, retweets, replies, quotes, bookmarks, views).\n\n**Price:** \\$0.22 per 1,000 requests (flat per request - same cost regardless of results returned).\n\n**Routing:** 4 independent lanes are available in execution order. A failed attempt uses the next lane only when the request's payment authorizes that lane's price; the normalized schema stays the same.\n\n**Catalog:** [Twitter Tweet pricing and uptime](https://getanyapi.com/api/x-twitter/tweet) - live USD price, lane routing, and measured 30-day uptime. [Every X (Twitter) endpoint](https://getanyapi.com/api/x-twitter).","operationId":"twitter_tweet","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"url":"https://x.com/SpaceX/status/1732824684683784516"},"schema":{"additionalProperties":false,"example":{"url":"https://x.com/SpaceX/status/1732824684683784516"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"requireFields":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Name the output fields this request must be able to return, for example `media` or `videoUrl`, and it is served only by a source that returns every one of them. Fields you do not name are still returned whenever the serving source has them. This can raise your price: when the cheapest source cannot return a named field, a dearer source serves, and you are quoted and charged its price. A named field can still be absent on a tweet that genuinely lacks it. Naming a combination that no single source returns together is refused as invalid input, with no charge.","items":{"enum":["authorHandle","authorImage","authorName","authorVerified","bookmarks","conversationId","height","lang","likes","media","quotes","replies","retweets","type","url","videoUrl","views","width"],"type":"string"},"type":"array","uniqueItems":true},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"url":{"description":"Canonical x.com or twitter.com status URL with a numeric tweet ID, including /i/web/status and media-share variants.","pattern":"^https?://(?:(?:www|mobile)\\.)?(?:x\\.com|twitter\\.com)/(?:[A-Za-z0-9_]+|i/web)/status/[0-9]+(?:/(?:photo|video)/[0-9]+)?/?(?:[?#].*)?$","type":"string"}},"required":["url"],"title":"Twitter tweet input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"oneOf":[{"type":"null"},{"properties":{"authorHandle":{"description":"Handle of the account that posted.","type":"string"},"authorId":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"authorImage":{"description":"Avatar image URL of the account that posted.","type":"string"},"authorName":{"description":"Display name of the account that posted.","type":"string"},"authorVerified":{"description":"Whether the posting account carries an X blue verification badge.","type":"boolean"},"bookmarks":{"type":"integer"},"conversationId":{"description":"Id of the conversation the post belongs to, as a string.","type":"string"},"createdUtc":{"description":"UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds. Populated whenever the provider has data for the entity.","type":"number","x-anyapi-must-populate":true},"id":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"lang":{"description":"Two-letter language code X detected for the post.","type":"string"},"likes":{"type":"integer"},"media":{"description":"Photo, video, and GIF attachments on the post. Empty when the post has none.","items":{"properties":{"height":{"description":"Pixel height of the media item, when the lane reports it.","type":"integer"},"type":{"description":"One of photo, video, or gif.","type":"string"},"url":{"description":"Image URL. For a video or GIF this is the poster/thumbnail frame. X media URLs on pbs.twimg.com are publicly fetchable without authentication; append ?name=orig for the full-resolution original.","format":"uri","type":"string"},"videoUrl":{"description":"Playable video file URL. Present only for video and gif items.","format":"uri","type":"string"},"width":{"description":"Pixel width of the media item, when the lane reports it.","type":"integer"}},"required":["type","url"],"type":"object"},"type":"array"},"quotes":{"type":"integer"},"replies":{"type":"integer"},"retweets":{"type":"integer"},"text":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"views":{"description":"View count, or null when X does not report one for this tweet. Distinct from 0, which means the tweet has no views.","type":["integer","null"]}},"required":["id","text","authorId","likes","retweets","replies","quotes","bookmarks","views","createdUtc"],"type":"object"}]},"found":{"type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"Twitter tweet output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"Twitter Tweet","tags":["twitter"],"x-mint":{"href":"/api-reference/x-twitter/tweet"},"x-payment-info":{"price":{"amount":"0.000220","currency":"USD","mode":"fixed"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"amount":"0.001000","currency":"USD","minimumUsd":"0.001000","mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"amount":"0.000220","currency":"USD","minimumUsd":null,"mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/twitter.tweet_transcript":{"post":{"description":"Extract the spoken transcript from a Twitter/X video tweet by URL.\n\n**Price:** \\$1.20 per 1,000 requests (flat per request - same cost regardless of results returned).\n\n**Routing:** 2 independent lanes are available in execution order. A failed attempt uses the next lane only when the request's payment authorizes that lane's price; the normalized schema stays the same.\n\n**Catalog:** [Twitter Tweet Transcript pricing and uptime](https://getanyapi.com/api/x-twitter/tweet-transcript) - live USD price, lane routing, and measured 30-day uptime. [Every X (Twitter) endpoint](https://getanyapi.com/api/x-twitter).","operationId":"twitter_tweet_transcript","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"url":"https://x.com/TheoVon/status/1916982720317821050"},"schema":{"additionalProperties":false,"example":{"url":"https://x.com/TheoVon/status/1916982720317821050"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"url":{"description":"Tweet URL of the video to transcribe (e.g. https://x.com/TheoVon/status/1916982720317821050).","type":"string"}},"required":["url"],"title":"Twitter Tweet Transcript input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"oneOf":[{"type":"null"},{"properties":{"transcript":{"type":"string"}},"required":["transcript"],"type":"object"}]},"found":{"type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"Twitter Tweet Transcript output","type":"object","x-anyapi-heavy":true},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"Twitter Tweet Transcript","tags":["twitter"],"x-mint":{"href":"/api-reference/x-twitter/tweet-transcript"},"x-payment-info":{"price":{"amount":"0.001200","currency":"USD","mode":"fixed"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"amount":"0.001200","currency":"USD","minimumUsd":"0.001000","mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"amount":"0.001200","currency":"USD","minimumUsd":null,"mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/twitter.user_posts":{"post":{"description":"Get an X (Twitter) account's profile Posts-tab timeline by handle. Results follow profile order: a pinned post may appear first, followed by otherwise reverse-chronological authored posts, reposts, quotes, and self-thread continuations.\n\n**Price:** \\$0.50 per 1,000 requests (flat per request - same cost regardless of results returned).\n\n**Routing:** 3 independent lanes are available in execution order. A failed attempt uses the next lane only when the request's payment authorizes that lane's price; the normalized schema stays the same.\n\n**Catalog:** [X / Twitter User Posts pricing and uptime](https://getanyapi.com/api/x-twitter/user-posts) - live USD price, lane routing, and measured 30-day uptime. [Every X (Twitter) endpoint](https://getanyapi.com/api/x-twitter).","operationId":"twitter_user_posts","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"handle":"levelsio"},"schema":{"additionalProperties":false,"example":{"handle":"levelsio"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"cursor":{"description":"Opaque pagination cursor from a previous response's nextCursor. Omit for the first page.","minLength":1,"type":"string"},"handle":{"description":"Twitter/X handle without the leading @.","minLength":1,"type":"string"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"requireFields":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Name the output fields this request must be able to return, for example `isPinned` or `isReply`, and it is served only by a source that returns every one of them. Fields you do not name are still returned whenever the serving source has them. This can raise your price: when the cheapest source cannot return a named field, a dearer source serves, and you are quoted and charged its price. A named field can still be absent on a tweet that genuinely lacks it. Naming a combination that no single source returns together is refused as invalid input, with no charge. On a paginated walk it applies to the first page only; later pages stay with the source that page chose, at the price it was quoted.","items":{"enum":["authorHandle","authorId","authorImage","authorName","bookmarks","conversationId","isPinned","isReply","lang","likes","media","nextCursor","quotes","replies","retweets","source","views"],"type":"string"},"type":"array","uniqueItems":true},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true}},"required":["handle"],"title":"X / Twitter user posts input","type":"object","x-aliases":{"username":"handle"}}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"description":"The Posts-tab timeline page, or null when the account was not found.","oneOf":[{"type":"null"},{"additionalProperties":false,"properties":{"nextCursor":{"description":"Opaque cursor for the next native Posts-tab page, or null when no more pages are available.","type":["string","null"]},"tweets":{"description":"Posts in profile order. A pinned post may appear before otherwise reverse-chronological results. Populated whenever the provider has data for the entity.","items":{"properties":{"authorHandle":{"description":"Handle of the account that posted.","type":"string"},"authorId":{"description":"Numeric X user id of the account that posted, as a string.","type":"string"},"authorImage":{"description":"Avatar image URL of the account that posted.","type":"string"},"authorName":{"description":"Display name of the account that posted.","type":"string"},"bookmarks":{"description":"Number of bookmarks.","type":"integer"},"conversationId":{"description":"Id of the conversation the post belongs to, as a string.","type":"string"},"createdUtc":{"description":"UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds. Populated whenever the provider has data for the entity.","type":"number","x-anyapi-must-populate":true},"id":{"description":"The post's numeric tweet ID, represented as a string. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"isPinned":{"description":"Whether X marks the post as pinned on the profile, or null when the serving source does not publish it.","type":["boolean","null"]},"isReply":{"description":"Whether X marks the record as a reply. Certified Posts-tab captures use this for self-thread continuations.","type":"boolean"},"lang":{"description":"Language code reported for the post, when available.","type":"string"},"likes":{"description":"Number of likes.","type":"integer"},"media":{"description":"Photo, video, and GIF attachments on the post. Empty when the post has none.","items":{"properties":{"height":{"type":"integer"},"type":{"description":"One of photo, video, or gif.","type":"string"},"url":{"description":"Image URL. For a video or GIF this is the poster/thumbnail frame. X media URLs on pbs.twimg.com are publicly fetchable without authentication; append ?name=orig for the full-resolution original.","format":"uri","type":"string"},"videoUrl":{"description":"Playable video file URL. Present only for video and gif items.","format":"uri","type":"string"},"width":{"type":"integer"}},"required":["type","url"],"type":"object"},"type":"array"},"quotes":{"description":"Number of quote posts.","type":"integer"},"replies":{"description":"Number of replies.","type":"integer"},"retweets":{"description":"Number of reposts or retweets.","type":"integer"},"source":{"description":"Client the post was sent from, e.g. \"Twitter Web App\".","type":"string"},"text":{"description":"The post text. Empty for media-only posts. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"url":{"description":"Canonical x.com URL of the post. Populated whenever the provider has data for the entity.","format":"uri","type":"string","x-anyapi-must-populate":true},"views":{"description":"Number of views.","type":"integer"}},"required":["id","url","text","createdUtc","likes","retweets","replies","views","bookmarks","isPinned"],"type":"object"},"type":"array","x-anyapi-must-populate":true}},"required":["tweets","nextCursor"],"type":"object"}]},"found":{"description":"Whether the account's Posts-tab timeline was returned.","type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. `suspended`: the platform has suspended the account. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found","suspended"],"type":"string"}},"required":["found","data"],"title":"X / Twitter user posts output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"X / Twitter User Posts","tags":["twitter"],"x-mint":{"href":"/api-reference/x-twitter/user-posts"},"x-payment-info":{"price":{"amount":"0.000500","currency":"USD","mode":"fixed"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"amount":"0.001000","currency":"USD","minimumUsd":"0.001000","mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"amount":"0.000500","currency":"USD","minimumUsd":null,"mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/twitter.user_tweets":{"post":{"description":"Get up to the requested limit of tweets and replies authored by an X (Twitter) account, with engagement, views, language, and cursor pagination where available.\n\n**Price:** \\$0.50 per 1,000 requests (flat per request - same cost regardless of results returned).\n\n**Routing:** 3 independent lanes are available in execution order. A failed attempt uses the next lane only when the request's payment authorizes that lane's price; the normalized schema stays the same.\n\n**Catalog:** [X / Twitter User Tweets and Replies pricing and uptime](https://getanyapi.com/api/x-twitter/user-tweets) - live USD price, lane routing, and measured 30-day uptime. [Every X (Twitter) endpoint](https://getanyapi.com/api/x-twitter).","operationId":"twitter_user_tweets","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"handle":"levelsio","limit":20},"schema":{"additionalProperties":false,"example":{"handle":"levelsio","limit":20},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"cursor":{"description":"Opaque pagination cursor from a previous response's nextCursor. Omit for the first page.","type":"string"},"handle":{"description":"Twitter/X handle without the leading @.","type":"string"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"limit":{"default":20,"description":"Maximum number of authored tweets and replies to return in THIS page (1-100). Sources return fewer - most cap at 20 - so read `nextCursor` and pass it back as `cursor` to walk further rather than asking for one large page.","maximum":100,"minimum":1,"type":"integer"},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"requireFields":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Name the output fields this request must be able to return, for example `isPinned` or `nextCursor`, and it is served only by a source that returns every one of them. Fields you do not name are still returned whenever the serving source has them. This can raise your price: when the cheapest source cannot return a named field, a dearer source serves, and you are quoted and charged its price. A named field can still be absent on a post that genuinely lacks it. Naming a combination that no single source returns together is refused as invalid input, with no charge. On a paginated walk it applies to the first page only; later pages stay with the source that page chose, at the price it was quoted.","items":{"enum":["authorHandle","authorId","authorImage","authorName","bookmarks","conversationId","isPinned","isReply","lang","likes","media","nextCursor","quotes","replies","retweets","source","views"],"type":"string"},"type":"array","uniqueItems":true},"requireSinglePage":{"description":"Require a lane that can return the requested limit in one response.","type":"boolean"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true}},"required":["handle"],"title":"Twitter user tweets input","type":"object","x-aliases":{"username":"handle"}}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"oneOf":[{"type":"null"},{"additionalProperties":false,"properties":{"nextCursor":{"description":"Opaque cursor for the next page when the selected lane supports pagination, otherwise null.","type":["string","null"]},"tweets":{"description":"Populated whenever the provider has data for the entity.","items":{"properties":{"authorHandle":{"description":"Handle of the account that posted.","type":"string"},"authorId":{"description":"Numeric X user id of the account that posted, as a string.","type":"string"},"authorImage":{"description":"Avatar image URL of the account that posted.","type":"string"},"authorName":{"description":"Display name of the account that posted.","type":"string"},"bookmarks":{"type":"integer"},"conversationId":{"description":"Id of the conversation the post belongs to, as a string.","type":"string"},"createdUtc":{"description":"UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds. Populated whenever the provider has data for the entity.","type":"number","x-anyapi-must-populate":true},"id":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"isPinned":{"description":"Whether X marks the post as pinned on the profile, or null when the serving source does not publish it.","type":["boolean","null"]},"isReply":{"type":"boolean"},"lang":{"type":"string"},"likes":{"type":"integer"},"media":{"description":"Photo, video, and GIF attachments on the post. Empty when the post has none.","items":{"properties":{"height":{"type":"integer"},"type":{"description":"One of photo, video, or gif.","type":"string"},"url":{"description":"Image URL. For a video or GIF this is the poster/thumbnail frame. X media URLs on pbs.twimg.com are publicly fetchable without authentication; append ?name=orig for the full-resolution original.","format":"uri","type":"string"},"videoUrl":{"description":"Playable video file URL. Present only for video and gif items.","format":"uri","type":"string"},"width":{"type":"integer"}},"required":["type","url"],"type":"object"},"type":"array"},"quotes":{"type":"integer"},"replies":{"type":"integer"},"retweets":{"type":"integer"},"source":{"description":"Client the post was sent from, e.g. \"Twitter Web App\".","type":"string"},"text":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"url":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"views":{"type":"integer"}},"required":["id","url","text","createdUtc","likes","retweets","replies","views","bookmarks","isPinned"],"type":"object"},"type":"array","x-anyapi-must-populate":true}},"required":["tweets"],"type":"object"}]},"found":{"type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"Twitter user tweets output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"X / Twitter User Tweets and Replies","tags":["twitter"],"x-mint":{"href":"/api-reference/x-twitter/user-tweets"},"x-payment-info":{"price":{"amount":"0.000500","currency":"USD","mode":"fixed"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"amount":"0.001000","currency":"USD","minimumUsd":"0.001000","mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"amount":"0.000500","currency":"USD","minimumUsd":null,"mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/upwork.jobs":{"post":{"description":"Search Upwork job postings by keyword, with up to 25 fresh listings per request.\n\n**Price:** billed per result - \\$1.10 per 1,000 requests base + \\$1.10 per 1,000 results, capped at \\$28.60 per 1,000 requests.\n\n**Routing:** one lane serves this API today, so a failed attempt has nowhere to fail over to. Payment outcome follows the selected rail's settlement policy.\n\n**Catalog:** [Upwork Jobs pricing and uptime](https://getanyapi.com/api/upwork/jobs) - live USD price, lane routing, and measured 30-day uptime. [Every Upwork endpoint](https://getanyapi.com/api/upwork).","operationId":"upwork_jobs","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"jobType":"fixed","limit":10,"query":"web developer"},"schema":{"additionalProperties":false,"example":{"jobType":"fixed","limit":10,"query":"web developer"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"experienceLevel":{"description":"Filter by required experience level.","enum":["entry","intermediate","expert"],"type":"string"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"jobType":{"description":"Filter by payment type: fixed-price or hourly jobs.","enum":["fixed","hourly"],"type":"string"},"limit":{"description":"Maximum number of results to return (10-25, default 25). You are billed per result returned, so a lower limit costs less.","maximum":25,"minimum":10,"type":"integer"},"location":{"description":"Filter by client location - a region, subregion, or country (e.g. United States, Europe).","type":"string"},"paymentVerified":{"description":"When true, only return jobs from clients with a verified payment method.","type":"boolean"},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"query":{"description":"Keywords to search Upwork jobs for (e.g. react developer).","type":"string"},"sort":{"default":"newest","description":"Sort order for listings: newest or relevance (e.g. newest).","enum":["newest","relevance"],"type":"string"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true}},"required":["query"],"title":"Upwork Jobs input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"description":"Result payload, or null when nothing was found.","oneOf":[{"type":"null"},{"additionalProperties":false,"properties":{"items":{"description":"Job records: title, description, budget or hourly rate, required skills, posted date, and client details. Populated whenever the provider has data for the entity.","items":{"properties":{"budget":{"description":"Fixed-price budget in USD (e.g. $4000). Absent on hourly jobs, which carry hourlyRateMin and hourlyRateMax.","type":"string"},"clientLocation":{"description":"Client country or location.","type":"string"},"clientRating":{"description":"Client average rating.","type":"number"},"clientReviewCount":{"description":"Number of reviews the client has received from past contracts.","type":"integer"},"clientTotalSpent":{"description":"Client lifetime spend (USD).","type":"number"},"createdUtc":{"description":"UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds.","type":"number"},"currency":{"description":"ISO currency code the budget is quoted in (e.g. USD).","type":"string"},"description":{"description":"Full job posting description text. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"duration":{"description":"Expected engagement length as Upwork words it (e.g. \"1 to 3 months\").","type":"string"},"experienceLevel":{"description":"Required experience level (e.g. Entry, Intermediate, Expert).","type":"string"},"hourlyRateMax":{"description":"Upper bound of the client's hourly rate range in USD. Absent on fixed-price jobs.","type":"number"},"hourlyRateMin":{"description":"Lower bound of the client's hourly rate range in USD. Absent on fixed-price jobs.","type":"number"},"jobId":{"description":"Upwork job identifier. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"jobType":{"description":"Fixed or Hourly.","type":"string"},"paymentVerified":{"description":"Whether the client's payment method is verified; null when Upwork reports it as unknown.","type":["boolean","null"]},"premium":{"description":"Whether Upwork flags the posting as premium.","type":"boolean"},"proposals":{"description":"Number of proposals submitted.","type":"integer"},"reposted":{"description":"Whether the posting is a repost of an earlier job.","type":"boolean"},"tags":{"description":"Skill tags.","items":{"type":"string"},"type":["array","null"]},"title":{"description":"Job posting title. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"url":{"description":"Upwork job posting URL. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true}},"required":["jobId","title","url"],"type":"object"},"type":"array","x-anyapi-must-populate":true}},"required":["items"],"type":"object"}]},"found":{"description":"Whether any jobs were found for the search.","type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"Upwork Jobs output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"Upwork Jobs","tags":["upwork"],"x-mint":{"href":"/api-reference/upwork/jobs"},"x-payment-info":{"price":{"currency":"USD","max":"0.028600","min":"0.001100","mode":"dynamic"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"currency":"USD","max":"0.028600","min":"0.001100","minimumUsd":"0.001000","mode":"dynamic","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"currency":"USD","max":"0.028600","min":"0.001100","minimumUsd":null,"mode":"dynamic","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/walmart.product":{"post":{"description":"Fetch a Walmart product page by URL and get full product details (title, price, availability, ratings, images, and specs) in one normalized response.\n\n**Price:** \\$1.80 per 1,000 requests (flat per request - same cost regardless of results returned).\n\n**Routing:** 2 independent lanes are available in execution order. A failed attempt uses the next lane only when the request's payment authorizes that lane's price; the normalized schema stays the same.\n\n**Catalog:** [Walmart Product pricing and uptime](https://getanyapi.com/api/walmart/product) - live USD price, lane routing, and measured 30-day uptime. [Every Walmart endpoint](https://getanyapi.com/api/walmart).","operationId":"walmart_product","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"url":"https://www.walmart.com/ip/Apple-AirPods-Pro-2/5689919121"},"schema":{"additionalProperties":false,"example":{"url":"https://www.walmart.com/ip/Apple-AirPods-Pro-2/5689919121"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"requireFields":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Name the output fields this request must be able to return, for example `availability`, and it is served only by a source that returns every one of them. Fields you do not name are still returned whenever the serving source has them. This can raise your price: when the cheapest source cannot return a named field, a dearer source serves, and you are quoted and charged its price. A named field can still be absent on a product that genuinely lacks it. Naming a combination that no single source returns together is refused as invalid input, with no charge.","items":{"enum":["availability","brand","description","images","model","orderLimit","priceText","productId","rating","returnWindow","reviewsCount","sellerId","sellerName","upc"],"type":"string"},"type":"array","uniqueItems":true},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"url":{"description":"Walmart product page URL.","type":"string"}},"required":["url"],"title":"Walmart product input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"description":"Product wrapper, or null when the URL resolved to no product.","oneOf":[{"type":"null"},{"additionalProperties":false,"properties":{"items":{"description":"Product detail records (one per requested product URL). Populated whenever the provider has data for the entity.","items":{"properties":{"availability":{"description":"Stock status, e.g. \"IN_STOCK\".","type":"string"},"brand":{"description":"Brand name; empty when not reported.","type":"string"},"description":{"description":"Short product description; empty when the listing has none.","type":"string"},"image":{"description":"Primary product image URL. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"images":{"description":"All product image URLs.","items":{"type":"string"},"type":"array"},"itemId":{"description":"Walmart US item id (usItemId). Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"model":{"description":"Manufacturer model number; empty when not reported.","type":"string"},"orderLimit":{"description":"Maximum units of this item one order may contain.","type":"integer"},"priceText":{"description":"Current price as displayed, e.g. \"$125.00\"; empty when unavailable (Walmart returns a formatted string, not a numeric value).","type":"string"},"productId":{"description":"Walmart internal product id.","type":"string"},"rating":{"description":"Average customer rating, 0-5; 0 when unrated.","type":"number"},"returnWindow":{"description":"Days the buyer has to return the item.","type":"integer"},"reviewsCount":{"description":"Number of customer reviews; 0 when none.","type":"integer"},"sellerId":{"description":"Identifier of the seller fulfilling the offer.","type":"string"},"sellerName":{"description":"Name of the seller fulfilling the offer.","type":"string"},"title":{"description":"Product title. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"upc":{"description":"Universal Product Code; empty when not reported.","type":"string"},"url":{"description":"Canonical Walmart product page URL (condition query param retained, as it selects the offer). Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true}},"required":["title","url"],"type":"object"},"type":"array","x-anyapi-must-populate":true}},"required":["items"],"type":"object"}]},"found":{"description":"True when the product was found.","type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"Walmart product output","type":"object","x-anyapi-heavy":true},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"Walmart Product","tags":["walmart"],"x-mint":{"href":"/api-reference/walmart/product"},"x-payment-info":{"price":{"amount":"0.001800","currency":"USD","mode":"fixed"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"amount":"0.001800","currency":"USD","minimumUsd":"0.001000","mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"amount":"0.001800","currency":"USD","minimumUsd":null,"mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/web.crawl":{"post":{"description":"Crawl a website and get clean text content from up to 10 pages in one normalized response, ideal for feeding sites into LLMs and search indexes.\n\n**Price:** billed per result - \\$1.65 per 1,000 requests base + \\$3.30 per 1,000 results, capped at \\$34.70 per 1,000 requests.\n\n**Routing:** one lane serves this API today, so a failed attempt has nowhere to fail over to. Payment outcome follows the selected rail's settlement policy.\n\n**Catalog:** [Website Crawl pricing and uptime](https://getanyapi.com/api/web/crawl) - live USD price, lane routing, and measured 30-day uptime. [Every Web endpoint](https://getanyapi.com/api/web).","operationId":"web_crawl","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"limit":3,"url":"https://example.com"},"schema":{"additionalProperties":false,"example":{"limit":3,"url":"https://example.com"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"limit":{"description":"Maximum number of results to return (1-10, default 10). You are billed per result returned, so a lower limit costs less.","maximum":10,"minimum":1,"type":"integer"},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"url":{"description":"The website URL or domain to crawl.","type":"string"}},"required":["url"],"title":"Website crawl input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"oneOf":[{"type":"null"},{"additionalProperties":false,"properties":{"items":{"description":"Crawled page records: URL, page title, and extracted text content for each page. Populated whenever the provider has data for the entity.","items":{"properties":{"domain":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"text":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true}},"required":["domain","text"],"type":"object"},"type":"array","x-anyapi-must-populate":true}},"required":["items"],"type":"object"}]},"found":{"type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"Website crawl output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"Website Crawl","tags":["web"],"x-mint":{"href":"/api-reference/web/crawl"},"x-payment-info":{"price":{"currency":"USD","max":"0.034700","min":"0.001650","mode":"dynamic"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"currency":"USD","max":"0.034700","min":"0.001650","minimumUsd":"0.001000","mode":"dynamic","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"currency":"USD","max":"0.034700","min":"0.001650","minimumUsd":null,"mode":"dynamic","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/web.map":{"post":{"description":"Map an entire website into a clean list of its URLs (with titles and descriptions) in a single call.\n\n**Price:** \\$1.00 per 1,000 requests (flat per request - same cost regardless of results returned).\n\n**Routing:** one lane serves this API today, so a failed attempt has nowhere to fail over to. Payment outcome follows the selected rail's settlement policy.\n\n**Catalog:** [Web Map pricing and uptime](https://getanyapi.com/api/web/map) - live USD price, lane routing, and measured 30-day uptime. [Every Web endpoint](https://getanyapi.com/api/web).","operationId":"web_map","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"search":"domain","url":"https://www.iana.org"},"schema":{"additionalProperties":false,"example":{"search":"domain","url":"https://www.iana.org"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"includeSubdomains":{"description":"When true (upstream default), include URLs on subdomains of the target (for example docs.example.com when mapping example.com). Set false to return only URLs on the exact host.","type":"boolean"},"limit":{"default":100,"description":"Maximum number of links to return.","type":"integer"},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"search":{"description":"Optional term that orders the returned links by relevance.","type":"string"},"sitemap":{"description":"How to use the site's sitemap.xml when discovering URLs. 'include' (upstream default) merges sitemap URLs with links found by crawling; 'only' returns just the URLs listed in the sitemap (fastest and most authoritative); 'skip' ignores the sitemap and discovers URLs by crawling links. Omit to use 'include'.","enum":["include","skip","only"],"type":"string"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"url":{"description":"The base URL of the site to map into a list of links.","format":"uri","type":"string"}},"required":["url"],"title":"Web map input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"oneOf":[{"type":"null"},{"additionalProperties":false,"properties":{"results":{"description":"Populated whenever the provider has data for the entity.","items":{"properties":{"description":{"type":"string"},"title":{"type":"string"},"url":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true}},"required":["url","title","description"],"type":"object"},"type":"array","x-anyapi-must-populate":true}},"required":["results"],"type":"object"}]},"found":{"type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"Web map output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"Web Map","tags":["web"],"x-mint":{"href":"/api-reference/web/map"},"x-payment-info":{"price":{"amount":"0.001000","currency":"USD","mode":"fixed"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"amount":"0.001000","currency":"USD","minimumUsd":"0.001000","mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"amount":"0.001000","currency":"USD","minimumUsd":null,"mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/web.scrape":{"post":{"description":"Scrape any web page and get its content back as clean Markdown (or HTML, or raw HTML) plus title and metadata.\n\n**Price:** \\$0.70 per 1,000 requests (flat per request - same cost regardless of results returned).\n\n**Routing:** 4 independent lanes are available in execution order. A failed attempt uses the next lane only when the request's payment authorizes that lane's price; the normalized schema stays the same.\n\n**Catalog:** [Web Scrape pricing and uptime](https://getanyapi.com/api/web/scrape) - live USD price, lane routing, and measured 30-day uptime. [Every Web endpoint](https://getanyapi.com/api/web).","operationId":"web_scrape","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"formats":["markdown","html"],"onlyMainContent":false,"url":"https://example.com"},"schema":{"additionalProperties":false,"example":{"formats":["markdown","html"],"onlyMainContent":false,"url":"https://example.com"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"blockAds":{"description":"When true (upstream default), strip ad and cookie-consent elements before capture. Set false to keep them.","type":"boolean"},"excludeTags":{"description":"CSS selectors to drop before capture (for example [\"nav\", \"footer\", \".ads\"]). Applied after includeTags.","items":{"type":"string"},"type":"array"},"formats":{"default":["markdown","html"],"description":"Which representations of the page to return. Any combination of: markdown (page content as Markdown), html (the page HTML exactly as the browser received it, including head and script tags). Each requested format is returned under the matching output field. Defaults to both. rawHtml is a deprecated alias of html, returned under a rawHtml field for callers that predate the rename; send html instead.","items":{"enum":["markdown","html","rawHtml"],"type":"string"},"type":"array"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"includeTags":{"description":"CSS selectors to keep. When set, only content matching these selectors is captured (for example [\"article\", \"main\"] or [\"#content\"]).","items":{"type":"string"},"type":"array"},"mobile":{"description":"When true, render the page with a mobile viewport and user agent instead of desktop. Some sites serve materially different content to mobile.","type":"boolean"},"onlyMainContent":{"default":false,"description":"When true, return only the main article content, stripping navigation, headers, footers, and other boilerplate. Defaults to false to capture the full page.","type":"boolean"},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"url":{"description":"The URL of the page to scrape.","format":"uri","minLength":1,"type":"string"},"waitFor":{"description":"Milliseconds to wait for the page to finish rendering before capture. Use this for JavaScript-heavy pages or single-page apps whose content loads after the initial paint. Capped at 15000 to stay within the request timeout. This wait is time you asked us to spend, so your response takes this much longer, and it is excluded from the latency published for this endpoint.","maximum":15000,"minimum":0,"type":"integer","x-anyapi-caller-delay":{"unit":"ms"}}},"required":["url"],"title":"Web scrape input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"oneOf":[{"type":"null"},{"properties":{"description":{"description":"The page meta description.","type":"string"},"html":{"description":"The page HTML exactly as the browser received it, head and script tags included. Present when 'html' is among the requested formats (the default).","type":"string"},"language":{"description":"Two-letter language code the page declares (its html lang attribute or the equivalent metadata).","type":"string"},"markdown":{"description":"The page content as clean Markdown. Present when 'markdown' is among the requested formats (the default). Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"rawHtml":{"description":"The same bytes as 'html'. Deprecated alias returned only when 'rawHtml' is among the requested formats; use 'html'.","type":"string"},"title":{"description":"The page title from its metadata.","type":"string"},"url":{"description":"The canonical source URL of the scraped page. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true}},"required":["url","title","description"],"type":"object"}]},"found":{"type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"Web scrape output","type":"object","x-anyapi-empty-fails-over":true,"x-anyapi-heavy":true},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"Web Scrape","tags":["web"],"x-mint":{"href":"/api-reference/web/scrape"},"x-payment-info":{"price":{"amount":"0.000700","currency":"USD","mode":"fixed"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"amount":"0.001000","currency":"USD","minimumUsd":"0.001000","mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"amount":"0.000700","currency":"USD","minimumUsd":null,"mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/web.screenshot":{"post":{"description":"Capture a real-browser screenshot of any web page URL.\n\n**Price:** billed per result - \\$1.74 per 1,000 requests base + \\$0.00 per 1,000 results, capped at \\$1.74 per 1,000 requests.\n\n**Routing:** one lane serves this API today, so a failed attempt has nowhere to fail over to. Payment outcome follows the selected rail's settlement policy.\n\n**Catalog:** [Website Screenshot pricing and uptime](https://getanyapi.com/api/web/screenshot) - live USD price, lane routing, and measured 30-day uptime. [Every Web endpoint](https://getanyapi.com/api/web).","operationId":"web_screenshot","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"url":"https://example.com"},"schema":{"additionalProperties":false,"example":{"url":"https://example.com"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"url":{"description":"The full URL of the page to capture.","type":"string"},"viewportWidth":{"default":1280,"description":"Browser viewport width in pixels (e.g. 1280).","type":"integer"}},"required":["url"],"title":"Website screenshot input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"description":"The result wrapper, or null when nothing was captured.","oneOf":[{"type":"null"},{"additionalProperties":false,"properties":{"items":{"description":"Screenshot records: the requested page URL and a link to the captured image. Populated whenever the provider has data for the entity.","items":{"properties":{"image":{"description":"Link to the captured screenshot image. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"url":{"description":"The final page URL that was captured. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true}},"required":["url"],"type":"object"},"type":"array","x-anyapi-must-populate":true}},"required":["items"],"type":"object"}]},"found":{"description":"True when a screenshot was captured.","type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"Website screenshot output","type":"object","x-anyapi-heavy":true},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"Website Screenshot","tags":["web"],"x-mint":{"href":"/api-reference/web/screenshot"},"x-payment-info":{"price":{"currency":"USD","max":"0.001740","min":"0.001740","mode":"dynamic"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"currency":"USD","max":"0.001740","min":"0.001740","minimumUsd":"0.001000","mode":"dynamic","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"currency":"USD","max":"0.001740","min":"0.001740","minimumUsd":null,"mode":"dynamic","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/weibo.hot_search":{"post":{"description":"Get the complete current Weibo hot-search ranking with labels and heat values.\n\n**Price:** \\$1.80 per 1,000 requests (flat per request - same cost regardless of results returned).\n\n**Routing:** one lane serves this API today, so a failed attempt has nowhere to fail over to. Payment outcome follows the selected rail's settlement policy.\n\n**Catalog:** [Weibo Hot Search pricing and uptime](https://getanyapi.com/api/weibo/hot-search) - live USD price, lane routing, and measured 30-day uptime. [Every Weibo endpoint](https://getanyapi.com/api/weibo).","operationId":"weibo_hot_search","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{},"schema":{"additionalProperties":false,"example":{},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true}},"title":"Weibo hot search input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"description":"Current hot-search ranking, or null when unavailable.","oneOf":[{"type":"null"},{"additionalProperties":false,"properties":{"topics":{"description":"Ranked hot-search topics. Populated whenever the provider has data for the entity.","items":{"properties":{"heat":{"description":"Topic popularity value.","type":"string"},"keyword":{"description":"Hot-search keyword. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"pinned":{"description":"Whether the topic is pinned.","type":"boolean"},"rank":{"description":"Ranking position; zero may indicate pinned content. Populated whenever the provider has data for the entity.","type":"integer","x-anyapi-must-populate":true},"tag":{"description":"Hot-search label.","type":"string"}},"required":["rank","keyword"],"type":"object"},"type":"array","x-anyapi-must-populate":true},"total":{"description":"Total topics.","type":"integer"}},"required":["topics","total"],"type":"object"}]},"found":{"description":"True when hot-search topics were found.","type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"Weibo hot search output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"Weibo Hot Search","tags":["weibo"],"x-mint":{"href":"/api-reference/weibo/hot-search"},"x-payment-info":{"price":{"amount":"0.001800","currency":"USD","mode":"fixed"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"amount":"0.001800","currency":"USD","minimumUsd":"0.001000","mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"amount":"0.001800","currency":"USD","minimumUsd":null,"mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/weibo.post":{"post":{"description":"Fetch a public Weibo post by ID with normalized author and engagement data.\n\n**Price:** \\$1.20 per 1,000 requests (flat per request - same cost regardless of results returned).\n\n**Routing:** one lane serves this API today, so a failed attempt has nowhere to fail over to. Payment outcome follows the selected rail's settlement policy.\n\n**Catalog:** [Weibo Post pricing and uptime](https://getanyapi.com/api/weibo/post) - live USD price, lane routing, and measured 30-day uptime. [Every Weibo endpoint](https://getanyapi.com/api/weibo).","operationId":"weibo_post","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"includeLongText":"true","postId":"5092682368025584"},"schema":{"additionalProperties":false,"example":{"includeLongText":"true","postId":"5092682368025584"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"includeLongText":{"default":"true","description":"Whether to include the full text of long posts.","type":"string"},"postId":{"description":"Weibo post identifier.","type":"string"},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true}},"required":["postId"],"title":"Weibo post input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"description":"Normalized post, or null when not found.","oneOf":[{"type":"null"},{"properties":{"authorImage":{"description":"Author avatar URL.","format":"uri","type":"string"},"authorName":{"description":"Author display name. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"authorUrl":{"description":"Canonical URL of the author's Weibo profile.","type":"string"},"authorUserId":{"description":"Author user identifier. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"authorVerified":{"description":"Whether the author is verified.","type":"boolean"},"comments":{"description":"Comment count.","type":"integer"},"createdUtc":{"description":"UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds. Populated whenever the provider has data for the entity.","type":"number","x-anyapi-must-populate":true},"id":{"description":"Post identifier. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"imageCount":{"description":"Attached image count.","type":"integer"},"likes":{"description":"Like count.","type":"integer"},"region":{"description":"Region label reported by Weibo.","type":"string"},"reposts":{"description":"Repost count.","type":"integer"},"shortId":{"description":"Short Weibo post identifier. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"text":{"description":"Plain post text. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true}},"required":["id"],"type":"object"}]},"found":{"description":"True when the post was found.","type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"Weibo post output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"Weibo Post","tags":["weibo"],"x-mint":{"href":"/api-reference/weibo/post"},"x-payment-info":{"price":{"amount":"0.001200","currency":"USD","mode":"fixed"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"amount":"0.001200","currency":"USD","minimumUsd":"0.001000","mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"amount":"0.001200","currency":"USD","minimumUsd":null,"mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/weibo.post_comments":{"post":{"description":"List first-level comments on a public Weibo post with pagination.\n\n**Price:** \\$1.20 per 1,000 requests (flat per request - same cost regardless of results returned).\n\n**Routing:** one lane serves this API today, so a failed attempt has nowhere to fail over to. Payment outcome follows the selected rail's settlement policy.\n\n**Catalog:** [Weibo Post Comments pricing and uptime](https://getanyapi.com/api/weibo/post-comments) - live USD price, lane routing, and measured 30-day uptime. [Every Weibo endpoint](https://getanyapi.com/api/weibo).","operationId":"weibo_post_comments","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"limit":10,"postId":"5283919831764022"},"schema":{"additionalProperties":false,"example":{"limit":10,"postId":"5283919831764022"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"cursor":{"description":"Pagination cursor returned as nextCursor.","type":"string"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"limit":{"default":10,"description":"Requested comment count.","type":"integer"},"postId":{"description":"Weibo post identifier.","type":"string"},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true}},"required":["postId"],"title":"Weibo post comments input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"description":"Comments and pagination, or null when none were found.","oneOf":[{"type":"null"},{"additionalProperties":false,"properties":{"comments":{"description":"Normalized first-level comments. Populated whenever the provider has data for the entity.","items":{"properties":{"authorImage":{"description":"Comment author avatar URL.","format":"uri","type":"string"},"authorName":{"description":"Comment author display name. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"authorUrl":{"description":"Canonical URL of the author's Weibo profile.","type":"string"},"authorUserId":{"description":"Comment author user identifier. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"authorVerified":{"description":"Whether the comment author is verified.","type":"boolean"},"createdUtc":{"description":"UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds. Populated whenever the provider has data for the entity.","type":"number","x-anyapi-must-populate":true},"id":{"description":"Comment identifier. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"imageCount":{"description":"Number of images attached to the comment.","type":"integer"},"likes":{"description":"Like count.","type":"integer"},"replies":{"description":"Number of replies to the comment.","type":"integer"},"text":{"description":"Plain comment text. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true}},"required":["id"],"type":"object"},"type":"array","x-anyapi-must-populate":true},"nextCursor":{"description":"Opaque cursor for the next page of comments, or null when this lane has no more. Pass it back as cursor to continue.","type":["string","null"]},"total":{"description":"Total comments reported by Weibo.","type":"integer"}},"required":["comments","nextCursor","total"],"type":"object"}]},"found":{"description":"True when comments were found.","type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"Weibo post comments output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"Weibo Post Comments","tags":["weibo"],"x-mint":{"href":"/api-reference/weibo/post-comments"},"x-payment-info":{"price":{"amount":"0.001200","currency":"USD","mode":"fixed"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"amount":"0.001200","currency":"USD","minimumUsd":"0.001000","mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"amount":"0.001200","currency":"USD","minimumUsd":null,"mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/weibo.profile":{"post":{"description":"Fetch a public Weibo profile by user ID with normalized audience and account data.\n\n**Price:** \\$1.20 per 1,000 requests (flat per request - same cost regardless of results returned).\n\n**Routing:** one lane serves this API today, so a failed attempt has nowhere to fail over to. Payment outcome follows the selected rail's settlement policy.\n\n**Catalog:** [Weibo Profile pricing and uptime](https://getanyapi.com/api/weibo/profile) - live USD price, lane routing, and measured 30-day uptime. [Every Weibo endpoint](https://getanyapi.com/api/weibo).","operationId":"weibo_profile","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"userId":"1722594714"},"schema":{"additionalProperties":false,"example":{"userId":"1722594714"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"userId":{"description":"Weibo user identifier.","type":"string"}},"required":["userId"],"title":"Weibo profile input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"description":"Normalized profile, or null when not found.","oneOf":[{"type":"null"},{"properties":{"bio":{"description":"Profile biography.","type":"string"},"customName":{"description":"Custom Weibo username when configured.","type":"string"},"externalUrl":{"description":"External profile URL.","format":"uri","type":"string"},"followers":{"description":"Follower count.","type":"integer"},"following":{"description":"Following count.","type":"integer"},"gender":{"description":"Gender code reported by Weibo.","type":"string"},"image":{"description":"Profile image URL. Populated whenever the provider has data for the entity.","format":"uri","type":"string","x-anyapi-must-populate":true},"location":{"description":"Profile location.","type":"string"},"name":{"description":"Display name. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"posts":{"description":"Published post count.","type":"integer"},"profileUrl":{"description":"Canonical URL of the Weibo profile.","type":"string"},"userId":{"description":"User identifier. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"verified":{"description":"Whether the account is verified.","type":"boolean"},"verifiedReason":{"description":"Verification reason.","type":"string"}},"required":["userId"],"type":"object"}]},"found":{"description":"True when the profile was found.","type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"Weibo profile output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"Weibo Profile","tags":["weibo"],"x-mint":{"href":"/api-reference/weibo/profile"},"x-payment-info":{"price":{"amount":"0.001200","currency":"USD","mode":"fixed"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"amount":"0.001200","currency":"USD","minimumUsd":"0.001000","mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"amount":"0.001200","currency":"USD","minimumUsd":null,"mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/weibo.search":{"post":{"description":"Search public Weibo posts with optional result, media, and time filters.\n\n**Price:** \\$1.20 per 1,000 requests (flat per request - same cost regardless of results returned).\n\n**Routing:** one lane serves this API today, so a failed attempt has nowhere to fail over to. Payment outcome follows the selected rail's settlement policy.\n\n**Catalog:** [Weibo Advanced Search pricing and uptime](https://getanyapi.com/api/weibo/search) - live USD price, lane routing, and measured 30-day uptime. [Every Weibo endpoint](https://getanyapi.com/api/weibo).","operationId":"weibo_search","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"includeType":"pic","page":1,"query":"python","searchType":"hot"},"schema":{"additionalProperties":false,"example":{"includeType":"pic","page":1,"query":"python","searchType":"hot"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"includeType":{"description":"Media filter, such as all, pic, video, music, or link.","type":"string"},"page":{"default":1,"description":"Page number starting at 1.","type":"integer"},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"query":{"description":"Search keyword.","type":"string"},"searchType":{"description":"Search type, such as all, hot, original, verified, media, or viewpoint.","type":"string"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"timeScope":{"description":"Custom time range in the API's custom:start:end format.","type":"string"}},"required":["query"],"title":"Weibo advanced search input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"description":"Search results and metadata, or null when none were found.","oneOf":[{"type":"null"},{"additionalProperties":false,"properties":{"hasMore":{"description":"Whether another result page is available.","type":"boolean"},"posts":{"description":"Normalized Weibo search results. Populated whenever the provider has data for the entity.","items":{"properties":{"authorImage":{"description":"Author avatar URL.","format":"uri","type":"string"},"authorName":{"description":"Author display name. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"authorUrl":{"description":"Canonical URL of the author's Weibo profile.","type":"string"},"comments":{"description":"Comment count.","type":"integer"},"createdUtc":{"description":"UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds. Populated whenever the provider has data for the entity.","type":"number","x-anyapi-must-populate":true},"hasImage":{"description":"Whether the result contains an image.","type":"boolean"},"hasVideo":{"description":"Whether the result contains a video.","type":"boolean"},"id":{"description":"Post identifier. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"likes":{"description":"Like count.","type":"integer"},"reposts":{"description":"Repost count.","type":"integer"},"text":{"description":"Post text. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"type":{"description":"Post type.","type":"string"},"url":{"description":"Canonical post URL. Populated whenever the provider has data for the entity.","format":"uri","type":"string","x-anyapi-must-populate":true}},"required":["id"],"type":"object"},"type":"array","x-anyapi-must-populate":true},"resultCount":{"description":"Result count reported for this page.","type":"integer"}},"required":["posts","hasMore","resultCount"],"type":"object"}]},"found":{"description":"True when search results were found.","type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"Weibo advanced search output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"Weibo Advanced Search","tags":["weibo"],"x-mint":{"href":"/api-reference/weibo/search"},"x-payment-info":{"price":{"amount":"0.001200","currency":"USD","mode":"fixed"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"amount":"0.001200","currency":"USD","minimumUsd":"0.001000","mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"amount":"0.001200","currency":"USD","minimumUsd":null,"mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/weibo.user_posts":{"post":{"description":"List public posts from a Weibo user with normalized author and engagement data.\n\n**Price:** \\$1.20 per 1,000 requests (flat per request - same cost regardless of results returned).\n\n**Routing:** one lane serves this API today, so a failed attempt has nowhere to fail over to. Payment outcome follows the selected rail's settlement policy.\n\n**Catalog:** [Weibo User Posts pricing and uptime](https://getanyapi.com/api/weibo/user-posts) - live USD price, lane routing, and measured 30-day uptime. [Every Weibo endpoint](https://getanyapi.com/api/weibo).","operationId":"weibo_user_posts","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"feature":3,"page":1,"userId":"7277477906"},"schema":{"additionalProperties":false,"example":{"feature":3,"page":1,"userId":"7277477906"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"cursor":{"description":"Pagination identifier returned as nextCursor.","type":"string"},"feature":{"default":0,"description":"Response detail feature: 0 basic, 1 extended, 2 image-oriented, or 3 video-oriented.","type":"integer"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"page":{"default":1,"description":"Page number starting at 1.","type":"integer"},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"userId":{"description":"Weibo user identifier.","type":"string"}},"required":["userId"],"title":"Weibo user posts input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"description":"Posts and pagination, or null when none were found.","oneOf":[{"type":"null"},{"additionalProperties":false,"properties":{"nextCursor":{"description":"Opaque cursor for the next page of posts, or null when this lane has no more. Pass it back as cursor to continue.","type":["string","null"]},"posts":{"description":"Normalized Weibo posts. Populated whenever the provider has data for the entity.","items":{"properties":{"authorImage":{"description":"Author avatar URL.","format":"uri","type":"string"},"authorName":{"description":"Author display name. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"authorUrl":{"description":"Canonical URL of the author's Weibo profile.","type":"string"},"authorUserId":{"description":"Author user identifier. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"authorVerified":{"description":"Whether the author is verified.","type":"boolean"},"comments":{"description":"Comment count.","type":"integer"},"createdUtc":{"description":"UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds. Populated whenever the provider has data for the entity.","type":"number","x-anyapi-must-populate":true},"id":{"description":"Post identifier. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"image":{"description":"Post preview image URL.","format":"uri","type":"string"},"imageCount":{"description":"Number of images attached to the post.","type":"integer"},"likes":{"description":"Like count.","type":"integer"},"region":{"description":"Region the post was published from, as Weibo reports it.","type":"string"},"reposts":{"description":"Repost count.","type":"integer"},"shortId":{"description":"Short Weibo post identifier. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"text":{"description":"Plain post text. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true}},"required":["id"],"type":"object"},"type":"array","x-anyapi-must-populate":true}},"required":["posts","nextCursor"],"type":"object"}]},"found":{"description":"True when posts were found.","type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"Weibo user posts output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"Weibo User Posts","tags":["weibo"],"x-mint":{"href":"/api-reference/weibo/user-posts"},"x-payment-info":{"price":{"amount":"0.001200","currency":"USD","mode":"fixed"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"amount":"0.001200","currency":"USD","minimumUsd":"0.001000","mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"amount":"0.001200","currency":"USD","minimumUsd":null,"mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/yahoo_finance.quote":{"post":{"description":"Look up a stock or ETF by ticker symbol and get its Yahoo Finance quote (price, market cap, volume, and key stats) as normalized JSON.\n\n**Price:** billed per result - \\$0.06 per 1,000 requests base + \\$0.99 per 1,000 results, capped at \\$1.05 per 1,000 requests.\n\n**Routing:** one lane serves this API today, so a failed attempt has nowhere to fail over to. Payment outcome follows the selected rail's settlement policy.\n\n**Catalog:** [Yahoo Finance Quote pricing and uptime](https://getanyapi.com/api/yahoo-finance/quote) - live USD price, lane routing, and measured 30-day uptime. [Every Yahoo Finance endpoint](https://getanyapi.com/api/yahoo-finance).","operationId":"yahoo_finance_quote","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"ticker":"AAPL"},"schema":{"additionalProperties":false,"example":{"ticker":"AAPL"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"ticker":{"description":"The ticker symbol to look up.","type":"string"}},"required":["ticker"],"title":"Yahoo Finance quote input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"oneOf":[{"type":"null"},{"additionalProperties":false,"properties":{"items":{"description":"Quote records for the ticker: current price, day range, volume, and market cap. Populated whenever the provider has data for the entity.","items":{"properties":{"asOfUtc":{"description":"UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds.","type":"number"},"assetType":{"description":"Instrument type Yahoo classifies the symbol as (e.g. EQUITY, ETF).","type":"string"},"change":{"description":"Absolute price change from the previous close.","type":"number"},"changePercent":{"description":"Percent price change from the previous close (e.g. 3.14 means +3.14%).","type":"number"},"dayHigh":{"description":"Highest trade price during the current session.","type":"number"},"dayLow":{"description":"Lowest trade price during the current session.","type":"number"},"industry":{"description":"Industry the issuer belongs to.","type":"string"},"marketCap":{"description":"Total market capitalization in the security's native currency.","type":"integer"},"name":{"description":"The security's display name, e.g. \"Apple Inc.\". Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"previousClose":{"description":"The previous session's closing price.","type":"number"},"price":{"description":"The latest trade price in the security's native currency. Populated whenever the provider has data for the entity.","type":"number","x-anyapi-must-populate":true},"sector":{"description":"Sector the issuer belongs to.","type":"string"},"symbol":{"description":"The resolved ticker symbol for the quote, e.g. \"AAPL\". Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"volume":{"description":"Number of shares traded during the current session.","type":"integer"}},"required":["price"],"type":"object"},"type":"array","x-anyapi-must-populate":true}},"required":["items"],"type":"object"}]},"found":{"type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"Yahoo Finance quote output","type":"object","x-anyapi-heavy":true},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"Yahoo Finance Quote","tags":["yahoo-finance"],"x-mint":{"href":"/api-reference/yahoo-finance/quote"},"x-payment-info":{"price":{"currency":"USD","max":"0.001050","min":"0.000060","mode":"dynamic"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"currency":"USD","max":"0.001050","min":"0.001000","minimumUsd":"0.001000","mode":"dynamic","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"currency":"USD","max":"0.001050","min":"0.000060","minimumUsd":null,"mode":"dynamic","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/yelp.search":{"post":{"description":"Search Yelp for businesses by keyword and location: up to 20 listings with ratings, categories, and core business info per request.\n\n**Price:** \\$3.50 per 1,000 requests (flat per request - same cost regardless of results returned).\n\n**Routing:** 2 independent lanes are available in execution order. A failed attempt uses the next lane only when the request's payment authorizes that lane's price; the normalized schema stays the same.\n\n**Catalog:** [Yelp Search pricing and uptime](https://getanyapi.com/api/yelp/search) - live USD price, lane routing, and measured 30-day uptime. [Every Yelp endpoint](https://getanyapi.com/api/yelp).","operationId":"yelp_search","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"limit":5,"location":"Chicago, IL","query":"pizza"},"schema":{"additionalProperties":false,"example":{"limit":5,"location":"Chicago, IL","query":"pizza"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"limit":{"default":20,"description":"Maximum number of results to return (1 to 20, default 20).","maximum":20,"minimum":1,"type":"integer"},"location":{"description":"City and state defining the search area (e.g. San Francisco, CA).","type":"string"},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"query":{"description":"Search term or category to look for (e.g. sushi).","type":"string"},"requireFields":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Name the output fields this request must be able to return, for example `is_closed` or `price`, and it is served only by a source that returns every one of them. Fields you do not name are still returned whenever the serving source has them. This can raise your price: when the cheapest source cannot return a named field, a dearer source serves, and you are quoted and charged its price. A named field can still be absent on a place that genuinely lacks it. Naming a combination that no single source returns together is refused as invalid input, with no charge.","items":{"enum":["address1","address2","address3","avg_rating","categories","city","country","dialable_phone","is_closed","latitude","localized_phone","localized_price","longitude","neighborhoods","phone","photo_count","price","review_count","state","unrounded_avg_rating","url","zip"],"type":"string"},"type":"array","uniqueItems":true},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true}},"required":["query","location"],"title":"Yelp search input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"oneOf":[{"type":"null"},{"additionalProperties":false,"properties":{"items":{"description":"Business listing records: name, categories, rating, review count, address, and core business info. Populated whenever the provider has data for the entity.","items":{"additionalProperties":true,"properties":{"address1":{"description":"Primary street address line.","type":["string","null"]},"address2":{"description":"Secondary address line.","type":["string","null"]},"address3":{"description":"Tertiary address line.","type":["string","null"]},"alias":{"description":"URL slug for the business. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"avg_rating":{"description":"Rounded average star rating.","type":["number","null"]},"categories":{"description":"Business category tags.","items":{"additionalProperties":true,"type":"object"},"type":["array","null"]},"city":{"description":"City name.","type":["string","null"]},"country":{"description":"ISO country code.","type":["string","null"]},"dialable_phone":{"description":"Dialable phone number.","type":["string","null"]},"id":{"description":"Stable Yelp business identifier. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"is_closed":{"description":"Whether the business is permanently closed.","type":["boolean","null"]},"latitude":{"description":"Latitude of the business.","type":["number","null"]},"localized_phone":{"description":"Formatted local phone number.","type":["string","null"]},"localized_price":{"description":"Localized price tier (e.g. $$).","type":["string","null"]},"longitude":{"description":"Longitude of the business.","type":["number","null"]},"name":{"description":"Business display name. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"neighborhoods":{"description":"Neighborhood labels for the location.","items":{"type":"string"},"type":["array","null"]},"phone":{"description":"Raw phone number.","type":["string","null"]},"photo_count":{"description":"Total photo count.","type":["integer","null"]},"photo_url":{"description":"Primary photo URL. Populated whenever the provider has data for the entity.","type":["string","null"],"x-anyapi-must-populate":true},"price":{"description":"Numeric price tier.","type":["integer","null"]},"review_count":{"description":"Number of reviews.","type":["integer","null"]},"state":{"description":"State or region code.","type":["string","null"]},"unrounded_avg_rating":{"description":"Unrounded average star rating.","type":["number","null"]},"url":{"description":"Public Yelp business page URL.","type":"string"},"zip":{"description":"Postal code.","type":["string","null"]}},"required":["id","name","alias"],"type":"object"},"type":"array","x-anyapi-must-populate":true}},"required":["items"],"type":"object"}]},"found":{"type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"Yelp search output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"Yelp Search","tags":["yelp"],"x-mint":{"href":"/api-reference/yelp/search"},"x-payment-info":{"price":{"amount":"0.003500","currency":"USD","mode":"fixed"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"amount":"0.003500","currency":"USD","minimumUsd":"0.001000","mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"amount":"0.003500","currency":"USD","minimumUsd":null,"mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/youtube.channel":{"post":{"description":"Fetch a YouTube channel's stats (subscribers, video count, total views, description) by handle or channel ID.\n\n**Price:** \\$0.50 per 1,000 requests (flat per request - same cost regardless of results returned).\n\n**Routing:** 3 independent lanes are available in execution order. A failed attempt uses the next lane only when the request's payment authorizes that lane's price; the normalized schema stays the same.\n\n**Catalog:** [YouTube Channel pricing and uptime](https://getanyapi.com/api/youtube/channel) - live USD price, lane routing, and measured 30-day uptime. [Every YouTube endpoint](https://getanyapi.com/api/youtube).","operationId":"youtube_channel","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"handle":"@mkbhd"},"schema":{"additionalProperties":false,"anyOf":[{"required":["handle"]},{"required":["channelId"]}],"example":{"handle":"@mkbhd"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"channelId":{"description":"YouTube channel ID (UC...).","type":"string"},"handle":{"description":"YouTube channel handle.","type":"string"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true}},"title":"YouTube channel input","type":"object","x-aliases":{"username":"handle"}}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"oneOf":[{"type":"null"},{"properties":{"avatarUrl":{"type":"string"},"channelId":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"description":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"handle":{"description":"The channel's @handle, for example \"@mkbhd\".","type":"string"},"subscribers":{"type":"integer"},"title":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"url":{"description":"Canonical URL of the channel page, tracking query parameters stripped.","type":"string"},"videos":{"type":"integer"},"views":{"type":"integer"}},"required":["channelId","title","subscribers","videos","views","description","avatarUrl"],"type":"object"}]},"found":{"type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"YouTube channel output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"YouTube Channel","tags":["youtube"],"x-mint":{"href":"/api-reference/youtube/channel"},"x-payment-info":{"price":{"amount":"0.000500","currency":"USD","mode":"fixed"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"amount":"0.001000","currency":"USD","minimumUsd":"0.001000","mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"amount":"0.000500","currency":"USD","minimumUsd":null,"mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/youtube.channel_community_posts":{"post":{"description":"List a YouTube channel's community posts by handle or channel ID with cursor pagination (text, likes, image, publish time).\n\n**Price:** \\$1.20 per 1,000 requests (flat per request - same cost regardless of results returned).\n\n**Routing:** 2 independent lanes are available in execution order. A failed attempt uses the next lane only when the request's payment authorizes that lane's price; the normalized schema stays the same.\n\n**Catalog:** [YouTube Channel Community Posts pricing and uptime](https://getanyapi.com/api/youtube/channel-community-posts) - live USD price, lane routing, and measured 30-day uptime. [Every YouTube endpoint](https://getanyapi.com/api/youtube).","operationId":"youtube_channel_community_posts","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"handle":"@MrBeast"},"schema":{"additionalProperties":false,"anyOf":[{"required":["handle"]},{"required":["channelId"]}],"example":{"handle":"@MrBeast"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"channelId":{"description":"YouTube channel ID.","type":"string"},"cursor":{"description":"Continuation token from a previous response for pagination.","type":"string"},"handle":{"description":"YouTube channel handle.","type":"string"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true}},"title":"YouTube Channel Community Posts input","type":"object","x-aliases":{"username":"handle"}}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"oneOf":[{"type":"null"},{"additionalProperties":false,"properties":{"nextCursor":{"description":"Opaque cursor for the next page of posts, or null when this lane has no more. Pass it back as cursor to continue.","type":["string","null"]},"posts":{"description":"Populated whenever the provider has data for the entity.","items":{"properties":{"channelHandle":{"description":"The publishing channel's @handle, without the leading @.","type":"string"},"channelId":{"description":"YouTube channel ID of the channel that published the post.","type":"string"},"channelTitle":{"description":"Display name of the channel that published the post.","type":"string"},"content":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"createdUtc":{"description":"UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds.","type":"number"},"id":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"image":{"type":"string"},"images":{"description":"URLs of every image attached to the post.","items":{"type":"string"},"type":"array"},"likeCount":{"type":"integer"},"publishedTime":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"url":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true}},"required":["id","url","content","image","likeCount","publishedTime"],"type":"object"},"type":"array","x-anyapi-must-populate":true}},"required":["posts","nextCursor"],"type":"object"}]},"found":{"type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"YouTube Channel Community Posts output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"YouTube Channel Community Posts","tags":["youtube"],"x-mint":{"href":"/api-reference/youtube/channel-community-posts"},"x-payment-info":{"price":{"amount":"0.001200","currency":"USD","mode":"fixed"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"amount":"0.001200","currency":"USD","minimumUsd":"0.001000","mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"amount":"0.001200","currency":"USD","minimumUsd":null,"mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/youtube.channel_contact":{"post":{"description":"Reveal the business inquiry email a YouTube creator publishes behind the channel's View email address button. YouTube gates that address behind a signed-in Google session and a CAPTCHA, so it is absent from the channel page a logged-out scraper reads.\n\n**Price:** billed per result - \\$71.80 per 1,000 requests base + \\$0.00 per 1,000 results, capped at \\$71.80 per 1,000 requests.\n\n**Routing:** 2 independent lanes are available in execution order. A failed attempt uses the next lane only when the request's payment authorizes that lane's price; the normalized schema stays the same.\n\n**Catalog:** [YouTube Channel Contact Email pricing and uptime](https://getanyapi.com/api/youtube/channel-contact) - live USD price, lane routing, and measured 30-day uptime. [Every YouTube endpoint](https://getanyapi.com/api/youtube).","operationId":"youtube_channel_contact","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"handle":"@mkbhd"},"schema":{"additionalProperties":false,"anyOf":[{"required":["handle"]},{"required":["channelId"]}],"example":{"handle":"@mkbhd"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"channelId":{"description":"YouTube channel ID (UC...).","minLength":1,"type":"string"},"handle":{"description":"YouTube channel handle, with or without the leading @.","minLength":1,"type":"string"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true}},"title":"YouTube channel contact email input","type":"object","x-aliases":{"username":"handle"}}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"description":"The revealed contact details, or null when no address came back.","oneOf":[{"type":"null"},{"properties":{"email":{"description":"The business inquiry email the creator published on the channel's About tab, as YouTube reveals it behind the View email address button. This is the address YouTube gates behind a signed-in session, so it is often different from any address written into the channel description.","type":"string"}},"required":["email"],"type":"object"}]},"found":{"description":"True when a business inquiry email was revealed for the channel. False means no address came back, which covers three cases this upstream does not tell apart: the channel publishes no business email, the channel does not exist, or the reveal did not get past YouTube's CAPTCHA on this attempt. Treat false as no address on this call, not as proof the creator has none.","type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"YouTube channel contact email output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"YouTube Channel Contact Email","tags":["youtube"],"x-mint":{"href":"/api-reference/youtube/channel-contact"},"x-payment-info":{"price":{"currency":"USD","max":"0.071800","min":"0.071800","mode":"dynamic"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"currency":"USD","max":"0.071800","min":"0.071800","minimumUsd":"0.001000","mode":"dynamic","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"currency":"USD","max":"0.071800","min":"0.071800","minimumUsd":null,"mode":"dynamic","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/youtube.channel_lives":{"post":{"description":"List a YouTube channel's live and past-live streams by handle or channel ID with cursor pagination (title, views, length, publish time).\n\n**Price:** \\$1.20 per 1,000 requests (flat per request - same cost regardless of results returned).\n\n**Routing:** 2 independent lanes are available in execution order. A failed attempt uses the next lane only when the request's payment authorizes that lane's price; the normalized schema stays the same.\n\n**Catalog:** [YouTube Channel Live Streams pricing and uptime](https://getanyapi.com/api/youtube/channel-lives) - live USD price, lane routing, and measured 30-day uptime. [Every YouTube endpoint](https://getanyapi.com/api/youtube).","operationId":"youtube_channel_lives","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"handle":"@IShowSpeed"},"schema":{"additionalProperties":false,"anyOf":[{"required":["handle"]},{"required":["channelId"]}],"example":{"handle":"@IShowSpeed"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"channelId":{"description":"YouTube channel ID.","type":"string"},"cursor":{"description":"Continuation token from a previous response for pagination.","type":"string"},"handle":{"description":"YouTube channel handle.","type":"string"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true}},"title":"YouTube Channel Live Streams input","type":"object","x-aliases":{"username":"handle"}}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"oneOf":[{"type":"null"},{"additionalProperties":false,"properties":{"lives":{"description":"Populated whenever the provider has data for the entity.","items":{"properties":{"id":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"image":{"description":"URL of the live stream thumbnail image, tracking query parameters stripped.","type":"string"},"lengthText":{"type":"string"},"publishedTime":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"title":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"url":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"views":{"type":"integer"}},"required":["id","url","title","views","lengthText","publishedTime"],"type":"object"},"type":"array","x-anyapi-must-populate":true},"nextCursor":{"description":"Opaque cursor for the next page of live streams, or null when this lane has no more. Pass it back as cursor to continue.","type":["string","null"]}},"required":["lives","nextCursor"],"type":"object"}]},"found":{"type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"YouTube Channel Live Streams output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"YouTube Channel Live Streams","tags":["youtube"],"x-mint":{"href":"/api-reference/youtube/channel-lives"},"x-payment-info":{"price":{"amount":"0.001200","currency":"USD","mode":"fixed"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"amount":"0.001200","currency":"USD","minimumUsd":"0.001000","mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"amount":"0.001200","currency":"USD","minimumUsd":null,"mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/youtube.channel_playlists":{"post":{"description":"List a YouTube channel's playlists by handle or channel ID with cursor pagination (title, video count, thumbnail).\n\n**Price:** \\$1.20 per 1,000 requests (flat per request - same cost regardless of results returned).\n\n**Routing:** one lane serves this API today, so a failed attempt has nowhere to fail over to. Payment outcome follows the selected rail's settlement policy.\n\n**Catalog:** [YouTube Channel Playlists pricing and uptime](https://getanyapi.com/api/youtube/channel-playlists) - live USD price, lane routing, and measured 30-day uptime. [Every YouTube endpoint](https://getanyapi.com/api/youtube).","operationId":"youtube_channel_playlists","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"handle":"@veritasium"},"schema":{"additionalProperties":false,"anyOf":[{"required":["handle"]},{"required":["channelId"]}],"example":{"handle":"@veritasium"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"channelId":{"description":"YouTube channel ID.","type":"string"},"cursor":{"description":"Continuation token from a previous response for pagination.","type":"string"},"handle":{"description":"YouTube channel handle.","type":"string"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true}},"title":"YouTube Channel Playlists input","type":"object","x-aliases":{"username":"handle"}}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"oneOf":[{"type":"null"},{"additionalProperties":false,"properties":{"nextCursor":{"description":"Opaque cursor for the next page of playlists, or null when this lane has no more. Pass it back as cursor to continue.","type":["string","null"]},"playlists":{"description":"Populated whenever the provider has data for the entity.","items":{"properties":{"id":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"playlistUrl":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"thumbnail":{"type":"string"},"title":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"videoCount":{"type":"integer"},"videoId":{"description":"Video ID of the playlist's lead video.","type":"string"},"videoUrl":{"description":"Watch URL of the playlist's lead video.","type":"string"}},"required":["id","title","playlistUrl","videoCount","thumbnail"],"type":"object"},"type":"array","x-anyapi-must-populate":true}},"required":["playlists","nextCursor"],"type":"object"}]},"found":{"type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"YouTube Channel Playlists output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"YouTube Channel Playlists","tags":["youtube"],"x-mint":{"href":"/api-reference/youtube/channel-playlists"},"x-payment-info":{"price":{"amount":"0.001200","currency":"USD","mode":"fixed"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"amount":"0.001200","currency":"USD","minimumUsd":"0.001000","mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"amount":"0.001200","currency":"USD","minimumUsd":null,"mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/youtube.channel_shorts":{"post":{"description":"List a YouTube channel's Shorts by handle or channel ID with cursor pagination, views, and publish timestamps.\n\n**Price:** \\$1.20 per 1,000 requests (flat per request - same cost regardless of results returned).\n\n**Routing:** 2 independent lanes are available in execution order. A failed attempt uses the next lane only when the request's payment authorizes that lane's price; the normalized schema stays the same.\n\n**Catalog:** [YouTube Channel Shorts pricing and uptime](https://getanyapi.com/api/youtube/channel-shorts) - live USD price, lane routing, and measured 30-day uptime. [Every YouTube endpoint](https://getanyapi.com/api/youtube).","operationId":"youtube_channel_shorts","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"handle":"@zachking","sort":"latest"},"schema":{"additionalProperties":false,"anyOf":[{"required":["handle"]},{"required":["channelId"]}],"example":{"handle":"@zachking","sort":"latest"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"channelId":{"description":"YouTube channel ID beginning with UC.","type":"string"},"cursor":{"description":"Continuation token from a previous response.","type":"string"},"handle":{"description":"YouTube channel handle, including or omitting the leading @.","type":"string"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"sort":{"description":"Sort order for the Shorts feed. latest and newest are equivalent.","enum":["latest","newest","popular"],"type":"string"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true}},"title":"YouTube Channel Shorts input","type":"object","x-aliases":{"username":"handle"}}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"description":"The normalized Shorts page, or null when the channel was not found.","oneOf":[{"type":"null"},{"additionalProperties":false,"properties":{"nextCursor":{"description":"Opaque cursor for the next Shorts page, or null when no next page is available.","type":["string","null"]},"shorts":{"description":"Short-form videos returned by the provider's dedicated YouTube Shorts endpoint. Populated whenever the provider has data for the entity.","items":{"properties":{"contentType":{"description":"Explicit normalized provenance that this item came from a dedicated Shorts feed.","enum":["short"],"type":"string"},"createdUtc":{"description":"UTC epoch timestamp in seconds when supplied by the upstream response.","type":"number"},"duration":{"description":"Published duration when supplied by the upstream response.","type":"string"},"id":{"description":"Unique YouTube video identifier. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"image":{"description":"URL of the short thumbnail image, tracking query parameters stripped.","type":"string"},"likes":{"description":"Public like count when supplied by the upstream response.","minimum":0,"type":"integer"},"title":{"description":"Public title or caption for the Short. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"url":{"description":"Public YouTube URL for the Short. Populated whenever the provider has data for the entity.","format":"uri","type":"string","x-anyapi-must-populate":true},"views":{"description":"Public view count when supplied by the upstream response.","minimum":0,"type":"integer"},"viewsAvailable":{"description":"Whether views is backed by a public count in the upstream response.","type":"boolean"}},"required":["id","url","views","viewsAvailable","likes","duration","contentType"],"type":"object"},"type":"array","x-anyapi-must-populate":true}},"required":["shorts","nextCursor"],"type":"object"}]},"found":{"description":"Whether the channel Shorts feed was found.","type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"YouTube Channel Shorts output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"YouTube Channel Shorts","tags":["youtube"],"x-mint":{"href":"/api-reference/youtube/channel-shorts"},"x-payment-info":{"price":{"amount":"0.001200","currency":"USD","mode":"fixed"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"amount":"0.001200","currency":"USD","minimumUsd":"0.001000","mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"amount":"0.001200","currency":"USD","minimumUsd":null,"mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/youtube.channel_videos":{"post":{"description":"List a YouTube channel's videos by handle or channel ID with cursor pagination (title, views, length, publish time).\n\n**Price:** \\$0.50 per 1,000 requests (flat per request - same cost regardless of results returned).\n\n**Routing:** 3 independent lanes are available in execution order. A failed attempt uses the next lane only when the request's payment authorizes that lane's price; the normalized schema stays the same.\n\n**Catalog:** [YouTube Channel Videos pricing and uptime](https://getanyapi.com/api/youtube/channel-videos) - live USD price, lane routing, and measured 30-day uptime. [Every YouTube endpoint](https://getanyapi.com/api/youtube).","operationId":"youtube_channel_videos","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"handle":"@mkbhd"},"schema":{"additionalProperties":false,"anyOf":[{"required":["handle"]},{"required":["channelId"]}],"example":{"handle":"@mkbhd"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"channelId":{"description":"YouTube channel ID.","type":"string"},"cursor":{"description":"Continuation token from a previous response for pagination.","type":"string"},"handle":{"description":"YouTube channel handle.","type":"string"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"sort":{"description":"Sort order.","enum":["latest","popular"],"type":"string"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true}},"title":"YouTube channel videos input","type":"object","x-aliases":{"username":"handle"}}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"oneOf":[{"type":"null"},{"additionalProperties":false,"properties":{"nextCursor":{"description":"Opaque cursor for the next page of videos, or null when this lane has no more. Pass it back as cursor to continue.","type":["string","null"]},"videos":{"description":"Populated whenever the provider has data for the entity.","items":{"properties":{"createdUtc":{"description":"UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds.","type":"number"},"id":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"image":{"description":"URL of the video thumbnail image, tracking query parameters stripped.","type":"string"},"lengthText":{"type":"string"},"publishedTime":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"title":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"url":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"views":{"type":"integer"}},"required":["id","url","title","views","lengthText","publishedTime"],"type":"object"},"type":"array","x-anyapi-must-populate":true}},"required":["videos","nextCursor"],"type":"object"}]},"found":{"type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"YouTube channel videos output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"YouTube Channel Videos","tags":["youtube"],"x-mint":{"href":"/api-reference/youtube/channel-videos"},"x-payment-info":{"price":{"amount":"0.000500","currency":"USD","mode":"fixed"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"amount":"0.001000","currency":"USD","minimumUsd":"0.001000","mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"amount":"0.000500","currency":"USD","minimumUsd":null,"mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/youtube.comment_replies":{"post":{"description":"List replies to a YouTube comment using a continuation token with cursor pagination (text, author, likes, publish time).\n\n**Price:** \\$1.20 per 1,000 requests (flat per request - same cost regardless of results returned).\n\n**Routing:** one lane serves this API today, so a failed attempt has nowhere to fail over to. Payment outcome follows the selected rail's settlement policy.\n\n**Catalog:** [YouTube Comment Replies pricing and uptime](https://getanyapi.com/api/youtube/comment-replies) - live USD price, lane routing, and measured 30-day uptime. [Every YouTube endpoint](https://getanyapi.com/api/youtube).","operationId":"youtube_comment_replies","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"continuationToken":"Eg0SC19fZm1EajBaSjFRGAYygwEaUBIaVWd3aXRjRk9fdmtpM0x4LUNfZDRBYUFCQWciAggAKhhVQ1g2T1EzRGtjc2JZTkU2SDh1UVF1VkEyC19fZm1EajBaSjFRQABICoIBAggBQi9jb21tZW50LXJlcGxpZXMtaXRlbS1VZ3dpdGNGT192a2kzTHgtQ19kNEFhQUJBZw=="},"schema":{"additionalProperties":false,"example":{"continuationToken":"Eg0SC19fZm1EajBaSjFRGAYygwEaUBIaVWd3aXRjRk9fdmtpM0x4LUNfZDRBYUFCQWciAggAKhhVQ1g2T1EzRGtjc2JZTkU2SDh1UVF1VkEyC19fZm1EajBaSjFRQABICoIBAggBQi9jb21tZW50LXJlcGxpZXMtaXRlbS1VZ3dpdGNGT192a2kzTHgtQ19kNEFhQUJBZw=="},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"continuationToken":{"description":"Replies continuation token from the comments endpoint, or the continuationToken from a previous replies response for further pagination.","type":"string"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true}},"required":["continuationToken"],"title":"YouTube Comment Replies input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"oneOf":[{"type":"null"},{"additionalProperties":false,"properties":{"comments":{"description":"Populated whenever the provider has data for the entity.","items":{"properties":{"authorAvatarUrl":{"description":"URL of the reply author's avatar image.","type":"string"},"authorId":{"description":"The reply author's YouTube channel ID.","type":"string"},"authorName":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"authorUrl":{"description":"Canonical URL of the reply author's channel, tracking query parameters stripped.","type":"string"},"authorVerified":{"description":"Whether the reply author is a verified channel.","type":"boolean"},"content":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"createdUtc":{"description":"UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds.","type":"number"},"id":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"likes":{"type":"integer"},"publishedTime":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true}},"required":["id","content","authorName","likes","publishedTime"],"type":"object"},"type":"array","x-anyapi-must-populate":true},"nextCursor":{"type":"string"}},"required":["comments","nextCursor"],"type":"object"}]},"found":{"type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"YouTube Comment Replies output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"YouTube Comment Replies","tags":["youtube"],"x-mint":{"href":"/api-reference/youtube/comment-replies"},"x-payment-info":{"price":{"amount":"0.001200","currency":"USD","mode":"fixed"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"amount":"0.001200","currency":"USD","minimumUsd":"0.001000","mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"amount":"0.001200","currency":"USD","minimumUsd":null,"mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/youtube.community_post":{"post":{"description":"Fetch a single YouTube community post by URL (text, images, channel, publish time).\n\n**Price:** \\$1.20 per 1,000 requests (flat per request - same cost regardless of results returned).\n\n**Routing:** 2 independent lanes are available in execution order. A failed attempt uses the next lane only when the request's payment authorizes that lane's price; the normalized schema stays the same.\n\n**Catalog:** [YouTube Community Post pricing and uptime](https://getanyapi.com/api/youtube/community-post) - live USD price, lane routing, and measured 30-day uptime. [Every YouTube endpoint](https://getanyapi.com/api/youtube).","operationId":"youtube_community_post","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"url":"https://www.youtube.com/post/Ugkx1LonSRBBUqASv-J8j9_FesxwlMAhT3_e"},"schema":{"additionalProperties":false,"example":{"url":"https://www.youtube.com/post/Ugkx1LonSRBBUqASv-J8j9_FesxwlMAhT3_e"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"url":{"description":"URL of the YouTube community post.","type":"string"}},"required":["url"],"title":"YouTube Community Post input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"oneOf":[{"type":"null"},{"properties":{"channelHandle":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"channelId":{"description":"YouTube channel ID of the channel that published the post.","type":"string"},"channelTitle":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"content":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"createdUtc":{"description":"UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds.","type":"number"},"id":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"image":{"description":"URL of the post's primary image.","type":"string"},"images":{"description":"URLs of every image attached to the post.","items":{"type":"string"},"type":"array"},"likeCount":{"description":"Number of likes on the post.","type":"integer"},"publishedTime":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true}},"required":["id","content","publishedTime","channelTitle","channelHandle"],"type":"object"}]},"found":{"type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"YouTube Community Post output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"YouTube Community Post","tags":["youtube"],"x-mint":{"href":"/api-reference/youtube/community-post"},"x-payment-info":{"price":{"amount":"0.001200","currency":"USD","mode":"fixed"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"amount":"0.001200","currency":"USD","minimumUsd":"0.001000","mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"amount":"0.001200","currency":"USD","minimumUsd":null,"mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/youtube.playlist":{"post":{"description":"List every video in a YouTube playlist (title, length, and channel per video plus playlist owner and totals).\n\n**Price:** \\$1.20 per 1,000 requests (flat per request - same cost regardless of results returned).\n\n**Routing:** one lane serves this API today, so a failed attempt has nowhere to fail over to. Payment outcome follows the selected rail's settlement policy.\n\n**Catalog:** [YouTube Playlist pricing and uptime](https://getanyapi.com/api/youtube/playlist) - live USD price, lane routing, and measured 30-day uptime. [Every YouTube endpoint](https://getanyapi.com/api/youtube).","operationId":"youtube_playlist","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"playlistId":"PLMC9KNkIncKtPzgY-5rmhvj7fax8fdxoj"},"schema":{"additionalProperties":false,"example":{"playlistId":"PLMC9KNkIncKtPzgY-5rmhvj7fax8fdxoj"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"playlistId":{"description":"The playlist ID: the \"list\" parameter in a playlist URL (e.g. \"PLu0W_9lII9ahIappRPN0MCAgtOu3lQjQi\").","type":"string"},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true}},"required":["playlistId"],"title":"YouTube playlist input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"oneOf":[{"type":"null"},{"additionalProperties":false,"properties":{"authorHandle":{"description":"The playlist owner's @handle, without the leading @.","type":"string"},"authorId":{"description":"YouTube channel ID of the playlist owner.","type":"string"},"authorUrl":{"description":"Canonical URL of the playlist owner's channel, tracking query parameters stripped.","type":"string"},"owner":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"title":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"totalVideos":{"type":"integer"},"videos":{"description":"Populated whenever the provider has data for the entity.","items":{"properties":{"channel":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"id":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"lengthSeconds":{"type":"integer"},"lengthText":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"thumbnail":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"title":{"type":"string"},"url":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true}},"required":["id","title","url","thumbnail","lengthText","lengthSeconds","channel"],"type":"object"},"type":"array","x-anyapi-must-populate":true}},"required":["title","owner","totalVideos","videos"],"type":"object"}]},"found":{"type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"YouTube playlist output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"YouTube Playlist","tags":["youtube"],"x-mint":{"href":"/api-reference/youtube/playlist"},"x-payment-info":{"price":{"amount":"0.001200","currency":"USD","mode":"fixed"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"amount":"0.001200","currency":"USD","minimumUsd":"0.001000","mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"amount":"0.001200","currency":"USD","minimumUsd":null,"mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/youtube.search":{"post":{"description":"Search YouTube and get matching videos (title, channel, views, length, publish time) as normalized JSON.\n\n**Price:** \\$0.50 per 1,000 requests (flat per request - same cost regardless of results returned).\n\n**Routing:** 3 independent lanes are available in execution order. A failed attempt uses the next lane only when the request's payment authorizes that lane's price; the normalized schema stays the same.\n\n**Catalog:** [YouTube Search pricing and uptime](https://getanyapi.com/api/youtube/search) - live USD price, lane routing, and measured 30-day uptime. [Every YouTube endpoint](https://getanyapi.com/api/youtube).","operationId":"youtube_search","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"query":"how to cook rice"},"schema":{"additionalProperties":false,"example":{"query":"how to cook rice"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"cursor":{"description":"Continuation token from a previous response for pagination.","type":"string"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"query":{"description":"The YouTube search query.","type":"string"},"requireCursor":{"deprecated":true,"description":"Deprecated; send `requireFields: [\"nextCursor\"]` instead, which does exactly the same thing. Set true if you intend to page through results, so the request is only served by a source that can return a nextCursor. Omit it and routing is unchanged, with the cheapest source serving. This can raise your price: when the cheapest source cannot page, a source that can serves, and you are quoted and charged its price. It stays accepted so callers that already send it keep working.","type":"boolean"},"requireFields":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Name the output fields this request must be able to return, for example `nextCursor`, and it is served only by a source that returns every one of them. Fields you do not name are still returned whenever the serving source has them. This can raise your price: when the cheapest source cannot return a named field, a dearer source serves, and you are quoted and charged its price. A named field can still be absent on a result that genuinely lacks it. Naming a combination that no single source returns together is refused as invalid input, with no charge. On a paginated walk it applies to the first page only; later pages stay with the source that page chose, at the price it was quoted.","items":{"enum":["authorAvatarUrl","authorId","createdUtc","image","lengthText","nextCursor","views"],"type":"string"},"type":"array","uniqueItems":true},"sortBy":{"default":"relevance","description":"Sort order: \"relevance\" (default) or \"popular\" (most-viewed).","enum":["relevance","popular"],"type":"string"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"uploadDate":{"description":"Filter by upload recency. Omit for any time.","enum":["today","this_week","this_month","this_year"],"type":"string"}},"required":["query"],"title":"YouTube search input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"oneOf":[{"type":"null"},{"additionalProperties":false,"properties":{"nextCursor":{"description":"Opaque cursor for the next page of results, or null when this lane has no more. Pass it back as cursor to continue.","type":["string","null"]},"videos":{"description":"Populated whenever the provider has data for the entity.","items":{"properties":{"authorAvatarUrl":{"description":"URL of the publishing channel's avatar image.","type":"string"},"authorId":{"description":"YouTube channel ID of the publishing channel.","type":"string"},"channel":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"createdUtc":{"description":"UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds.","type":"number"},"id":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"image":{"description":"URL of the video thumbnail image, tracking query parameters stripped.","type":"string"},"lengthText":{"type":"string"},"publishedTime":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"title":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"url":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"views":{"type":"integer"}},"required":["id","url","title","channel","views","lengthText","publishedTime"],"type":"object"},"type":"array","x-anyapi-must-populate":true}},"required":["videos"],"type":"object"}]},"found":{"type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"YouTube search output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"YouTube Search","tags":["youtube"],"x-mint":{"href":"/api-reference/youtube/search"},"x-payment-info":{"price":{"amount":"0.000500","currency":"USD","mode":"fixed"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"amount":"0.001000","currency":"USD","minimumUsd":"0.001000","mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"amount":"0.000500","currency":"USD","minimumUsd":null,"mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/youtube.search_hashtag":{"post":{"description":"Search YouTube videos by hashtag with cursor pagination (title, channel, views, length, publish time).\n\n**Price:** \\$1.20 per 1,000 requests (flat per request - same cost regardless of results returned).\n\n**Routing:** one lane serves this API today, so a failed attempt has nowhere to fail over to. Payment outcome follows the selected rail's settlement policy.\n\n**Catalog:** [YouTube Hashtag Search pricing and uptime](https://getanyapi.com/api/youtube/search-hashtag) - live USD price, lane routing, and measured 30-day uptime. [Every YouTube endpoint](https://getanyapi.com/api/youtube).","operationId":"youtube_search_hashtag","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"hashtag":"funny"},"schema":{"additionalProperties":false,"example":{"hashtag":"funny"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"cursor":{"description":"Continuation token from a previous response for pagination.","type":"string"},"hashtag":{"description":"Hashtag to search for (without the leading #).","type":"string"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"type":{"description":"Content filter. Only \"all\" is served: no source we buy returns a Shorts row with the channel and publish time this endpoint requires.","enum":["all"],"type":"string"}},"required":["hashtag"],"title":"YouTube Hashtag Search input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"oneOf":[{"type":"null"},{"additionalProperties":false,"properties":{"nextCursor":{"description":"Opaque cursor for the next page of videos, or null when this lane has no more. Pass it back as cursor to continue.","type":["string","null"]},"videos":{"description":"Populated whenever the provider has data for the entity.","items":{"properties":{"authorAvatarUrl":{"description":"URL of the publishing channel's avatar image.","type":"string"},"authorHandle":{"description":"The publishing channel's @handle, without the leading @.","type":"string"},"authorId":{"description":"YouTube channel ID of the publishing channel.","type":"string"},"channelTitle":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"createdUtc":{"description":"UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds.","type":"number"},"durationSeconds":{"description":"Length of the video in seconds.","type":"integer"},"id":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"image":{"description":"URL of the video thumbnail image, tracking query parameters stripped.","type":"string"},"lengthText":{"type":"string"},"publishedTime":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"title":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"url":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"views":{"type":"integer"}},"required":["id","url","title","channelTitle","views","lengthText","publishedTime"],"type":"object"},"type":"array","x-anyapi-must-populate":true}},"required":["videos","nextCursor"],"type":"object"}]},"found":{"type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"YouTube Hashtag Search output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"YouTube Hashtag Search","tags":["youtube"],"x-mint":{"href":"/api-reference/youtube/search-hashtag"},"x-payment-info":{"price":{"amount":"0.001200","currency":"USD","mode":"fixed"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"amount":"0.001200","currency":"USD","minimumUsd":"0.001000","mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"amount":"0.001200","currency":"USD","minimumUsd":null,"mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/youtube.search_shorts":{"post":{"description":"Search YouTube Shorts by keyword and get matching Shorts (title, views, URL) with cursor pagination as normalized JSON.\n\n**Price:** \\$1.20 per 1,000 requests (flat per request - same cost regardless of results returned).\n\n**Routing:** one lane serves this API today, so a failed attempt has nowhere to fail over to. Payment outcome follows the selected rail's settlement policy.\n\n**Catalog:** [YouTube Shorts Search pricing and uptime](https://getanyapi.com/api/youtube/search-shorts) - live USD price, lane routing, and measured 30-day uptime. [Every YouTube endpoint](https://getanyapi.com/api/youtube).","operationId":"youtube_search_shorts","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"query":"cats"},"schema":{"additionalProperties":false,"example":{"query":"cats"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"cursor":{"description":"Continuation token from a previous response for pagination.","type":"string"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"query":{"description":"The keyword to search Shorts for.","type":"string"},"sortBy":{"default":"relevance","description":"Sort order: \"relevance\" (default) or \"popular\" (most-viewed).","enum":["relevance","popular"],"type":"string"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"uploadDate":{"description":"Filter by upload recency. Omit for any time.","enum":["today","this_week","this_month","this_year"],"type":"string"}},"required":["query"],"title":"YouTube Shorts Search input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"oneOf":[{"type":"null"},{"additionalProperties":false,"properties":{"nextCursor":{"description":"Opaque cursor for the next page of results, or null when there are no more. Pass it back as cursor to continue.","type":["string","null"]},"shorts":{"description":"Populated whenever the provider has data for the entity.","items":{"properties":{"contentType":{"description":"Always \"short\": every row here comes from YouTube's Shorts shelf.","type":"string"},"id":{"description":"YouTube video id of the Short. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"title":{"description":"Title of the Short. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"url":{"description":"Watch URL for the Short. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"views":{"description":"View count, or 0 when the source did not publish one. Read viewsAvailable before trusting a 0.","type":"integer"},"viewsAvailable":{"description":"False when the source published no view count, so views is a placeholder rather than a measured zero.","type":"boolean"}},"required":["id","url","title","views","viewsAvailable","contentType"],"type":"object"},"type":"array","x-anyapi-must-populate":true}},"required":["shorts"],"type":"object"}]},"found":{"type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"YouTube Shorts Search output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"YouTube Shorts Search","tags":["youtube"],"x-mint":{"href":"/api-reference/youtube/search-shorts"},"x-payment-info":{"price":{"amount":"0.001200","currency":"USD","mode":"fixed"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"amount":"0.001200","currency":"USD","minimumUsd":"0.001000","mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"amount":"0.001200","currency":"USD","minimumUsd":null,"mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/youtube.trending_shorts":{"post":{"description":"List currently trending YouTube Shorts (title, channel, views, likes, duration).\n\n**Price:** \\$1.20 per 1,000 requests (flat per request - same cost regardless of results returned).\n\n**Routing:** one lane serves this API today, so a failed attempt has nowhere to fail over to. Payment outcome follows the selected rail's settlement policy.\n\n**Catalog:** [YouTube Trending Shorts pricing and uptime](https://getanyapi.com/api/youtube/trending-shorts) - live USD price, lane routing, and measured 30-day uptime. [Every YouTube endpoint](https://getanyapi.com/api/youtube).","operationId":"youtube_trending_shorts","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{},"schema":{"additionalProperties":false,"example":{},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true}},"title":"YouTube Trending Shorts input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"oneOf":[{"type":"null"},{"additionalProperties":false,"properties":{"shorts":{"description":"Populated whenever the provider has data for the entity.","items":{"properties":{"authorHandle":{"description":"The publishing channel's @handle, without the leading @.","type":"string"},"authorId":{"description":"YouTube channel ID of the publishing channel.","type":"string"},"authorUrl":{"description":"Canonical URL of the publishing channel, tracking query parameters stripped.","type":"string"},"category":{"description":"YouTube category the short is filed under.","type":"string"},"channelTitle":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"comments":{"description":"Number of comments on the short.","type":"integer"},"createdUtc":{"description":"UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds.","type":"number"},"duration":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"durationMs":{"description":"Length of the short in milliseconds.","type":"integer"},"id":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"image":{"description":"URL of the short thumbnail image, tracking query parameters stripped.","type":"string"},"likes":{"type":"integer"},"title":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"url":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"views":{"type":"integer"}},"required":["id","url","title","channelTitle","views","likes","duration"],"type":"object"},"type":"array","x-anyapi-must-populate":true}},"required":["shorts"],"type":"object"}]},"found":{"type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"YouTube Trending Shorts output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"YouTube Trending Shorts","tags":["youtube"],"x-mint":{"href":"/api-reference/youtube/trending-shorts"},"x-payment-info":{"price":{"amount":"0.001200","currency":"USD","mode":"fixed"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"amount":"0.001200","currency":"USD","minimumUsd":"0.001000","mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"amount":"0.001200","currency":"USD","minimumUsd":null,"mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/youtube.video":{"post":{"description":"Fetch a YouTube video or Short's metadata (title, channel, views, likes, duration, publish date) by URL or ID.\n\n**Price:** \\$0.90 per 1,000 requests (flat per request - same cost regardless of results returned).\n\n**Routing:** 2 independent lanes are available in execution order. A failed attempt uses the next lane only when the request's payment authorizes that lane's price; the normalized schema stays the same.\n\n**Catalog:** [YouTube Video pricing and uptime](https://getanyapi.com/api/youtube/video) - live USD price, lane routing, and measured 30-day uptime. [Every YouTube endpoint](https://getanyapi.com/api/youtube).","operationId":"youtube_video","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"url":"https://www.youtube.com/watch?v=dQw4w9WgXcQ"},"schema":{"additionalProperties":false,"anyOf":[{"required":["url"]},{"required":["id"]}],"example":{"url":"https://www.youtube.com/watch?v=dQw4w9WgXcQ"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"id":{"description":"YouTube video ID. A Short uses the same ID as any other video.","type":"string"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"url":{"description":"Full YouTube video URL. Shorts (youtube.com/shorts/...), youtu.be, live, and embed URLs all work.","type":"string"}},"title":"YouTube video input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"description":"The video result, or null when not found.","oneOf":[{"type":"null"},{"properties":{"authorAvatarUrl":{"description":"URL of the publishing channel's avatar image.","type":"string"},"authorId":{"description":"YouTube channel ID of the publishing channel.","type":"string"},"authorUrl":{"description":"Canonical URL of the publishing channel, tracking query parameters stripped.","type":"string"},"category":{"description":"YouTube category the video is filed under, for example \"Music\".","type":"string"},"channel":{"description":"Name of the channel that published the video. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"comments":{"description":"Number of comments.","type":"integer"},"createdUtc":{"description":"UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds. Populated whenever the provider has data for the entity.","type":"number","x-anyapi-must-populate":true},"description":{"description":"Full video description text.","type":"string"},"durationMs":{"description":"Duration of the video in milliseconds.","type":"integer"},"id":{"description":"Unique identifier of the video. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"image":{"description":"URL of the video thumbnail image.","type":"string"},"keywords":{"description":"Keywords the uploader tagged the video with.","items":{"type":"string"},"type":"array"},"likes":{"description":"Number of likes.","type":"integer"},"title":{"description":"Title of the video. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"views":{"description":"Number of views.","type":"integer"}},"required":["id","title","channel","views","likes","comments","durationMs","createdUtc"],"type":"object"}]},"found":{"description":"Whether the video was found.","type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"YouTube video output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"YouTube Video","tags":["youtube"],"x-mint":{"href":"/api-reference/youtube/video"},"x-payment-info":{"price":{"amount":"0.000900","currency":"USD","mode":"fixed"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"amount":"0.001000","currency":"USD","minimumUsd":"0.001000","mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"amount":"0.000900","currency":"USD","minimumUsd":null,"mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/youtube.video_comments":{"post":{"description":"List the comments on a YouTube video or Short by URL with cursor pagination (text, author, likes, reply count).\n\n**Price:** \\$0.80 per 1,000 requests (flat per request - same cost regardless of results returned).\n\n**Routing:** 3 independent lanes are available in execution order. A failed attempt uses the next lane only when the request's payment authorizes that lane's price; the normalized schema stays the same.\n\n**Catalog:** [YouTube Video Comments pricing and uptime](https://getanyapi.com/api/youtube/video-comments) - live USD price, lane routing, and measured 30-day uptime. [Every YouTube endpoint](https://getanyapi.com/api/youtube).","operationId":"youtube_video_comments","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"url":"https://www.youtube.com/watch?v=dQw4w9WgXcQ"},"schema":{"additionalProperties":false,"example":{"url":"https://www.youtube.com/watch?v=dQw4w9WgXcQ"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"cursor":{"description":"Continuation token from a previous response for pagination.","type":"string"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"order":{"description":"Comment order (e.g. top, newest).","enum":["top","newest"],"type":"string"},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"url":{"description":"Full YouTube video URL. Shorts (youtube.com/shorts/...) and youtu.be URLs also work.","type":"string"}},"required":["url"],"title":"YouTube video comments input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"oneOf":[{"type":"null"},{"additionalProperties":false,"properties":{"comments":{"description":"Populated whenever the provider has data for the entity.","items":{"properties":{"author":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"authorAvatarUrl":{"description":"URL of the comment author's avatar image.","type":"string"},"authorId":{"description":"The comment author's YouTube channel ID.","type":"string"},"authorUrl":{"description":"Canonical URL of the comment author's channel, tracking query parameters stripped.","type":"string"},"id":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"likes":{"type":"integer"},"publishedTime":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"replies":{"type":"integer"},"text":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true}},"required":["id","text","author","likes","replies","publishedTime"],"type":"object"},"type":"array","x-anyapi-must-populate":true},"nextCursor":{"description":"Opaque cursor for the next page of comments, or null when this lane has no more. Pass it back as cursor to continue.","type":["string","null"]}},"required":["comments","nextCursor"],"type":"object"}]},"found":{"type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"YouTube video comments output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"YouTube Video Comments","tags":["youtube"],"x-mint":{"href":"/api-reference/youtube/video-comments"},"x-payment-info":{"price":{"amount":"0.000800","currency":"USD","mode":"fixed"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"amount":"0.001000","currency":"USD","minimumUsd":"0.001000","mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"amount":"0.000800","currency":"USD","minimumUsd":null,"mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/youtube.video_sponsors":{"post":{"description":"Detect suspected sponsors and paid promotions in a YouTube video by URL (sponsor names, websites, confidence).\n\n**Price:** \\$1.20 per 1,000 requests (flat per request - same cost regardless of results returned).\n\n**Routing:** one lane serves this API today, so a failed attempt has nowhere to fail over to. Payment outcome follows the selected rail's settlement policy.\n\n**Catalog:** [YouTube Video Sponsors pricing and uptime](https://getanyapi.com/api/youtube/video-sponsors) - live USD price, lane routing, and measured 30-day uptime. [Every YouTube endpoint](https://getanyapi.com/api/youtube).","operationId":"youtube_video_sponsors","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"url":"https://www.youtube.com/watch?v=AVO0ifle-OU"},"schema":{"additionalProperties":false,"example":{"url":"https://www.youtube.com/watch?v=AVO0ifle-OU"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"language":{"description":"2-letter language code for transcript lookup (e.g. en, es, fr).","type":"string"},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"url":{"description":"YouTube video or Short URL.","type":"string"}},"required":["url"],"title":"YouTube Video Sponsors input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"oneOf":[{"type":"null"},{"additionalProperties":false,"properties":{"authorAvatarUrl":{"description":"URL of the publishing channel's avatar image.","type":"string"},"authorHandle":{"description":"The publishing channel's @handle, without the leading @.","type":"string"},"authorId":{"description":"YouTube channel ID of the publishing channel.","type":"string"},"authorName":{"description":"Display name of the publishing channel.","type":"string"},"authorUrl":{"description":"Canonical URL of the publishing channel, tracking query parameters stripped.","type":"string"},"detectionStatus":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"isPaidPromotion":{"type":"boolean"},"suspectedSponsors":{"items":{"properties":{"confidence":{"type":"string"},"name":{"type":"string"},"website":{"type":"string"}},"required":["name","website","confidence"],"type":"object"},"type":"array"},"title":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"url":{"description":"Watch URL of the video.","type":"string"},"videoId":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true}},"required":["videoId","title","isPaidPromotion","detectionStatus","suspectedSponsors"],"type":"object"}]},"found":{"type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"YouTube Video Sponsors output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"YouTube Video Sponsors","tags":["youtube"],"x-mint":{"href":"/api-reference/youtube/video-sponsors"},"x-payment-info":{"price":{"amount":"0.001200","currency":"USD","mode":"fixed"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"amount":"0.001200","currency":"USD","minimumUsd":"0.001000","mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"amount":"0.001200","currency":"USD","minimumUsd":null,"mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/youtube.video_transcript":{"post":{"description":"Fetch the transcript/captions of a YouTube video or Short by URL or ID.\n\n**Price:** \\$0.90 per 1,000 requests (flat per request - same cost regardless of results returned).\n\n**Routing:** 3 independent lanes are available in execution order. A failed attempt uses the next lane only when the request's payment authorizes that lane's price; the normalized schema stays the same.\n\n**Catalog:** [YouTube Video Transcript pricing and uptime](https://getanyapi.com/api/youtube/video-transcript) - live USD price, lane routing, and measured 30-day uptime. [Every YouTube endpoint](https://getanyapi.com/api/youtube).","operationId":"youtube_video_transcript","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"url":"https://www.youtube.com/watch?v=dQw4w9WgXcQ"},"schema":{"additionalProperties":false,"anyOf":[{"required":["url"]},{"required":["id"]}],"example":{"url":"https://www.youtube.com/watch?v=dQw4w9WgXcQ"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"id":{"description":"YouTube video ID. A Short uses the same ID as any other video.","type":"string"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"requireFields":{"description":"Only use sources that return these fields. The cheapest source returns the transcript as one block of text and no timings, so name any of these to be served by a source that carries timed segments instead.","items":{"enum":["durationSeconds","segments","startSeconds","text"],"type":"string"},"type":"array","uniqueItems":true},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"url":{"description":"Full YouTube video URL. Shorts (youtube.com/shorts/...), youtu.be, live, and embed URLs all work.","type":"string"}},"title":"YouTube video transcript input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"oneOf":[{"type":"null"},{"properties":{"language":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"segments":{"description":"Timed transcript segments in source order when the serving lane supplies caption timing.","items":{"properties":{"durationSeconds":{"description":"Segment duration in seconds.","minimum":0,"type":"number"},"startSeconds":{"description":"Segment start offset in seconds.","minimum":0,"type":"number"},"text":{"description":"Text of this transcript segment.","type":"string"}},"required":["text","startSeconds","durationSeconds"],"type":"object"},"type":"array"},"transcript":{"description":"Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true}},"required":["transcript","language"],"type":"object"}]},"found":{"type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"YouTube video transcript output","type":"object","x-anyapi-heavy":true},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"YouTube Video Transcript","tags":["youtube"],"x-mint":{"href":"/api-reference/youtube/video-transcript"},"x-payment-info":{"price":{"amount":"0.000900","currency":"USD","mode":"fixed"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"amount":"0.001000","currency":"USD","minimumUsd":"0.001000","mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"amount":"0.000900","currency":"USD","minimumUsd":null,"mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/youtube.video_transcript_full":{"post":{"description":"Fetch a YouTube video or Short transcript with timed segments and its provenance: whether the words are creator-written captions or machine speech recognition.\n\n**Price:** \\$1.00 per 1,000 requests (flat per request - same cost regardless of results returned).\n\n**Routing:** 2 independent lanes are available in execution order. A failed attempt uses the next lane only when the request's payment authorizes that lane's price; the normalized schema stays the same.\n\n**Catalog:** [YouTube Video Transcript (Provenance) pricing and uptime](https://getanyapi.com/api/youtube/video-transcript-full) - live USD price, lane routing, and measured 30-day uptime. [Every YouTube endpoint](https://getanyapi.com/api/youtube).","operationId":"youtube_video_transcript_full","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"url":"https://www.youtube.com/watch?v=dQw4w9WgXcQ"},"schema":{"additionalProperties":false,"example":{"url":"https://www.youtube.com/watch?v=dQw4w9WgXcQ"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"captionKind":{"default":"any","description":"Which caption track to accept: \"manual\" only creator-written captions, \"automatic\" only YouTube's speech recognition, \"any\" whichever exists.","enum":["manual","automatic","any"],"type":"string"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"language":{"description":"Preferred caption language code (e.g. \"en\", \"es\"). Defaults to English.","type":"string"},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"requireFields":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Name the output fields this request must be able to return, for example `isAiGenerated`, and it is served only by a source that returns every one of them. Fields you do not name are still returned whenever the serving source has them. This can raise your price: when the cheapest source cannot return a named field, a dearer source serves, and you are quoted and charged its price. A named field can still be absent on a transcript that genuinely lacks it. Naming a combination that no single source returns together is refused as invalid input, with no charge.","items":{"enum":["authorId","authorUrl","category","channel","createdUtc","description","durationSeconds","endSeconds","image","isAiGenerated","keywords","likes","startSeconds","text","title","url","videoId","views"],"type":"string"},"type":"array","uniqueItems":true},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"url":{"description":"YouTube video or Short URL (e.g. \"https://www.youtube.com/watch?v=dQw4w9WgXcQ\" or \"https://www.youtube.com/shorts/Fir1x9cw2vg\").","minLength":1,"type":"string"}},"required":["url"],"title":"YouTube Video Transcript (Provenance) input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"oneOf":[{"type":"null"},{"properties":{"authorId":{"description":"YouTube channel ID of the publishing channel.","type":"string"},"authorUrl":{"description":"Canonical URL of the publishing channel, tracking query parameters stripped.","type":"string"},"category":{"description":"YouTube category the video is filed under, for example \"Music\".","type":"string"},"channel":{"description":"Channel name that published the video.","type":"string"},"createdUtc":{"description":"UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds.","type":"number"},"description":{"description":"Full video description text.","type":"string"},"durationSeconds":{"description":"Video duration in seconds.","minimum":0,"type":"number"},"image":{"description":"URL of the video thumbnail image.","type":"string"},"isAiGenerated":{"description":"True when the words were recognized from the audio by the serving lane rather than read from any YouTube caption track, or null when the serving source does not say.","type":["boolean","null"]},"isAutoGenerated":{"description":"True when YouTube generated the caption track by speech recognition rather than the creator supplying it. Automatic captions carry recognition errors, especially on names and jargon. Populated whenever the provider has data for the entity.","type":"boolean","x-anyapi-must-populate":true},"keywords":{"description":"Keywords the uploader tagged the video with.","items":{"type":"string"},"type":"array"},"language":{"description":"Caption language code (e.g. \"en\"). Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"likes":{"description":"Number of likes.","type":"integer"},"segments":{"description":"Timed transcript segments in playback order. Populated whenever the provider has data for the entity.","items":{"properties":{"endSeconds":{"description":"Segment end offset in seconds.","minimum":0,"type":"number"},"startSeconds":{"description":"Segment start offset in seconds.","minimum":0,"type":"number"},"text":{"description":"Text of this transcript segment.","type":"string"}},"required":["text","startSeconds","endSeconds"],"type":"object"},"type":"array","x-anyapi-must-populate":true},"title":{"description":"Video title.","type":"string"},"transcript":{"description":"Full transcript text, segments joined in playback order. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"url":{"description":"Watch URL of the video.","type":"string"},"videoId":{"description":"Unique identifier of the video.","type":"string"},"views":{"description":"Number of views.","type":"integer"}},"required":["transcript","language","isAutoGenerated"],"type":"object"}]},"found":{"type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"YouTube Video Transcript (Provenance) output","type":"object","x-anyapi-heavy":true},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"YouTube Video Transcript (Provenance)","tags":["youtube"],"x-mint":{"href":"/api-reference/youtube/video-transcript-full"},"x-payment-info":{"price":{"amount":"0.001000","currency":"USD","mode":"fixed"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"amount":"0.001000","currency":"USD","minimumUsd":"0.001000","mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"amount":"0.001000","currency":"USD","minimumUsd":null,"mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/zhihu.answer":{"post":{"description":"Fetch a public Zhihu answer with normalized author and question data.\n\n**Price:** \\$1.20 per 1,000 requests (flat per request - same cost regardless of results returned).\n\n**Routing:** one lane serves this API today, so a failed attempt has nowhere to fail over to. Payment outcome follows the selected rail's settlement policy.\n\n**Catalog:** [Zhihu Answer pricing and uptime](https://getanyapi.com/api/zhihu/answer) - live USD price, lane routing, and measured 30-day uptime. [Every Zhihu endpoint](https://getanyapi.com/api/zhihu).","operationId":"zhihu_answer","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"answerId":"2054145988235880002"},"schema":{"additionalProperties":false,"example":{"answerId":"2054145988235880002"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"answerId":{"description":"Zhihu answer identifier.","type":"string"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true}},"required":["answerId"],"title":"Zhihu answer input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"description":"Normalized answer data, or null when not found.","oneOf":[{"type":"null"},{"properties":{"authorHeadline":{"description":"Author headline.","type":"string"},"authorImage":{"description":"Author avatar URL.","format":"uri","type":"string"},"authorName":{"description":"Author display name. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"authorToken":{"description":"Author URL token.","type":"string"},"authorUrl":{"description":"Canonical URL of the author's Zhihu profile.","type":"string"},"authorUserId":{"description":"Author identifier.","type":"string"},"createdUtc":{"description":"UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds. Populated whenever the provider has data for the entity.","type":"number","x-anyapi-must-populate":true},"excerpt":{"description":"Answer excerpt. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"id":{"description":"Answer identifier. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"questionId":{"description":"Parent question identifier. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"questionTitle":{"description":"Parent question title. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"text":{"description":"Full body text of the answer, with HTML markup stripped.","type":"string"},"updatedUtc":{"description":"Last update UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds.","type":"number"},"url":{"description":"Canonical answer URL. Populated whenever the provider has data for the entity.","format":"uri","type":"string","x-anyapi-must-populate":true}},"required":["id","url"],"type":"object"}]},"found":{"description":"True when the answer was found.","type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"Zhihu answer output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"Zhihu Answer","tags":["zhihu"],"x-mint":{"href":"/api-reference/zhihu/answer"},"x-payment-info":{"price":{"amount":"0.001200","currency":"USD","mode":"fixed"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"amount":"0.001200","currency":"USD","minimumUsd":"0.001000","mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"amount":"0.001200","currency":"USD","minimumUsd":null,"mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/zhihu.profile":{"post":{"description":"Fetch a public Zhihu profile with normalized identity and audience data.\n\n**Price:** \\$1.20 per 1,000 requests (flat per request - same cost regardless of results returned).\n\n**Routing:** one lane serves this API today, so a failed attempt has nowhere to fail over to. Payment outcome follows the selected rail's settlement policy.\n\n**Catalog:** [Zhihu Profile pricing and uptime](https://getanyapi.com/api/zhihu/profile) - live USD price, lane routing, and measured 30-day uptime. [Every Zhihu endpoint](https://getanyapi.com/api/zhihu).","operationId":"zhihu_profile","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"userToken":"ming-he-43-93"},"schema":{"additionalProperties":false,"example":{"userToken":"ming-he-43-93"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"userToken":{"description":"Zhihu user URL token.","type":"string"}},"required":["userToken"],"title":"Zhihu profile input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"description":"Normalized profile data, or null when not found.","oneOf":[{"type":"null"},{"properties":{"answers":{"description":"Published answer count.","type":"integer"},"articles":{"description":"Published article count.","type":"integer"},"followers":{"description":"Follower count.","type":"integer"},"gender":{"description":"Gender code reported by Zhihu.","type":"integer"},"headline":{"description":"Profile headline. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"id":{"description":"User identifier. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"image":{"description":"Profile image URL. Populated whenever the provider has data for the entity.","format":"uri","type":"string","x-anyapi-must-populate":true},"ipLocation":{"description":"IP location label reported by Zhihu.","type":"string"},"name":{"description":"Display name. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"organization":{"description":"Whether this is an organization profile.","type":"boolean"},"url":{"description":"Canonical profile URL. Populated whenever the provider has data for the entity.","format":"uri","type":"string","x-anyapi-must-populate":true},"userToken":{"description":"User URL token. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true}},"required":["id","userToken","url"],"type":"object"}]},"found":{"description":"True when the profile was found.","type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"Zhihu profile output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"Zhihu Profile","tags":["zhihu"],"x-mint":{"href":"/api-reference/zhihu/profile"},"x-payment-info":{"price":{"amount":"0.001200","currency":"USD","mode":"fixed"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"amount":"0.001200","currency":"USD","minimumUsd":"0.001000","mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"amount":"0.001200","currency":"USD","minimumUsd":null,"mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/zhihu.question":{"post":{"description":"Fetch a public Zhihu question with normalized text and engagement statistics.\n\n**Price:** \\$1.20 per 1,000 requests (flat per request - same cost regardless of results returned).\n\n**Routing:** one lane serves this API today, so a failed attempt has nowhere to fail over to. Payment outcome follows the selected rail's settlement policy.\n\n**Catalog:** [Zhihu Question pricing and uptime](https://getanyapi.com/api/zhihu/question) - live USD price, lane routing, and measured 30-day uptime. [Every Zhihu endpoint](https://getanyapi.com/api/zhihu).","operationId":"zhihu_question","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"questionId":"37811449"},"schema":{"additionalProperties":false,"example":{"questionId":"37811449"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"questionId":{"description":"Zhihu question identifier.","type":"string"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true}},"required":["questionId"],"title":"Zhihu question input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"description":"Normalized question data, or null when not found.","oneOf":[{"type":"null"},{"properties":{"answers":{"description":"Answer count.","type":"integer"},"comments":{"description":"Comment count.","type":"integer"},"createdUtc":{"description":"UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds. Populated whenever the provider has data for the entity.","type":"number","x-anyapi-must-populate":true},"description":{"description":"Question body as returned by Zhihu. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"excerpt":{"description":"Short question excerpt.","type":"string"},"followers":{"description":"Follower count.","type":"integer"},"id":{"description":"Question identifier. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"title":{"description":"Question title. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"updatedUtc":{"description":"Last update UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds.","type":"number"},"url":{"description":"Canonical question URL. Populated whenever the provider has data for the entity.","format":"uri","type":"string","x-anyapi-must-populate":true},"views":{"description":"View count.","type":"integer"}},"required":["id","url"],"type":"object"}]},"found":{"description":"True when the question was found.","type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"Zhihu question output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"Zhihu Question","tags":["zhihu"],"x-mint":{"href":"/api-reference/zhihu/question"},"x-payment-info":{"price":{"amount":"0.001200","currency":"USD","mode":"fixed"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"amount":"0.001200","currency":"USD","minimumUsd":"0.001000","mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"amount":"0.001200","currency":"USD","minimumUsd":null,"mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/zhihu.question_answers":{"post":{"description":"List public answers to a Zhihu question with normalized authors and engagement data.\n\n**Price:** \\$1.20 per 1,000 requests (flat per request - same cost regardless of results returned).\n\n**Routing:** one lane serves this API today, so a failed attempt has nowhere to fail over to. Payment outcome follows the selected rail's settlement policy.\n\n**Catalog:** [Zhihu Question Answers pricing and uptime](https://getanyapi.com/api/zhihu/question-answers) - live USD price, lane routing, and measured 30-day uptime. [Every Zhihu endpoint](https://getanyapi.com/api/zhihu).","operationId":"zhihu_question_answers","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"limit":5,"offset":0,"order":"default","questionId":"37811449"},"schema":{"additionalProperties":false,"example":{"limit":5,"offset":0,"order":"default","questionId":"37811449"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"cursor":{"default":"","description":"Pagination cursor from an answer item in the previous response.","type":"string"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"limit":{"default":5,"description":"Number of answers requested per page.","type":"integer"},"offset":{"default":0,"description":"Pagination offset.","type":"integer"},"order":{"default":"default","description":"Answer ordering: default ranking or recently updated.","enum":["default","updated"],"type":"string"},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"questionId":{"description":"Zhihu question identifier.","type":"string"},"sessionId":{"default":"","description":"Pagination session identifier returned in the previous response.","type":"string"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true}},"required":["questionId"],"title":"Zhihu question answers input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"description":"Answer results and pagination state, or null when none were found.","oneOf":[{"type":"null"},{"additionalProperties":false,"properties":{"answers":{"description":"Normalized answers. Populated whenever the provider has data for the entity.","items":{"properties":{"authorHeadline":{"description":"One-line headline the author shows on their Zhihu profile.","type":"string"},"authorImage":{"description":"Author avatar URL.","format":"uri","type":"string"},"authorName":{"description":"Author display name. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"authorToken":{"description":"Author URL token.","type":"string"},"authorUrl":{"description":"Canonical URL of the author's Zhihu profile.","type":"string"},"authorUserId":{"description":"Author identifier.","type":"string"},"comments":{"description":"Comment count.","type":"integer"},"createdUtc":{"description":"UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds. Populated whenever the provider has data for the entity.","type":"number","x-anyapi-must-populate":true},"cursor":{"description":"Cursor associated with this answer; use the final item cursor for the next page.","type":"string"},"excerpt":{"description":"Answer excerpt. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"id":{"description":"Answer identifier. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"questionId":{"description":"Zhihu ID of the question the answer belongs to.","type":"string"},"questionTitle":{"description":"Title of the question the answer belongs to.","type":"string"},"saves":{"description":"Save count.","type":"integer"},"text":{"description":"Full body text of the answer, with HTML markup stripped.","type":"string"},"thanks":{"description":"Thanks count.","type":"integer"},"updatedUtc":{"description":"Last update UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds.","type":"number"},"url":{"description":"Canonical answer URL. Populated whenever the provider has data for the entity.","format":"uri","type":"string","x-anyapi-must-populate":true},"votes":{"description":"Upvote count.","type":"integer"}},"required":["id","url"],"type":"object"},"type":"array","x-anyapi-must-populate":true},"isEnd":{"description":"Whether the result set has reached its final page.","type":"boolean"},"sessionId":{"description":"Session identifier to pass when requesting another page.","type":"string"}},"required":["isEnd","sessionId","answers"],"type":"object"}]},"found":{"description":"True when answers were found.","type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"Zhihu question answers output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"Zhihu Question Answers","tags":["zhihu"],"x-mint":{"href":"/api-reference/zhihu/question-answers"},"x-payment-info":{"price":{"amount":"0.001200","currency":"USD","mode":"fixed"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"amount":"0.001200","currency":"USD","minimumUsd":"0.001000","mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"amount":"0.001200","currency":"USD","minimumUsd":null,"mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/zhihu.search_articles":{"post":{"description":"Search public Zhihu articles by keyword with normalized author and engagement data.\n\n**Price:** \\$1.20 per 1,000 requests (flat per request - same cost regardless of results returned).\n\n**Routing:** one lane serves this API today, so a failed attempt has nowhere to fail over to. Payment outcome follows the selected rail's settlement policy.\n\n**Catalog:** [Zhihu Article Search pricing and uptime](https://getanyapi.com/api/zhihu/search-articles) - live USD price, lane routing, and measured 30-day uptime. [Every Zhihu endpoint](https://getanyapi.com/api/zhihu).","operationId":"zhihu_search_articles","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"limit":"20","query":"deepseek","showAllTopics":0},"schema":{"additionalProperties":false,"example":{"limit":"20","query":"deepseek","showAllTopics":0},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"limit":{"default":"20","description":"Number of articles requested per page.","type":"string"},"offset":{"default":"0","description":"Result offset returned as nextOffset in the previous response.","type":"string"},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"query":{"description":"Search keyword.","type":"string"},"searchHashId":{"default":"","description":"Search hash identifier returned in the previous response.","type":"string"},"showAllTopics":{"default":0,"description":"Whether to include all topics: 0 excludes them and 1 includes them.","type":"integer"},"sort":{"default":"","description":"Article ordering: comprehensive, most upvoted, or newest.","enum":["","upvoted_count","created_time"],"type":"string"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"timeInterval":{"default":"","description":"Optional publication-time filter.","enum":["","a_day","a_week","a_month","three_months","half_a_year","a_year"],"type":"string"},"verticalInfo":{"default":"0,0,0,0,0,0,0,0,0,2,0,0","description":"Article-search vertical continuation state returned as nextVerticalInfo in the previous response.","type":"string"}},"required":["query"],"title":"Zhihu article search input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"description":"Article results and pagination state, or null when none were found.","oneOf":[{"type":"null"},{"additionalProperties":false,"properties":{"articles":{"description":"Normalized article results. Populated whenever the provider has data for the entity.","items":{"properties":{"authorImage":{"description":"Author avatar URL.","format":"uri","type":"string"},"authorName":{"description":"Author display name. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"authorToken":{"description":"Author URL token.","type":"string"},"authorUrl":{"description":"Canonical URL of the author's Zhihu profile.","type":"string"},"authorUserId":{"description":"Author identifier.","type":"string"},"comments":{"description":"Comment count.","type":"integer"},"createdUtc":{"description":"UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds.","type":"number"},"excerpt":{"description":"Article excerpt. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"id":{"description":"Article identifier. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"saves":{"description":"Number of times the article was saved to a collection.","type":"integer"},"text":{"description":"Full body text of the article, with HTML markup stripped.","type":"string"},"title":{"description":"Article title. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"updatedUtc":{"description":"Last update UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds.","type":"number"},"url":{"description":"Canonical article URL. Populated whenever the provider has data for the entity.","format":"uri","type":"string","x-anyapi-must-populate":true},"votes":{"description":"Upvote count.","type":"integer"}},"required":["id","url"],"type":"object"},"type":"array","x-anyapi-must-populate":true},"isEnd":{"description":"Whether the result set has reached its final page.","type":"boolean"},"nextOffset":{"description":"Result offset to pass as offset when requesting the next page.","type":"string"},"nextVerticalInfo":{"description":"Article-search vertical continuation state to pass as verticalInfo when requesting the next page.","type":"string"},"searchHashId":{"description":"Search hash identifier to pass when requesting another page.","type":"string"}},"required":["isEnd","nextOffset","searchHashId","nextVerticalInfo","articles"],"type":"object"}]},"found":{"description":"True when articles were found.","type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"Zhihu article search output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"Zhihu Article Search","tags":["zhihu"],"x-mint":{"href":"/api-reference/zhihu/search-articles"},"x-payment-info":{"price":{"amount":"0.001200","currency":"USD","mode":"fixed"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"amount":"0.001200","currency":"USD","minimumUsd":"0.001000","mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"amount":"0.001200","currency":"USD","minimumUsd":null,"mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/zillow.property":{"post":{"description":"Fetch full details for a single Zillow property listing by URL (price, facts and features, photos, and price/tax history).\n\n**Price:** \\$0.50 per 1,000 requests (flat per request - same cost regardless of results returned).\n\n**Routing:** 3 independent lanes are available in execution order. A failed attempt uses the next lane only when the request's payment authorizes that lane's price; the normalized schema stays the same.\n\n**Catalog:** [Zillow Property pricing and uptime](https://getanyapi.com/api/zillow/property) - live USD price, lane routing, and measured 30-day uptime. [Every Zillow endpoint](https://getanyapi.com/api/zillow).","operationId":"zillow_property","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"url":"https://www.zillow.com/homedetails/4510-Secure-Ln-Austin-TX-78725/83126034_zpid/"},"schema":{"additionalProperties":false,"example":{"url":"https://www.zillow.com/homedetails/4510-Secure-Ln-Austin-TX-78725/83126034_zpid/"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"url":{"description":"Zillow property details URL (e.g. https://www.zillow.com/homedetails/123-Main-St-Anytown-CA-90210/12345678_zpid/).","type":"string"}},"required":["url"],"title":"Zillow property input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"description":"The result wrapper, or null when the property was not found.","oneOf":[{"type":"null"},{"additionalProperties":false,"properties":{"items":{"description":"The matched property record (single element for a property lookup). Populated whenever the provider has data for the entity.","items":{"properties":{"addressLine":{"description":"Street address line of the property.","type":"string"},"baths":{"description":"Number of bathrooms.","type":"number"},"beds":{"description":"Number of bedrooms.","type":"number"},"city":{"description":"City the property is in.","type":"string"},"country":{"description":"Country the property is in.","type":"string"},"county":{"description":"County the property is in.","type":"string"},"currency":{"description":"Currency code for the price (e.g. USD).","type":"string"},"daysOnZillow":{"description":"Days the listing has been on Zillow.","type":"integer"},"description":{"description":"Listing description text.","type":"string"},"homeStatus":{"description":"Listing status (e.g. FOR_SALE, RECENTLY_SOLD, OTHER).","type":"string"},"homeType":{"description":"Home type (e.g. SINGLE_FAMILY, CONDO, TOWNHOUSE).","type":"string"},"image":{"description":"Primary listing photo URL.","type":"string"},"images":{"description":"Listing photos.","items":{"properties":{"url":{"description":"Photo URL.","type":"string"}},"type":"object"},"type":"array"},"latitude":{"description":"Latitude of the property in decimal degrees.","type":"number"},"longitude":{"description":"Longitude of the property in decimal degrees.","type":"number"},"mlsName":{"description":"Name of the multiple listing service the listing came from.","type":"string"},"postalCode":{"description":"Postal (ZIP) code of the property.","type":"string"},"price":{"description":"Listed price in the listing currency.","type":"number"},"propertyTaxRate":{"description":"Annual property tax rate as a percentage.","type":"number"},"rentZestimate":{"description":"Zillow estimated monthly rent.","type":"number"},"sqft":{"description":"Interior living area in square feet.","type":"number"},"state":{"description":"Two-letter state code the property is in.","type":"string"},"title":{"description":"Street address line used as the property title.","type":"string"},"url":{"description":"Canonical Zillow property detail page URL. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"zestimate":{"description":"Zillow estimated market value.","type":"number"},"zpid":{"description":"Zillow property id (zpid), the stable identifier for the property. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true}},"required":["zpid","url"],"type":"object"},"type":"array","x-anyapi-must-populate":true}},"required":["items"],"type":"object"}]},"found":{"description":"True when the property URL resolved to a listing.","type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"Zillow property output","type":"object","x-anyapi-heavy":true},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"Zillow Property","tags":["zillow"],"x-mint":{"href":"/api-reference/zillow/property"},"x-payment-info":{"price":{"amount":"0.000500","currency":"USD","mode":"fixed"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"amount":"0.001000","currency":"USD","minimumUsd":"0.001000","mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"amount":"0.000500","currency":"USD","minimumUsd":null,"mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}},"/v1/run/zillow.search":{"post":{"description":"Search Zillow for-sale, rental, or sold listings by region-level location (city, ZIP, county, or neighborhood) with optional price, bedroom, living-area, home-type, recency, and sort filters and get matching properties (price, address, beds, baths, living area, status, Zestimate) as normalized JSON.\n\n**Price:** \\$0.50 per 1,000 requests (flat per request - same cost regardless of results returned).\n\n**Routing:** 3 independent lanes are available in execution order. A failed attempt uses the next lane only when the request's payment authorizes that lane's price; the normalized schema stays the same.\n\n**Catalog:** [Zillow Search pricing and uptime](https://getanyapi.com/api/zillow/search) - live USD price, lane routing, and measured 30-day uptime. [Every Zillow endpoint](https://getanyapi.com/api/zillow).","operationId":"zillow_search","parameters":[{"description":"Optional. Comma-separated keys (dotted paths like `author.name` descend into nested objects) to keep on each result item. Keys are matched relative to each result item after the `data`/`items` envelope is unwrapped, not against the top-level response envelope, so use `jq` to reshape the whole envelope. Shrinks the response without changing cost.","in":"query","name":"fields","required":false,"schema":{"type":"string"}},{"description":"Optional. Cap the number of result rows returned; a `_truncated` note reports how many were withheld so you can page via the API's own `limit`. Does not change cost.","in":"query","name":"max_items","required":false,"schema":{"minimum":0,"type":"integer"}},{"description":"Optional. Return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost.","in":"query","name":"summary","required":false,"schema":{"type":"boolean"}},{"description":"Optional. A jq expression applied to the result envelope; its output replaces `output` (multiple outputs collect into an array). Reshape freely, e.g. `jq=.data | {title, description, md: .markdown[:3500]}`. Runs sandboxed with a 250ms / 2MB budget; on failure the full result is returned with a `jqError`. Does not change cost.","in":"query","name":"jq","required":false,"schema":{"type":"string"}},{"description":"Optional. The most you are willing to pay for this one request, in US dollars (for example 0.05). Any route that would charge more than this is not used, so a request only ever runs on something you can afford. If nothing is available at or below your amount, the request is refused before it runs, nothing is charged, and the message tells you the cheapest price per request so you can raise it. Leave it out to accept the normal price.","in":"query","name":"max_cost_usd","required":false,"schema":{"type":"string"}},{"description":"Optional wallet idempotency key, scoped to this customer for 24 hours. When the gateway honors the key, this synchronous in-process execution can continue after the caller disconnects, bounded by its execution deadline. A completed replayable result charges normally exactly once and can be replayed without another provider run or charge. A pending duplicate returns 409 idempotency_in_progress; reuse with different request semantics returns 409 idempotency_conflict.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"limit":3,"location":"Austin, TX","maxPrice":900000,"minBedrooms":3,"operation":"buy"},"schema":{"additionalProperties":false,"example":{"limit":3,"location":"Austin, TX","maxPrice":900000,"minBedrooms":3,"operation":"buy"},"properties":{"allowFallbacks":{"default":true,"description":"Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price.","type":"boolean"},"daysOnZillow":{"description":"Only include listings on Zillow at most this long (e.g. 1_week).","enum":["1_day","1_week","2_weeks","1_month","3_months","6_months","12_months","24_months","36_months"],"type":"string"},"homeTypes":{"description":"Filter by property type; omit for any. Rentals support only singleFamily, multiFamily, townhome, and condo (e.g. [\"singleFamily\", \"condo\"]).","items":{"enum":["singleFamily","multiFamily","townhome","condo","apartment","manufactured","land"],"type":"string"},"type":"array"},"ignoreSources":{"description":"Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"includeAcceptingBackupOffers":{"description":"Include listings accepting backup offers, which Zillow excludes by default (e.g. true).","type":"boolean"},"includePendingAndUnderContract":{"description":"Include pending and under-contract listings, which Zillow excludes by default (e.g. true).","type":"boolean"},"includeRoomForRent":{"description":"Include room-for-rent listings in rent searches; when omitted or false only entire places are returned (e.g. true).","type":"boolean"},"limit":{"default":25,"description":"Maximum number of results to return (1-25, default 25).","maximum":25,"minimum":1,"type":"integer"},"listingTypes":{"description":"Listing types to include for buy searches; omit for all standard types. fsba = agent listed, fsbo = for sale by owner. Ignored for rent and sold (e.g. [\"newConstruction\"]).","items":{"enum":["fsba","fsbo","newConstruction","comingSoon","auction","foreclosure","foreclosed","preforeclosure"],"type":"string"},"type":"array"},"location":{"description":"Region-level location to search: ZIP code, city and state, county, or neighborhood (e.g. 'Austin, TX' or '78701'). Street addresses are not supported; use the property's ZIP code instead.","type":"string"},"maxBedrooms":{"description":"Maximum number of bedrooms (e.g. 5).","minimum":0,"type":"integer"},"maxLivingAreaSqft":{"description":"Maximum living area in square feet (e.g. 3000).","minimum":0,"type":"integer"},"maxPrice":{"description":"Maximum price in USD: monthly rent for rentals, total price for buy/sold (e.g. 750000).","minimum":0,"type":"integer"},"minBedrooms":{"description":"Minimum number of bedrooms (e.g. 3).","minimum":0,"type":"integer"},"minLivingAreaSqft":{"description":"Minimum living area in square feet (e.g. 1500).","minimum":0,"type":"integer"},"minPrice":{"description":"Minimum price in USD: monthly rent for rentals, total price for buy/sold (e.g. 250000).","minimum":0,"type":"integer"},"operation":{"default":"buy","description":"Listing type: buy (for sale), rent, or sold.","enum":["buy","rent","sold"],"type":"string"},"preferLatencyUnderMs":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted.","minimum":1,"type":"integer"},"requireFields":{"description":"Optional; omit it and routing is unchanged, with the cheapest source serving. Name the output fields this request must be able to return, for example `yearBuilt`, and it is served only by a source that returns every one of them. Fields you do not name are still returned whenever the serving source has them. This can raise your price: when the cheapest source cannot return a named field, a dearer source serves, and you are quoted and charged its price. A named field can still be absent on a listing that genuinely lacks it. Naming a combination that no single source returns together is refused as invalid input, with no charge.","items":{"enum":["baths","beds","brokerName","city","currency","daysOnZillow","images","isZillowOwned","latitude","livingArea","longitude","lotSize","price","propertyType","rentZestimate","state","status","taxAssessedValue","yearBuilt","zestimate","zipcode"],"type":"string"},"type":"array","uniqueItems":true},"showOnlyPriceReductions":{"description":"Only show listings with a price reduction. Buy searches only; ignored for rentals (e.g. true).","type":"boolean"},"sortBy":{"description":"Sort order for results; omit for Zillow's default relevance. rentalPriorityScore applies to rent searches only (e.g. newest).","enum":["newest","recentlyChanged","price_high","price_low","bedrooms","bathrooms","rentalPriorityScore"],"type":"string"},"source":{"description":"Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`.","items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true}},"required":["location"],"title":"Zillow search input","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"costUsd":{"description":"USD charged on the original run. On a replay this value is echoed for parity; the replay itself is free.","type":"number"},"hint":{"description":"Optional one-line nudge, absent when there is nothing to say. `large_result:` suggests the fields/max_items/summary/jq controls for a big response. `paging_unavailable:` means this result came from a source that cannot return a `nextCursor`, so it may be INCOMPLETE and cannot be continued - re-run with `requireFields: [\"nextCursor\"]` to be served only by a source that can page, which may cost more per request.","type":"string"},"items":{"description":"Number of result rows returned. For per-result SKUs the per-item cost is charged against this count; for input-priced SKUs the charge is per submitted input, independent of this count.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"oneOf":[{"type":"null"},{"additionalProperties":false,"properties":{"items":{"description":"Property listing records matching the search: address, price, beds, baths, living area, property type, status, Zestimate, and coordinates. Populated whenever the provider has data for the entity.","items":{"properties":{"baths":{"description":"Number of bathrooms.","type":"number"},"beds":{"description":"Number of bedrooms.","type":"number"},"brokerName":{"description":"Listing brokerage name.","type":"string"},"city":{"type":"string"},"currency":{"description":"ISO currency code of the price (e.g. usd).","type":"string"},"daysOnZillow":{"description":"Days the listing has been on Zillow.","type":"integer"},"image":{"description":"URL of the primary listing photo. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"images":{"description":"Listing photo URLs.","items":{"type":"string"},"type":"array"},"isZillowOwned":{"description":"True when Zillow itself owns the property.","type":"boolean"},"latitude":{"type":"number"},"livingArea":{"description":"Interior living area in square feet.","type":"number"},"longitude":{"type":"number"},"lotSize":{"description":"Lot size in square feet.","type":"number"},"price":{"description":"List price in the listing currency.","type":"number"},"propertyType":{"description":"Property type (e.g. singleFamily, condo, townhouse).","type":"string"},"rentZestimate":{"description":"Zillow estimated monthly rent.","type":"number"},"state":{"description":"Two-letter state code.","type":"string"},"status":{"description":"Listing status (e.g. forSale, forRent, sold).","type":"string"},"streetAddress":{"description":"Street address of the property. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"taxAssessedValue":{"description":"Assessed value the county tax authority carries for the property.","type":"number"},"url":{"description":"Absolute Zillow listing URL. Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true},"yearBuilt":{"description":"Year the home was built, or null when the serving source does not publish it.","type":["integer","null"]},"zestimate":{"description":"Zillow estimated market value.","type":"number"},"zipcode":{"type":"string"},"zpid":{"description":"Zillow property id (zpid). Populated whenever the provider has data for the entity.","type":"string","x-anyapi-must-populate":true}},"required":["url","zpid"],"type":"object"},"type":"array","x-anyapi-must-populate":true}},"required":["items"],"type":"object"}]},"found":{"type":"boolean"},"reason":{"description":"Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.","enum":["not_found"],"type":"string"}},"required":["found","data"],"title":"Zillow search output","type":"object"},{"type":"null"}],"description":"Normalized output, or null when the replay payload was not retained."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"True when this response replays the durable result of an earlier run without billing or upstream execution.","type":"boolean"},"resultId":{"description":"Opaque handle to the full unshaped result, cached ~15 min. Re-shape it for free (fields/max_items/summary/jq) via GET /v1/results/{id}, no re-billing. Absent when the result was too large to cache.","type":"string"},"source":{"description":"The source that served this run. Pass its `id` back as `source` to prefer it again, or as `ignoreSources` to avoid it. Absent when no source identity applies to the run.","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"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"}}},"description":"Normalized result.","headers":{"Idempotency-Replayed":{"description":"Present only when the request carried an Idempotency-Key this gateway honored. \"false\" means the key was claimed and the run executed freshly; \"true\" means it replayed a prior identical run and was NOT charged again. Absent means either no key was sent or this gateway does not honor keys, so a retry could be charged twice.","schema":{"enum":["false","true"],"type":"string"}},"PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}},"Payment-Receipt":{"description":"Inline mpp payment receipt.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"Inline x402 payment receipt.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Input did not match the schema, or the upstream rejected the request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key."},"402":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PaymentRequiredError"},{"$ref":"#/components/schemas/TrialCapReached"}]}},"application/problem+json":{"schema":{"properties":{"challengeId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"integer"}},"required":["status","challengeId"],"type":"object"}}},"description":"Insufficient wallet balance or spend cap, or an inline-payment challenge. Agent trials receive a trial_cap_reached continuation with a live RFC 8628 device authorization.","headers":{"PAYMENT-REQUIRED":{"description":"Inline x402 payment challenge.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Inline mpp payment challenge.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Unknown API. A target that does not exist is not a 404: the call succeeds with `output.found` false and `data` null."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Idempotency collision. Codes: idempotency_in_progress means retry after the Retry-After delay; idempotency_conflict means use a new key for different request semantics; idempotency_needs_review means stop retrying and contact AnyAPI support with X-Anyapi-Request-Id."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request was well formed but this API cannot serve the requested target site; the body's `alternatives` array lists the AnyAPI APIs that can."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The upstream was rate limited; inspect `payment` when present before deciding whether to retry."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"An internal error prevented completion. Inspect payment when present before retrying."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Every provider failed with a server/transport error, or inline payment settlement could not be confirmed; inspect `payment` when present before retrying."}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]},{}],"summary":"Zillow Search","tags":["zillow"],"x-mint":{"href":"/api-reference/zillow/search"},"x-payment-info":{"price":{"amount":"0.000500","currency":"USD","mode":"fixed"},"protocols":[{"x402":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"}},{"mpp":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"}}],"rails":[{"headers":{"challenge":["PAYMENT-REQUIRED"],"credential":["PAYMENT-SIGNATURE","X-PAYMENT"],"receipt":["PAYMENT-RESPONSE","X-PAYMENT-RESPONSE"]},"pricing":{"amount":"0.001000","currency":"USD","minimumUsd":"0.001000","mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","scheme":"exact"},"rail":"x402","settlement":{"onExecutionFailure":"released","onUnknownFinalization":"indeterminate","timing":"after_execution"}},{"headers":{"challenge":["WWW-Authenticate"],"credential":["Authorization"],"receipt":["Payment-Receipt"]},"pricing":{"amount":"0.000500","currency":"USD","minimumUsd":null,"mode":"fixed","quoteBasis":"floor"},"protocol":{"asset":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","intent":"charge","method":"tempo","network":"tempo","payTo":"0x754BD2A6799e766B1E2b9f1Ae7fBdC0CeD96ef13","rail":"tempo","scheme":"exact"},"rail":"mpp","settlement":{"onExecutionFailure":"charged_undelivered","onVerificationError":"indeterminate","timing":"before_execution"}}]}}}},"security":[{"bearerAuth":[]},{"apiKeyAuth":[]}],"servers":[{"url":"https://api.getanyapi.com"}],"tags":[{"name":"ahrefs","x-group":"Ahrefs"},{"name":"airbnb","x-group":"Airbnb"},{"name":"alibaba","x-group":"Alibaba"},{"name":"amazon","x-group":"Amazon"},{"name":"apollo","x-group":"Apollo"},{"name":"appstore","x-group":"Appstore"},{"name":"bluesky","x-group":"Bluesky"},{"name":"booking","x-group":"Booking"},{"name":"capterra","x-group":"Capterra"},{"name":"chatgpt","x-group":"Chatgpt"},{"name":"coinmarketcap","x-group":"Coinmarketcap"},{"name":"company","x-group":"Company"},{"name":"company-enrichment","x-group":"Company_enrichment"},{"name":"company-identify","x-group":"Company_identify"},{"name":"company-search","x-group":"Company_search"},{"name":"congress","x-group":"Congress"},{"name":"contact-enrichment","x-group":"Contact_enrichment"},{"name":"douyin","x-group":"Douyin"},{"name":"ebay","x-group":"Ebay"},{"name":"email","x-group":"Email"},{"name":"email-finding","x-group":"Email_finding"},{"name":"email-verification","x-group":"Email_verification"},{"name":"facebook","x-group":"Facebook"},{"name":"fiverr","x-group":"Fiverr"},{"name":"g2","x-group":"G2"},{"name":"gemini","x-group":"Gemini"},{"name":"github","x-group":"Github"},{"name":"glassdoor","x-group":"Glassdoor"},{"name":"google","x-group":"Google"},{"name":"google-ads","x-group":"Google Ads"},{"name":"google-finance","x-group":"Google Finance"},{"name":"google-shopping","x-group":"Google Shopping"},{"name":"hackernews","x-group":"Hackernews"},{"name":"indeed","x-group":"Indeed"},{"name":"instagram","x-group":"Instagram"},{"name":"job-search","x-group":"Job_search"},{"name":"linkedin","x-group":"Linkedin"},{"name":"maps","x-group":"Maps"},{"name":"mobile-phone","x-group":"Mobile_phone"},{"name":"naver","x-group":"Naver"},{"name":"nextdoor","x-group":"Nextdoor"},{"name":"people-search","x-group":"People_search"},{"name":"perplexity","x-group":"Perplexity"},{"name":"person","x-group":"Person"},{"name":"person-enrichment","x-group":"Person_enrichment"},{"name":"pinterest","x-group":"Pinterest"},{"name":"playstore","x-group":"Playstore"},{"name":"polymarket","x-group":"Polymarket"},{"name":"property-records","x-group":"Property_records"},{"name":"realtor","x-group":"Realtor"},{"name":"reddit","x-group":"Reddit"},{"name":"redfin","x-group":"Redfin"},{"name":"rednote","x-group":"Rednote"},{"name":"sec","x-group":"Sec"},{"name":"semrush","x-group":"Semrush"},{"name":"seo","x-group":"Seo"},{"name":"snapchat","x-group":"Snapchat"},{"name":"social","x-group":"Social"},{"name":"spotify","x-group":"Spotify"},{"name":"substack","x-group":"Substack"},{"name":"technographics","x-group":"Technographics"},{"name":"threads","x-group":"Threads"},{"name":"tiktok","x-group":"TikTok"},{"name":"tiktok-shop","x-group":"TikTok Shop"},{"name":"tripadvisor","x-group":"Tripadvisor"},{"name":"trustpilot","x-group":"Trustpilot"},{"name":"truthsocial","x-group":"Truthsocial"},{"name":"twitter","x-group":"X (Twitter)"},{"name":"upwork","x-group":"Upwork"},{"name":"walmart","x-group":"Walmart"},{"name":"web","x-group":"Web"},{"name":"weibo","x-group":"Weibo"},{"name":"yahoo-finance","x-group":"Yahoo Finance"},{"name":"yelp","x-group":"Yelp"},{"name":"youtube","x-group":"YouTube"},{"name":"zhihu","x-group":"Zhihu"},{"name":"zillow","x-group":"Zillow"}]}