{"openapi":"3.1.0","info":{"title":"Ollagraph API","description":"**Ollagraph** is web infrastructure for AI agents — 197 endpoints across fetch, extract, audit, intelligence, AEO/SEO, and vertical actors, all behind one Bearer token and one MCP server.\n\nEvery endpoint authenticates the same way: `Authorization: Bearer osk_…`. Your API key is created at [app.ollagraph.com](https://app.ollagraph.com/) and is shown once at creation time.\n\nSuccessful calls cost one credit (some premium endpoints cost 3–5); server-side failures refund automatically. See the [capabilities page](https://ollagraph.com/capabilities) for the full catalog and [docs](https://ollagraph.com/docs) for the operational contract.\n\n## Response headers (every response)\n\n| Header | What it tells you | Standard |\n| --- | --- | --- |\n| `x-request-id` | Stable correlation ID; pass back to support, grep in your logs. | de-facto |\n| `traceparent` | Our server-side OTel trace + span ID, so you can correlate with your own trace. | W3C Trace Context |\n| `server-timing` | Wall-clock breakdown: at minimum `total;dur=<ms>`. Renders natively in Chrome DevTools. | W3C Server-Timing |\n| `x-credits-cost` / `x-credits-charged` / `x-credits-balance` | Sticker cost, what we actually deducted, what's left after this call. | — |\n| `x-tier-used` | Which fetch tier served the call (`direct`, `render`, `residential`). | — |\n| `x-cascade-path` | Full ordered list of tiers we attempted before one succeeded. | — |\n| `x-ratelimit-limit` / `RateLimit-Limit` (and `-remaining` / `-reset`) | Token-bucket state for your plan. Both legacy GitHub-style and the IETF draft spelling are emitted. | IETF draft-ietf-httpapi-ratelimit-headers |\n| `Cache-Control: no-store` | Auto-set on every authenticated response so corporate proxies and CDNs don't cache your data. | RFC 7234 |\n| `Deprecation` + `Sunset` + `Link` | Set when you're calling a route scheduled for removal. Empty today; will surface here when we ever deprecate. | RFC 8594 + draft-ietf-httpapi-deprecation |\n| `Idempotency-Replayed: true` | Returned when an `Idempotency-Key` matched a cached response. | Stripe-style |\n\nFree tier: 1,000 credits on signup, every endpoint, no credit card.\n\n_Note: `api.qcrawl.com` continues to serve the same backend during the rebrand transition. New integrations should use `api.ollagraph.com`._","termsOfService":"https://ollagraph.com/legal/terms/","contact":{"name":"Ollagraph support","url":"https://ollagraph.com/contactus/","email":"support@ollagraph.com"},"license":{"name":"Commercial — see Terms of Service","url":"https://ollagraph.com/legal/terms/"},"version":"1.0.0"},"servers":[{"url":"https://api.ollagraph.com","description":"Production"},{"url":"https://api.qcrawl.com","description":"Legacy alias — same backend; new integrations should use api.ollagraph.com"}],"paths":{"/v1/scrape":{"post":{"summary":"Scrape Endpoint","operationId":"scrape_endpoint_v1_scrape_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ScrapeRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Scraping"]}},"/v1/scrape/batch":{"post":{"summary":"Batch Scrape Endpoint","operationId":"batch_scrape_endpoint_v1_scrape_batch_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BatchScrapeRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Scraping"]}},"/v1/scrape/llm-ready":{"post":{"summary":"Scrape Llm Ready Endpoint","description":"Fetch a URL, extract the article body, chunk it for RAG ingest.\n\nReturns chunks sized for an embedding model's context window with\nconfigurable overlap. Each chunk carries byte offsets into the\nsource page so customers can attribute citations back to exact\npositions. The response shape is identical regardless of which fetch\npath was used; the `proxy_used` field carries a diagnostic label.","operationId":"scrape_llm_ready_endpoint_v1_scrape_llm_ready_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LlmReadyRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Scraping"]}},"/v1/scrape/async":{"post":{"summary":"Scrape Async Endpoint","operationId":"scrape_async_endpoint_v1_scrape_async_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AsyncScrapeRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Scraping"]}},"/v1/scrape/batch/async":{"post":{"summary":"Batch Scrape Async Endpoint","operationId":"batch_scrape_async_endpoint_v1_scrape_batch_async_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AsyncBatchScrapeRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Scraping"]}},"/v1/jobs/{job_id}":{"get":{"summary":"Get Job Status","operationId":"get_job_status_v1_jobs__job_id__get","parameters":[{"name":"job_id","in":"path","required":true,"schema":{"type":"string","title":"Job Id"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Jobs"]}},"/v1/vscode/runs":{"post":{"tags":["Automation"],"summary":"Vscode Run Endpoint","description":"Run a VS Code UI test headless and get structured pass/fail + failure\nscreenshots. **Limited access** — the submitted code executes in an isolated\ncontainer with network access; authorized/own use only. Returns a job_id;\npoll `GET /v1/jobs/{job_id}`.","operationId":"vscode_run_endpoint_v1_vscode_runs_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VsCodeRunRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/vscode/runs/{job_id}/screenshots/{filename}":{"get":{"tags":["Automation"],"summary":"Vscode Screenshot Proxy","description":"Stream a failure screenshot (PNG) from a completed VS Code run.\nOwnership-checked against the jobs table.","operationId":"vscode_screenshot_proxy_v1_vscode_runs__job_id__screenshots__filename__get","parameters":[{"name":"job_id","in":"path","required":true,"schema":{"type":"string","title":"Job Id"}},{"name":"filename","in":"path","required":true,"schema":{"type":"string","title":"Filename"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/me":{"get":{"summary":"Get Me","operationId":"get_me_v1_me_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Account"]}},"/v1/me/webhook-secret/rotate":{"post":{"summary":"Rotate My Webhook Secret","description":"Generate a new webhook signing secret. The previous one becomes invalid\nimmediately - any signed callbacks already in-flight will verify against\nthe new secret, so callers should drain in-flight jobs before rotating.","operationId":"rotate_my_webhook_secret_v1_me_webhook_secret_rotate_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Account"]}},"/v1/me/webhooks/test":{"post":{"summary":"Test My Webhook","description":"Send a single signed test payload to `webhook_url` so the customer can\nverify their receiver before going live.\n\nUses the same signing scheme as production deliveries:\n  X-Ollagraph-Signature: t=<unix_ts>,v1=<hmac_sha256_hex>\nwhere the signed body is `<ts>.<exact_json_bytes>`. The customer recomputes\nthe HMAC with their webhook_secret (from `/v1/me`) and compares in\nconstant time. Reuses the same retry/timeout policy as the worker so the\nresult reflects what a real delivery would look like.","operationId":"test_my_webhook_v1_me_webhooks_test_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookTestRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Account"]}},"/v1/me/password":{"post":{"summary":"Change My Password","description":"Change the signed-in user's password. Verifies the current password\nfirst. Other browser sessions (dashboard keys) are revoked; the current\nsession and developer API keys are kept.","operationId":"change_my_password_v1_me_password_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChangePasswordRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Account"]}},"/v1/me/delete":{"post":{"tags":["Account"],"summary":"Delete My Account","description":"Permanently delete the signed-in account and all associated data\n(API keys, usage log, credit ledger, OTel forwarders, personal org).\nIrreversible. GDPR/CCPA right-to-erasure.\n\nConfirmation: send `password` (password accounts) or `confirm_email`\n(OAuth-only accounts). If you OWN a team org that still has other members,\ndeletion is refused (409) until you transfer ownership\n(`POST /v1/orgs/{id}/transfer`) or remove the members. An active\nsubscription is cancelled at the next billing date before deletion.\n\nNo scraped content is ever stored on our side, and invoices live with the\npayment provider — so this removes your complete footprint here.","operationId":"delete_my_account_v1_me_delete_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeleteAccountRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/me/export":{"get":{"tags":["Account"],"summary":"Export My Data","description":"Machine-readable export of all personal data we hold for the signed-in\naccount (GDPR Art. 20 portability). Returns a single JSON document as a\ndownload: profile, credit ledger, usage log (capped — see `usage.note`),\nAPI-key METADATA (the key secret is never recoverable, so it is never\nincluded), OTel forwarders (auth values masked), and org memberships.\n\nNo scraped content is stored on our side, so none appears here — the only\nURLs present are your own requested URLs from your usage log.","operationId":"export_my_data_v1_me_export_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/me/jobs":{"get":{"summary":"Get My Jobs","description":"Paginated async-job history for the dashboard Jobs view.","operationId":"get_my_jobs_v1_me_jobs_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":50,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Offset"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Account"]}},"/v1/me/credits":{"get":{"summary":"Get My Credits","description":"Current credit balance + paginated credit ledger.","operationId":"get_my_credits_v1_me_credits_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":50,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Offset"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Account"]}},"/v1/me/usage":{"get":{"summary":"Get My Usage","description":"Paginated request log for the dashboard Logs view. Filter by endpoint.\n\n`format=json` (default) returns the standard `{rows, limit, offset}` envelope.\n\n`format=csv` returns the same rows as a streaming `text/csv` response with\ncolumns: created_at, endpoint, url, status, time_ms, credits_charged,\ntier_used, request_id. The same `limit`, `offset`, and `endpoint` filters\napply. Closes the recurring \"compliance asked me to dump 30 days of API\ncalls\" ticket without forcing customers to hand-roll a paginated client.","operationId":"get_my_usage_v1_me_usage_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":50,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Offset"}},{"name":"endpoint","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Endpoint"}},{"name":"format","in":"query","required":false,"schema":{"type":"string","default":"json","title":"Format"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Account"]}},"/v1/me/requests/{request_id}":{"get":{"summary":"Get My Request","description":"Look up a specific request by its X-Request-ID.\n\nCustomers paste the ID they grep-found in their own observability stack\n(Datadog, Better Stack, Honeycomb, etc.) and we return the billing-side\nrecord: endpoint, URL, status, latency, credit cost, timestamp.\n\nReturns 404 if the request_id isn't found for this user. That can mean:\n- the ID is from a different account\n- the Redis stream hasn't drained yet (within ~1s of the call completing)\n- the request was an unauthenticated /health hit which we don't log","operationId":"get_my_request_v1_me_requests__request_id__get","parameters":[{"name":"request_id","in":"path","required":true,"schema":{"type":"string","title":"Request Id"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Account"]}},"/v1/me/cost-estimate":{"post":{"summary":"Cost Estimate","description":"Return what the next call to `endpoint` would cost this user.\n\nNo execution, no charge, no rate-limit consumption. Reads the same\n`ENDPOINT_CREDIT_COST` map the actual billing path uses, applies the\noptional residential-proxy surcharge, and honours BYPASS_PLANS\n(internal / superadmin → 0). Customers price-check before they commit.","operationId":"cost_estimate_v1_me_cost_estimate_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CostEstimateRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Account"]}},"/v1/me/usage/summary":{"get":{"summary":"Get My Usage Summary","description":"Pre-aggregated chart data for the dashboard Overview.","operationId":"get_my_usage_summary_v1_me_usage_summary_get","parameters":[{"name":"days","in":"query","required":false,"schema":{"type":"integer","default":30,"title":"Days"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Account"]}},"/v1/me/forwarders":{"get":{"summary":"Get My Forwarders","description":"List the customer's configured OTel forwarders. Auth values are\nreturned masked (last 4 chars + asterisks); plaintext is never exposed.","operationId":"get_my_forwarders_v1_me_forwarders_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Account"]},"post":{"summary":"Create My Forwarder","description":"Add a new OTel destination. Auth value is encrypted at rest.\n\nKicks an immediate background refresh of the FanoutSpanProcessor's\nforwarder cache so spans start fanning out to the new destination\nwithin a few milliseconds rather than waiting for the next 30 s\nperiodic tick.","operationId":"create_my_forwarder_v1_me_forwarders_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForwarderCreateRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Account"]}},"/v1/me/forwarders/{forwarder_id}":{"delete":{"summary":"Delete My Forwarder","description":"Remove a forwarder.\n\nKicks an immediate background refresh so the deleted destination\nstops receiving spans within a few milliseconds — no privacy concern\nof continuing to forward to an endpoint the customer just removed.\nSpans already buffered inside the soon-to-be-shut-down\nBatchSpanProcessor still flush; spans created after the refresh\ncompletes do not.","operationId":"delete_my_forwarder_v1_me_forwarders__forwarder_id__delete","parameters":[{"name":"forwarder_id","in":"path","required":true,"schema":{"type":"integer","title":"Forwarder Id"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Account"]}},"/v1/me/forwarders/{forwarder_id}/test":{"post":{"summary":"Test My Forwarder","description":"Emit a single test span to the configured destination. Returns\nwhether the endpoint accepted it. Updates last_test_at/status/detail\ncolumns so the dashboard can show the result inline.","operationId":"test_my_forwarder_v1_me_forwarders__forwarder_id__test_post","parameters":[{"name":"forwarder_id","in":"path","required":true,"schema":{"type":"integer","title":"Forwarder Id"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Account"]}},"/v1/keys":{"get":{"summary":"List My Keys","description":"List the user's API keys (prefixes only - raw keys are never recoverable).","operationId":"list_my_keys_v1_keys_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Account"]},"post":{"summary":"Create My Key","description":"Mint a new API key. The raw key is returned ONCE; we only store the hash.\n\nIf org_id is supplied (team-org keys), caller must already be a\nmember of that org — we 403 otherwise. The new key inherits its\nbilling context from the org.","operationId":"create_my_key_v1_keys_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateKeyRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Account"]}},"/v1/keys/{key_id}":{"patch":{"summary":"Update My Key","description":"Update an existing key's label, project_tag, or daily_cap_credits.\nproject_tag=\"\" clears the tag; daily_cap_credits=0 removes the cap.\nOnly the owning user can update.","operationId":"update_my_key_v1_keys__key_id__patch","parameters":[{"name":"key_id","in":"path","required":true,"schema":{"type":"integer","title":"Key Id"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateKeyRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Account"]},"delete":{"summary":"Delete My Key","description":"Revoke an API key. Existing in-flight requests using it still complete;\nnew requests with the revoked key get 401.","operationId":"delete_my_key_v1_keys__key_id__delete","parameters":[{"name":"key_id","in":"path","required":true,"schema":{"type":"integer","title":"Key Id"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Account"]}},"/v1/keys/{key_id}/rotate":{"post":{"summary":"Rotate My Key","description":"Rotate an API key: mint a replacement that inherits the old key's label,\nproject tag, org, and daily cap, then revoke the old key. The new raw key is\nreturned ONCE. In-flight requests on the old key complete; new requests with\nthe old key get 401. This is the self-service path for a leaked or lost key\n(previously the only option was delete + recreate).","operationId":"rotate_my_key_v1_keys__key_id__rotate_post","parameters":[{"name":"key_id","in":"path","required":true,"schema":{"type":"integer","title":"Key Id"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Account"]}},"/v1/extract/clean":{"post":{"summary":"Extract Clean Endpoint","operationId":"extract_clean_endpoint_v1_extract_clean_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExtractRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Extraction"]}},"/v1/extract/structured":{"post":{"summary":"Extract Structured Endpoint","operationId":"extract_structured_endpoint_v1_extract_structured_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExtractRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Extraction"]}},"/v1/extract/contacts":{"post":{"summary":"Extract Contacts Endpoint","description":"Pull emails, phone numbers, and social-profile URLs from a text/HTML\nblob the customer supplies. No fetch, no network — pure regex extraction.","operationId":"extract_contacts_endpoint_v1_extract_contacts_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExtractContactsRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Extraction"]}},"/v1/extract/tables":{"post":{"summary":"Extract Tables Endpoint","description":"Extract every <table> from an HTML blob as structured JSON.\nHeaders detected from <thead> or all-<th> first rows. Colspan/rowspan\nexpanded. No fetch — caller supplies the HTML.","operationId":"extract_tables_endpoint_v1_extract_tables_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExtractTablesRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Extraction"]}},"/v1/aeo/freshness-signal":{"post":{"summary":"Aeo Freshness Signal Endpoint","description":"Audit a page's freshness signals from schema.org dateModified,\nOpenGraph article:modified_time, HTTP Last-Modified, visible 'Updated'\ntext, and copyright year. Returns a 0-100 freshness score + the\nmost-recent dated signal + any inconsistencies between them.","operationId":"aeo_freshness_signal_endpoint_v1_aeo_freshness_signal_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FreshnessSignalRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["AEO"]}},"/v1/aeo/snippet-format-detect":{"post":{"summary":"Aeo Snippet Format Detect Endpoint","description":"Classify a page's content into the four featured-snippet shapes\nGoogle pulls from: paragraph, list, table, definition. Returns\ncounts + example snippets for each kind + a best-fit prediction.","operationId":"aeo_snippet_format_detect_endpoint_v1_aeo_snippet_format_detect_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SnippetFormatDetectRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["AEO"]}},"/v1/aeo/heading-hierarchy-score":{"post":{"summary":"Aeo Heading Hierarchy Endpoint","description":"Audit H1-H6 hierarchy on a page. Surfaces missing H1, multiple H1s,\nhierarchy skips (H2 -> H4 without H3 between), and the count of\nquestion-style headings — important for AI Overview eligibility.","operationId":"aeo_heading_hierarchy_endpoint_v1_aeo_heading_hierarchy_score_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HeadingHierarchyRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["AEO"]}},"/v1/seo/redirect-chain-map":{"post":{"summary":"Seo Redirect Chain Endpoint","description":"Trace the full redirect chain from a URL to its final destination.\nReturns the hops + SEO-flavored scoring: too-long chain, HTTPS->HTTP\ndowngrade, 302/307 used where 301 would be appropriate.","operationId":"seo_redirect_chain_endpoint_v1_seo_redirect_chain_map_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RedirectChainMapRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["SEO"]}},"/v1/seo/broken-links-audit":{"post":{"summary":"Seo Broken Links Endpoint","description":"Scan a single page for broken outbound + internal links. HEAD\nprobe with GET fallback, parallel, configurable cap. Returns\nfull status code + final URL per link, with broken ones flagged.","operationId":"seo_broken_links_endpoint_v1_seo_broken_links_audit_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BrokenLinksAuditRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["SEO"]}},"/v1/seo/anchor-text-audit":{"post":{"summary":"Seo Anchor Text Audit Endpoint","description":"Audit every <a href> on the page. Flags generic anchors\n('click here', 'read more') and over-optimized repeats (same exact-\nmatch anchor used 3+ times pointing at the same URL).","operationId":"seo_anchor_text_audit_endpoint_v1_seo_anchor_text_audit_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AnchorTextAuditRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["SEO"]}},"/v1/seo/schema-validate":{"post":{"summary":"Seo Schema Validate Endpoint","description":"Validate JSON-LD blocks against Google's required-field lists for\n20+ rich-result types (Product, Recipe, Article, Event, FAQPage,\nHowTo, JobPosting, LocalBusiness, Review, ...). Returns the list of\ntypes the page is rich-result-eligible for.","operationId":"seo_schema_validate_endpoint_v1_seo_schema_validate_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SchemaValidateRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["SEO"]}},"/v1/seo/mixed-content":{"post":{"summary":"Seo Mixed Content Endpoint","description":"Find HTTP subresources loaded by an HTTPS page (mixed content).\nReports every <img>, <script>, <link>, <iframe>, <audio>, <video>,\n<source>, <embed>, <object> that uses http:// instead of https://.","operationId":"seo_mixed_content_endpoint_v1_seo_mixed_content_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MixedContentRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["SEO"]}},"/v1/intel/cert-transparency-history":{"post":{"summary":"Intel Cert Transparency Endpoint","description":"Query Certificate Transparency logs via crt.sh for every cert ever\nissued for the domain or any subdomain. Free, no auth needed.\nReturns deduplicated certs sorted newest-first.","operationId":"intel_cert_transparency_endpoint_v1_intel_cert_transparency_history_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CertTransparencyRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Intelligence"]}},"/v1/seo/keyword-extract":{"post":{"summary":"Seo Keyword Extract Endpoint","description":"Extract top keywords + multi-word phrases from text or a URL.\nUses lightweight TextRank-style co-occurrence ranking; no LLM\ncalls, no paid keyword feeds. Bring your own text or let us\nfetch+clean the URL for you.","operationId":"seo_keyword_extract_endpoint_v1_seo_keyword_extract_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/KeywordExtractRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["SEO"]}},"/v1/intel/subdomain-enumerate":{"post":{"summary":"Intel Subdomain Enumerate Endpoint","description":"Enumerate subdomains for a domain via Certificate Transparency.\n\nPublic CT logs (crt.sh) — no DNS brute-forcing, no paid feeds. Returns the\ndeduplicated SAN list. Stale entries are possible since we don't resolve;\npair with a resolver if you need live-only hostnames.","operationId":"intel_subdomain_enumerate_endpoint_v1_intel_subdomain_enumerate_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SubdomainEnumerateRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Intelligence"]}},"/v1/enrich/company":{"post":{"summary":"Enrich Company Endpoint","description":"Lite company profile from a single page. Pulls Organization JSON-LD,\nog:* tags, social anchors, contact patterns. Best when pointed at a\nhomepage or /about — no paid company-data feeds involved.","operationId":"enrich_company_endpoint_v1_enrich_company_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnrichCompanyRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Other"]}},"/v1/convert/ocr":{"post":{"summary":"Convert Ocr Endpoint","description":"OCR an image (PNG/JPEG/WebP/BMP/TIFF) to text. Proxies to a dedicated\nOCR backend — CPU-only, no GPU. Optionally returns per-region\nbounding boxes and confidence scores.","operationId":"convert_ocr_endpoint_v1_convert_ocr_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConvertOcrRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Conversion"]}},"/v1/aeo/ai-bot-allowlist":{"post":{"summary":"Aeo Ai Bot Allowlist Endpoint","description":"For each of 14 named AI crawlers (GPTBot, ClaudeBot, PerplexityBot,\nGoogle-Extended, Applebot-Extended, CCBot, etc.), report whether the\nsite's robots.txt allows or blocks it.","operationId":"aeo_ai_bot_allowlist_endpoint_v1_aeo_ai_bot_allowlist_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AeoAiBotAllowlistRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["AEO"]}},"/v1/aeo/llms-txt-audit":{"post":{"summary":"Aeo Llms Txt Audit Endpoint","description":"Fetch /llms.txt at the given domain and audit it against the emerging\nAEO-readiness convention. Validates structure, scores section coverage,\nchecks for link rot (up to 50 links).","operationId":"aeo_llms_txt_audit_endpoint_v1_aeo_llms_txt_audit_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AeoLlmsTxtAuditRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["AEO"]}},"/v1/seo/meta-audit":{"post":{"summary":"Seo Meta Audit Endpoint","description":"Audit a page's SEO meta fields and grade them 0–100 / A–F.","operationId":"seo_meta_audit_endpoint_v1_seo_meta_audit_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SeoMetaAuditRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["SEO"]}},"/v1/seo/readability":{"post":{"summary":"Seo Readability Endpoint","description":"Score readability via six standard formulas (Flesch, Flesch-Kincaid,\nGunning-Fog, SMOG, ARI, Coleman-Liau) plus reading time.","operationId":"seo_readability_endpoint_v1_seo_readability_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SeoReadabilityRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["SEO"]}},"/v1/seo/snippet-candidates":{"post":{"summary":"Seo Snippet Candidates Endpoint","description":"Extract candidate featured-snippet paragraphs, lists, and tables\nfrom an HTML blob OR from a URL we fetch on your behalf. When `url` is\nsupplied with `use_residential_proxy=true`, fetches with JS rendering —\nfinds snippets on div-soup docs sites.","operationId":"seo_snippet_candidates_endpoint_v1_seo_snippet_candidates_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SeoSnippetCandidatesRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["SEO"]}},"/v1/aeo/schema-coverage":{"post":{"summary":"Aeo Schema Coverage Endpoint","description":"Parse every JSON-LD block + Microdata + OpenGraph on a page; score\ncoverage against the 12 AEO-critical schema.org types. Opt-in residential\n+ JS-rendering captures schemas hydrated client-side on Next.js sites.","operationId":"aeo_schema_coverage_endpoint_v1_aeo_schema_coverage_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AeoSchemaCoverageRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["AEO"]}},"/v1/aeo/citation-readiness":{"post":{"summary":"Aeo Citation Readiness Endpoint","description":"Score a page against the post-ChatGPT EEAT signals: numerical specifics,\nnamed entities, authoritative outbound links, author byline, last-updated\ndate, content length. Mechanical scoring — no LLM call. Opt-in residential\nproxy is available for sites with strict access controls.","operationId":"aeo_citation_readiness_endpoint_v1_aeo_citation_readiness_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AeoCitationReadinessRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["AEO"]}},"/v1/aeo/llm-fetch-simulator":{"post":{"summary":"Aeo Llm Fetch Simulator Endpoint","description":"Fetch a URL as each of 11 named AI crawlers (plus a browser baseline).\nReport what each one actually received: status, content length, visible\ntext preview, plus cloaking + JS-only detection.","operationId":"aeo_llm_fetch_simulator_endpoint_v1_aeo_llm_fetch_simulator_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AeoLlmFetchSimulatorRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["AEO"]}},"/v1/aeo/page-audit":{"post":{"summary":"Aeo Page Audit Endpoint","description":"Full AEO audit — runs 9 component probes in parallel and returns one\nheadline 0–100 score, five category breakdowns, top issues, and ranked\nrecommendations. Bills 3 credits (premium orchestration).","operationId":"aeo_page_audit_endpoint_v1_aeo_page_audit_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AeoPageAuditRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["AEO"]}},"/v1/aeo/competitor-diff":{"post":{"summary":"Aeo Competitor Diff Endpoint","description":"Run page-audit on 2-5 URLs in parallel; return head-to-head rankings\nplus where the first URL wins and loses against the rest. Bills 3 credits\nregardless of URL count.","operationId":"aeo_competitor_diff_endpoint_v1_aeo_competitor_diff_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AeoCompetitorDiffRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["AEO"]}},"/v1/dns/lookup":{"post":{"summary":"Dns Lookup Endpoint","operationId":"dns_lookup_endpoint_v1_dns_lookup_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DnsLookupRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Intelligence"]}},"/v1/dns/intelligence":{"post":{"summary":"Dns Intel Endpoint","operationId":"dns_intel_endpoint_v1_dns_intelligence_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DnsIntelRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Intelligence"]}},"/v1/scrape/smart":{"post":{"summary":"Smart Scrape Endpoint","operationId":"smart_scrape_endpoint_v1_scrape_smart_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SmartScrapeRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Scraping"]}},"/v1/verify/email":{"post":{"summary":"Email Verify Endpoint","operationId":"email_verify_endpoint_v1_verify_email_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EmailVerifyRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Intelligence"]}},"/v1/captcha/solve":{"post":{"summary":"Captcha Solve Endpoint","operationId":"captcha_solve_endpoint_v1_captcha_solve_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CaptchaSolveRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Captcha"]}},"/v1/captcha/auto":{"post":{"summary":"Captcha Auto Endpoint","operationId":"captcha_auto_endpoint_v1_captcha_auto_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CaptchaAutoSolveRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Captcha"]}},"/v1/intel/ssl":{"post":{"summary":"Intel Ssl Endpoint","operationId":"intel_ssl_endpoint_v1_intel_ssl_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/IntelDomainRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Intelligence"]}},"/v1/intel/whois":{"post":{"summary":"Intel Whois Endpoint","operationId":"intel_whois_endpoint_v1_intel_whois_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/IntelDomainRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Intelligence"]}},"/v1/intel/page":{"post":{"summary":"Intel Page Endpoint","operationId":"intel_page_endpoint_v1_intel_page_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/IntelUrlRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Intelligence"]}},"/v1/intel/sitemap":{"post":{"summary":"Intel Sitemap Endpoint","operationId":"intel_sitemap_endpoint_v1_intel_sitemap_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/IntelUrlRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Intelligence"]}},"/v1/intel/robots":{"post":{"summary":"Intel Robots Endpoint","operationId":"intel_robots_endpoint_v1_intel_robots_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/IntelRobotsRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Intelligence"]}},"/v1/intel/geoip":{"post":{"summary":"Intel Geoip Endpoint","description":"IP geolocation — country, city, lat/lon, timezone for any public IP.\nBacked by the DB-IP Lite database (CC-BY, db-ip.com). No SSRF guard\nneeded: the IP is only a key into a local DB read, never fetched.","operationId":"intel_geoip_endpoint_v1_intel_geoip_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeoIpRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Intelligence"]}},"/v1/intel/asn":{"post":{"summary":"Intel Asn Endpoint","description":"ASN → operator name + every routed CIDR prefix.\n\nReuses the same iptoasn.com data the geoip endpoint indexes. Read-only,\nno network. Useful for compiling per-network IP allow/deny lists, mapping\ncustomer infrastructure, or auditing ASN ownership claims.","operationId":"intel_asn_endpoint_v1_intel_asn_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AsnRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Intelligence"]}},"/v1/intel/geoip/bulk":{"post":{"summary":"Intel Geoip Bulk Endpoint","description":"Bulk IP geolocation — up to 100 IPs per call.\n\nBilled N credits per N IPs (handled via check_limits_batch). Wraps the\nsame `geoip.lookup()` used by /v1/intel/geoip — each IP gets the full\nenrichment (country/region/city/lat-lon/timezone/ASN/ISP/postal).","operationId":"intel_geoip_bulk_endpoint_v1_intel_geoip_bulk_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeoIpBulkRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Intelligence"]}},"/v1/intel/headers":{"post":{"summary":"Intel Headers Endpoint","description":"Fetch a URL and return all response headers plus a security-header grade.","operationId":"intel_headers_endpoint_v1_intel_headers_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/IntelHeadersRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Intelligence"]}},"/v1/intel/redirects":{"post":{"summary":"Intel Redirects Endpoint","description":"Trace a URL's full redirect chain, hop by hop.","operationId":"intel_redirects_endpoint_v1_intel_redirects_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/IntelRedirectsRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Intelligence"]}},"/v1/intel/uptime":{"post":{"summary":"Intel Uptime Endpoint","description":"Quick is-it-up probe: status, latency, SSL expiry. One HTTP HEAD (or GET fallback).","operationId":"intel_uptime_endpoint_v1_intel_uptime_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/IntelUptimeRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Intelligence"]}},"/v1/intel/security-txt":{"post":{"summary":"Intel Security Txt Endpoint","description":"Probe the target for its RFC 9116 security.txt. Checks\n/.well-known/security.txt then /security.txt. Returns parsed fields\nplus a `rfc9116_minimum_compliant` flag (Contact + Expires required).","operationId":"intel_security_txt_endpoint_v1_intel_security_txt_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/IntelSecurityTxtRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Intelligence"]}},"/v1/intel/social-tags":{"post":{"summary":"Intel Social Tags Endpoint","description":"Fetch a page and return everything a social card / link preview\nneeds: Open Graph, Twitter Card, canonical URL, title, description,\nicons, language, theme color, robots meta.","operationId":"intel_social_tags_endpoint_v1_intel_social_tags_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/IntelSocialTagsRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Intelligence"]}},"/v1/intel/cookies":{"post":{"summary":"Intel Cookies Endpoint","description":"Set-Cookie header analysis: name, domain, path, SameSite, Secure,\nHttpOnly, Max-Age, Expires, is_session, third-party-or-not. Header\ncookies only — JS-set cookies need a real browser and are NOT\nvisible from server-side fetch.","operationId":"intel_cookies_endpoint_v1_intel_cookies_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/IntelCookiesRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Intelligence"]}},"/v1/intel/waf":{"post":{"summary":"Intel Waf Endpoint","description":"Detect which WAF/CDN/firewall is in front of a URL. Pattern matches\non response headers + (when the origin returns 403/429/503) the\nchallenge-page body. Covers Cloudflare, Akamai, Fastly, AWS WAF,\nImperva, Sucuri, F5, ModSecurity, BunnyCDN, StackPath, DDoS-Guard,\nWallarm, Varnish, Barracuda.","operationId":"intel_waf_endpoint_v1_intel_waf_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/IntelWafRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Intelligence"]}},"/v1/intel/sri-audit":{"post":{"summary":"Intel Sri Audit Endpoint","description":"Subresource Integrity audit. Lists every external <script src>\nand <link rel=stylesheet|preload> on the page, and reports how many\nare pinned with an `integrity` attribute. Supply-chain hygiene\ncheck — your CDN-hosted JS can be tampered with if you don't pin it.","operationId":"intel_sri_audit_endpoint_v1_intel_sri_audit_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/IntelSriAuditRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Intelligence"]}},"/v1/intel/wayback":{"post":{"summary":"Intel Wayback Endpoint","description":"Query the Wayback Machine for a URL's archive history. Returns\nthe first and last snapshots with direct wayback URLs. Free public\nWayback CDX API; no auth needed. Useful for OSINT and 'when did this\nsite first appear?'.","operationId":"intel_wayback_endpoint_v1_intel_wayback_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/IntelWaybackRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Intelligence"]}},"/v1/intel/email-auth":{"post":{"summary":"Intel Email Auth Endpoint","description":"Parse and score SPF, DKIM, DMARC, and BIMI for a domain. All-DNS, no SMTP.","operationId":"intel_email_auth_endpoint_v1_intel_email_auth_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/IntelEmailAuthRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Intelligence"]}},"/v1/intel/blacklist":{"post":{"summary":"Intel Blacklist Endpoint","description":"Check an IPv4 or domain against major DNSBLs in parallel.","operationId":"intel_blacklist_endpoint_v1_intel_blacklist_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/IntelBlacklistRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Intelligence"]}},"/v1/intel/dns-propagation":{"post":{"summary":"Intel Dns Propagation Endpoint","description":"Query the same record across N public resolvers; show consistency.","operationId":"intel_dns_propagation_endpoint_v1_intel_dns_propagation_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/IntelDnsPropagationRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Intelligence"]}},"/v1/intel/dnssec":{"post":{"summary":"Intel Dnssec Endpoint","description":"DNSSEC posture: does the domain publish DNSKEY records, has the\nparent delegated DS, did the upstream resolver set AD on a fresh\nlookup? We surface the three discrete observations rather than try\nto give a single 'is it valid' verdict — chain validation has too\nmany edge cases (NSEC3, expired sigs, CDS conventions) to compress\ninto one bit honestly.","operationId":"intel_dnssec_endpoint_v1_intel_dnssec_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/IntelDnssecRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Intelligence"]}},"/v1/intel/nameservers":{"post":{"summary":"Intel Nameservers Endpoint","description":"Authoritative nameservers for a domain plus the IPv4/IPv6 each\nNS resolves to. Includes a `diversified` boolean — false means all\nNS sit in the same /16 (single-provider, single point of failure).","operationId":"intel_nameservers_endpoint_v1_intel_nameservers_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/IntelNameserversRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Intelligence"]}},"/v1/intel/caa":{"post":{"summary":"Intel Caa Endpoint","description":"CAA records for a domain: which CAs may issue certs (issue),\nwhich may issue wildcard certs (issuewild), and where security\nincidents should be reported (iodef). Absence = open default\n(any CA may issue). `issue ';'` = closed (no CA may issue).","operationId":"intel_caa_endpoint_v1_intel_caa_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/IntelCaaRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Intelligence"]}},"/v1/intel/reverse-dns":{"post":{"summary":"Intel Reverse Dns Endpoint","description":"Reverse-DNS (PTR) lookup. IP → hostname. Useful for log\nenrichment, abuse handling, and 'is this an AWS EC2 IP or a\nresidential ISP?' at a glance.","operationId":"intel_reverse_dns_endpoint_v1_intel_reverse_dns_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/IntelReverseDnsRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Intelligence"]}},"/v1/dns/over-https":{"post":{"summary":"Dns Over Https Endpoint","description":"Forward a DNS query through Cloudflare 1.1.1.1 or Google 8.8.8.8\nvia DoH (RFC 8484 JSON encoding). Use when you want a DNS answer\nfrom a specific public resolver without running your own DoH\nclient — handy for privacy-aware lookups or 'what does Cloudflare\nsee vs Google'.","operationId":"dns_over_https_endpoint_v1_dns_over_https_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DnsOverHttpsRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Intelligence"]}},"/v1/intel/ip-reputation":{"post":{"summary":"Intel Ip Reputation Endpoint","description":"Classify an IP — datacenter / Tor exit / cloud range. Local DB lookup.","operationId":"intel_ip_reputation_endpoint_v1_intel_ip_reputation_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/IntelIpReputationRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Intelligence"]}},"/v1/intel/url-reputation":{"post":{"summary":"Intel Url Reputation Endpoint","description":"Is this URL (or its host) a known phishing / malware URL? Local lookup\nagainst the abuse.ch URLhaus feed (CC0). Does NOT fetch the URL — it is\nmatched against the feed only, so there is no SSRF surface.","operationId":"intel_url_reputation_endpoint_v1_intel_url_reputation_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UrlReputationRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Intelligence"]}},"/v1/intel/hash-reputation":{"post":{"summary":"Intel Hash Reputation Endpoint","description":"Is this file hash a known malware sample? Lookup against abuse.ch\nMalwareBazaar. Only the hash is sent upstream — never a file.","operationId":"intel_hash_reputation_endpoint_v1_intel_hash_reputation_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HashReputationRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Intelligence"]}},"/v1/intel/threat":{"post":{"summary":"Intel Threat Endpoint","description":"One indicator (IP / domain / URL / file hash) → a combined verdict from\nthe free threat sources we carry: Feodo C2 + IP reputation (IP), URLhaus\n(URL/domain), MalwareBazaar (hash). Type is auto-detected. All free-data.","operationId":"intel_threat_endpoint_v1_intel_threat_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ThreatRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Intelligence"]}},"/v1/scan/file":{"post":{"summary":"Scan File Endpoint","description":"Scan an uploaded file (base64) with YARA-X against a built-in ruleset\n(+ optional custom `rules`). The file is scanned **in-memory and never\nstored**. Max 10 MB decoded.","operationId":"scan_file_endpoint_v1_scan_file_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FileScanRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Other"]}},"/v1/intel/whoami":{"get":{"summary":"Intel Whoami Endpoint","description":"What does the internet see about you? Pure request-inspection — the\ncaller's public IP, IP family, geoIP, ASN, datacenter/Tor reputation,\nparsed User-Agent, and a curated echo of the most useful request\nheaders.\n\nAggregator of /v1/intel/geoip + /v1/intel/asn + /v1/intel/ip-reputation\n+ /v1/parse/useragent in one billed call. No outbound network — every\nlookup is against local databases or the request itself.","operationId":"intel_whoami_endpoint_v1_intel_whoami_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Intelligence"]}},"/v1/intel/http-versions":{"post":{"summary":"Intel Http Versions Endpoint","description":"Detect which HTTP versions a URL serves: HTTP/1.1, HTTP/2 (via TLS\nALPN), and HTTP/3 (via Alt-Svc advertisement). Also returns the\nnegotiated ALPN protocol, TLS version, cipher, and HSTS posture\n(max_age + includeSubDomains + preload).\n\nh3_advertised reflects the server's Alt-Svc header — we do not\nactively probe QUIC. h1 + h2 are confirmed at the handshake/HEAD\nlayer. Useful for origin audits (\"is my origin H/3-ready?\") and CDN\nposture checks.","operationId":"intel_http_versions_endpoint_v1_intel_http_versions_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/IntelHttpVersionsRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Intelligence"]}},"/v1/parse/url":{"post":{"summary":"Parse Url Endpoint","operationId":"parse_url_endpoint_v1_parse_url_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParseUrlRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Parsing"]}},"/v1/tokens/count":{"post":{"summary":"Tokens Count Endpoint","operationId":"tokens_count_endpoint_v1_tokens_count_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TokenCountRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Other"]}},"/v1/text/chunk":{"post":{"summary":"Text Chunk Endpoint","operationId":"text_chunk_endpoint_v1_text_chunk_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChunkRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Other"]}},"/v1/json/repair":{"post":{"summary":"Json Repair Endpoint","operationId":"json_repair_endpoint_v1_json_repair_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/JsonRepairRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Other"]}},"/v1/text/similarity":{"post":{"summary":"Text Similarity Endpoint","operationId":"text_similarity_endpoint_v1_text_similarity_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TextSimilarityRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Other"]}},"/v1/lang/detect":{"post":{"summary":"Lang Detect Endpoint","operationId":"lang_detect_endpoint_v1_lang_detect_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LangDetectRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Other"]}},"/v1/datetime/parse":{"post":{"summary":"Datetime Parse Endpoint","operationId":"datetime_parse_endpoint_v1_datetime_parse_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DatetimeParseRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Other"]}},"/v1/json/validate":{"post":{"summary":"Json Validate Endpoint","operationId":"json_validate_endpoint_v1_json_validate_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidateJsonRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Other"]}},"/v1/text/diff":{"post":{"summary":"Text Diff Endpoint","operationId":"text_diff_endpoint_v1_text_diff_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TextDiffRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Other"]}},"/v1/parse/useragent":{"post":{"summary":"Parse Useragent Endpoint","operationId":"parse_useragent_endpoint_v1_parse_useragent_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParseUserAgentRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Parsing"]}},"/v1/parse/email":{"post":{"summary":"Parse Email Endpoint","operationId":"parse_email_endpoint_v1_parse_email_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParseEmailRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Parsing"]}},"/v1/convert/html-to-markdown":{"post":{"summary":"Html To Markdown Endpoint","description":"Convert raw HTML to clean Markdown. No fetch — the customer supplies\nthe HTML directly. Same converter as the scrape endpoint's markdown\noutput, exposed standalone for LLM/RAG pipelines that already have HTML.","operationId":"html_to_markdown_endpoint_v1_convert_html_to_markdown_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HtmlToMarkdownRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Conversion"]}},"/v1/convert/pdf-to-markdown":{"post":{"summary":"Pdf To Markdown Endpoint","description":"Convert a PDF to Markdown. Customer supplies base64-encoded PDF bytes.\nPage-per-section output. Image-only/scanned PDFs are flagged for OCR.","operationId":"pdf_to_markdown_endpoint_v1_convert_pdf_to_markdown_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PdfToMarkdownRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Conversion"]}},"/v1/extract/document":{"post":{"summary":"Extract Document Endpoint","description":"Extract a PDF into STRUCTURED JSON via Docling — text blocks with labels,\ntables with cells, reading order, and page layout, plus markdown. For\ndocument-AI workflows (invoices, receipts, forms, reports) where structure\nmatters, not just text. The `document` field is Docling's lossless export.\nIn-memory; never stored. Heavier than /v1/convert/pdf-to-markdown.","operationId":"extract_document_endpoint_v1_extract_document_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExtractDocumentRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Extraction"]}},"/v1/transcribe":{"post":{"summary":"Transcribe Endpoint","description":"Transcribe audio (or a video's audio track) to text + timestamped\nsegments, auto-detecting language. Provide `audio_url` (we download it,\nSSRF-guarded) or `audio_base64`. Owned ASR (faster-whisper) on our own infra\n— free-data, no per-minute vendor fee. v1 is synchronous with a 5-minute\naudio cap; long-form async is coming.","operationId":"transcribe_endpoint_v1_transcribe_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TranscribeRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Other"]}},"/v1/convert/docx-to-markdown":{"post":{"summary":"Docx To Markdown Endpoint","description":"Convert a modern Word .docx to Markdown. Preserves heading levels,\nparagraphs, list bullets, table structure. Drops images + comments.","operationId":"docx_to_markdown_endpoint_v1_convert_docx_to_markdown_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DocxToMarkdownRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Conversion"]}},"/v1/convert/xlsx-to-markdown":{"post":{"summary":"Xlsx To Markdown Endpoint","description":"Convert an Excel .xlsx workbook to Markdown — one section per sheet,\nformatted as Markdown tables.","operationId":"xlsx_to_markdown_endpoint_v1_convert_xlsx_to_markdown_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/XlsxToMarkdownRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Conversion"]}},"/v1/convert/pptx-to-markdown":{"post":{"summary":"Pptx To Markdown Endpoint","description":"Convert a PowerPoint .pptx deck to Markdown — one section per slide.\nExtracts titles, bullets, and speaker notes. Image-only slides are flagged.","operationId":"pptx_to_markdown_endpoint_v1_convert_pptx_to_markdown_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PptxToMarkdownRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Conversion"]}},"/v1/convert/csv-to-markdown":{"post":{"summary":"Csv To Markdown Endpoint","description":"Convert CSV text (already decoded) into a Markdown table. Delimiter\nauto-detected from , \\t ; | unless overridden.","operationId":"csv_to_markdown_endpoint_v1_convert_csv_to_markdown_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CsvToMarkdownRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Conversion"]}},"/v1/crawl":{"post":{"summary":"Crawl Endpoint","operationId":"crawl_endpoint_v1_crawl_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CrawlRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Crawling"]}},"/v1/actors/amazon":{"post":{"summary":"Actor Amazon Endpoint","operationId":"actor_amazon_endpoint_v1_actors_amazon_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ActorRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Actors (preview)"]}},"/v1/actors/google-maps":{"post":{"summary":"Actor Google Maps Endpoint","operationId":"actor_google_maps_endpoint_v1_actors_google_maps_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ActorRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Actors (preview)"]}},"/v1/actors/markdown":{"post":{"summary":"Actor Markdown Endpoint","operationId":"actor_markdown_endpoint_v1_actors_markdown_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ActorRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Actors (preview)"]}},"/v1/actors/zillow":{"post":{"summary":"Actor Zillow Endpoint","operationId":"actor_zillow_endpoint_v1_actors_zillow_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ActorRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Actors (preview)"]}},"/v1/actors/ats/supported":{"get":{"tags":["Actors"],"summary":"Actor Ats Supported Endpoint","description":"List ATS providers the partner backend can parse (greenhouse, lever, ...).","operationId":"actor_ats_supported_endpoint_v1_actors_ats_supported_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/actors/ats":{"post":{"tags":["Actors"],"summary":"Actor Ats Endpoint","description":"Fetch a company's open jobs from a specific ATS (greenhouse/lever/...).","operationId":"actor_ats_endpoint_v1_actors_ats_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/actors/ats/detect":{"post":{"tags":["Actors"],"summary":"Actor Ats Detect Endpoint","description":"Probe a company across all supported ATS providers in parallel.","operationId":"actor_ats_detect_endpoint_v1_actors_ats_detect_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/actors/producthunt/daily":{"post":{"tags":["Actors"],"summary":"Actor Producthunt Daily Endpoint","description":"Today's ProductHunt frontpage launches.","operationId":"actor_producthunt_daily_endpoint_v1_actors_producthunt_daily_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/actors/producthunt/product":{"post":{"tags":["Actors"],"summary":"Actor Producthunt Product Endpoint","description":"Detail page for a single ProductHunt product (by slug or url).","operationId":"actor_producthunt_product_endpoint_v1_actors_producthunt_product_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/actors/scholar/search":{"post":{"tags":["Actors"],"summary":"Actor Scholar Search Endpoint","description":"Google Scholar search results for a query.","operationId":"actor_scholar_search_endpoint_v1_actors_scholar_search_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/actors/scholar/author":{"post":{"tags":["Actors"],"summary":"Actor Scholar Author Endpoint","description":"Author profile from Google Scholar (publications, citations, h-index).","operationId":"actor_scholar_author_endpoint_v1_actors_scholar_author_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/actors/scholar/publication":{"post":{"tags":["Actors"],"summary":"Actor Scholar Publication Endpoint","description":"Single publication detail from Google Scholar.","operationId":"actor_scholar_publication_endpoint_v1_actors_scholar_publication_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/actors/jobs/sites":{"get":{"tags":["Actors"],"summary":"Actor Jobs Sites Endpoint","description":"List supported job-board sites (indeed, linkedin, glassdoor, ...).","operationId":"actor_jobs_sites_endpoint_v1_actors_jobs_sites_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/actors/jobs/scrape":{"post":{"tags":["Actors"],"summary":"Actor Jobs Scrape Endpoint","description":"Scrape job listings across one or more sites.","operationId":"actor_jobs_scrape_endpoint_v1_actors_jobs_scrape_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/actors/jobs/sources":{"get":{"tags":["Actors"],"summary":"Actor Jobs Sources Endpoint","description":"List the 4 direct job-source integrations and which are env-configured.\n\nFree (metadata). Each entry shows id, country, configured flag, and\nthe env vars required to enable it. Adzuna additionally lists its\n17 supported country codes.","operationId":"actor_jobs_sources_endpoint_v1_actors_jobs_sources_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/actors/jobs/usajobs":{"post":{"tags":["Actors"],"summary":"Actor Jobs Usajobs Endpoint","description":"US federal jobs via data.usajobs.gov.\n\nBody params:\n  Keyword (str)              — search term\n  LocationName (str)         — e.g. \"Washington, DC\"\n  ResultsPerPage (int 1-500) — default 25\n\nRequires env: USAJOBS_USER_AGENT (email), USAJOBS_API_KEY.","operationId":"actor_jobs_usajobs_endpoint_v1_actors_jobs_usajobs_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/actors/jobs/jobbank":{"post":{"tags":["Actors"],"summary":"Actor Jobs Jobbank Endpoint","description":"Canadian government job listings via jobbank.gc.ca RSS.\n\nBody params:\n  searchstring (str)\n  locationstring (str)\n  limit (int 1-100)          — default 25\n\nNo auth required (public RSS feed).","operationId":"actor_jobs_jobbank_endpoint_v1_actors_jobs_jobbank_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/actors/jobs/reed":{"post":{"tags":["Actors"],"summary":"Actor Jobs Reed Endpoint","description":"UK jobs via Reed.co.uk.\n\nBody params:\n  keywords (str)\n  locationName (str)\n  distanceFromLocation (int) — miles, default 10\n  resultsToTake (int 1-100)  — default 25\n\nRequires env: REED_API_KEY.","operationId":"actor_jobs_reed_endpoint_v1_actors_jobs_reed_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/actors/jobs/adzuna":{"post":{"tags":["Actors"],"summary":"Actor Jobs Adzuna Endpoint","description":"Adzuna aggregator across 17 countries.\n\nBody params:\n  country (str)             — lowercase ISO 3166-1 alpha-2, default 'gb'\n                             (gb/us/ca/au/de/fr/nl/pl/at/ch/it/es/br/in/mx/za/sg)\n  what (str)\n  where (str)\n  results_per_page (int 1-50) — default 25\n\nRequires env: ADZUNA_APP_ID, ADZUNA_APP_KEY.","operationId":"actor_jobs_adzuna_endpoint_v1_actors_jobs_adzuna_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/actors/arxiv/search":{"post":{"tags":["Actors"],"summary":"Actor Arxiv Search","operationId":"actor_arxiv_search_v1_actors_arxiv_search_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"query":{"type":"string"},"category":{"type":"string","description":"arXiv category code, e.g. cs.AI"},"limit":{"type":"integer","default":10},"sort":{"type":"string","default":"relevance"}}}}}}}},"/v1/actors/atlas/case_studies":{"post":{"tags":["Actors"],"summary":"Actor Atlas Case Studies","operationId":"actor_atlas_case_studies_v1_actors_atlas_case_studies_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{}}}}}}},"/v1/actors/atlas/get":{"post":{"tags":["Actors"],"summary":"Actor Atlas Get","operationId":"actor_atlas_get_v1_actors_atlas_get_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","description":"AML.* ID"}},"required":["id"]}}}}}},"/v1/actors/atlas/summary":{"post":{"tags":["Actors"],"summary":"Actor Atlas Summary","operationId":"actor_atlas_summary_v1_actors_atlas_summary_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{}}}}}}},"/v1/actors/atlas/tactics":{"post":{"tags":["Actors"],"summary":"Actor Atlas Tactics","operationId":"actor_atlas_tactics_v1_actors_atlas_tactics_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{}}}}}}},"/v1/actors/atlas/techniques":{"post":{"tags":["Actors"],"summary":"Actor Atlas Techniques","operationId":"actor_atlas_techniques_v1_actors_atlas_techniques_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"tactic_id":{"type":"string","description":"Filter by tactic ID (e.g. AML.TA0000)"}}}}}}}},"/v1/actors/doi/resolve":{"post":{"tags":["Actors"],"summary":"Actor Doi Resolve","operationId":"actor_doi_resolve_v1_actors_doi_resolve_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"doi":{"type":"string","description":"Bare DOI or full URL form"}},"required":["doi"]}}}}}},"/v1/actors/europepmc/search":{"post":{"tags":["Actors"],"summary":"Actor Europepmc Search","operationId":"actor_europepmc_search_v1_actors_europepmc_search_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"query":{"type":"string"},"limit":{"type":"integer","default":25},"source":{"type":"string"}},"required":["query"]}}}}}},"/v1/actors/github/issues":{"post":{"tags":["Actors"],"summary":"Actor Github Issues","operationId":"actor_github_issues_v1_actors_github_issues_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"owner":{"type":"string"},"repo":{"type":"string"},"state":{"type":"string","default":"open"},"limit":{"type":"integer","default":30}},"required":["owner","repo"]}}}}}},"/v1/actors/github/repo":{"post":{"tags":["Actors"],"summary":"Actor Github Repo","operationId":"actor_github_repo_v1_actors_github_repo_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"owner":{"type":"string"},"repo":{"type":"string"}},"required":["owner","repo"]}}}}}},"/v1/actors/github/search":{"post":{"tags":["Actors"],"summary":"Actor Github Search","operationId":"actor_github_search_v1_actors_github_search_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"kind":{"type":"string","default":"repositories"},"query":{"type":"string"},"limit":{"type":"integer","default":25}},"required":["query"]}}}}}},"/v1/actors/github/user":{"post":{"tags":["Actors"],"summary":"Actor Github User","operationId":"actor_github_user_v1_actors_github_user_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"username":{"type":"string"}},"required":["username"]}}}}}},"/v1/actors/gleif/children":{"post":{"tags":["Actors"],"summary":"Actor Gleif Children","operationId":"actor_gleif_children_v1_actors_gleif_children_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"lei":{"type":"string"},"limit":{"type":"integer","default":20}},"required":["lei"]}}}}}},"/v1/actors/gleif/get":{"post":{"tags":["Actors"],"summary":"Actor Gleif Get","operationId":"actor_gleif_get_v1_actors_gleif_get_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"lei":{"type":"string","description":"20-char LEI"}},"required":["lei"]}}}}}},"/v1/actors/gleif/parent":{"post":{"tags":["Actors"],"summary":"Actor Gleif Parent","operationId":"actor_gleif_parent_v1_actors_gleif_parent_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"lei":{"type":"string"},"kind":{"type":"string","default":"direct"}},"required":["lei"]}}}}}},"/v1/actors/gleif/search":{"post":{"tags":["Actors"],"summary":"Actor Gleif Search","operationId":"actor_gleif_search_v1_actors_gleif_search_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string"},"limit":{"type":"integer","default":10}},"required":["name"]}}}}}},"/v1/actors/hackernews/item":{"post":{"tags":["Actors"],"summary":"Actor Hackernews Item","operationId":"actor_hackernews_item_v1_actors_hackernews_item_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"integer"}},"required":["id"]}}}}}},"/v1/actors/hackernews/search":{"post":{"tags":["Actors"],"summary":"Actor Hackernews Search","operationId":"actor_hackernews_search_v1_actors_hackernews_search_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"query":{"type":"string"},"tags":{"type":"string","default":"story"},"limit":{"type":"integer","default":25}},"required":["query"]}}}}}},"/v1/actors/hackernews/top":{"post":{"tags":["Actors"],"summary":"Actor Hackernews Top","operationId":"actor_hackernews_top_v1_actors_hackernews_top_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"kind":{"type":"string","default":"top"},"limit":{"type":"integer","default":30}}}}}}}},"/v1/actors/hackernews/user":{"post":{"tags":["Actors"],"summary":"Actor Hackernews User","operationId":"actor_hackernews_user_v1_actors_hackernews_user_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"username":{"type":"string"}},"required":["username"]}}}}}},"/v1/actors/huggingface/dataset":{"post":{"tags":["Actors"],"summary":"Actor Huggingface Dataset","operationId":"actor_huggingface_dataset_v1_actors_huggingface_dataset_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"}},"required":["id"]}}}}}},"/v1/actors/huggingface/datasets":{"post":{"tags":["Actors"],"summary":"Actor Huggingface Datasets","operationId":"actor_huggingface_datasets_v1_actors_huggingface_datasets_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"query":{"type":"string","description":"Free-text search"},"sort":{"type":"string","default":"downloads"},"filter":{"type":"string","description":"Tag filter (e.g. text-classification)"},"limit":{"type":"integer","default":20}}}}}}}},"/v1/actors/huggingface/model":{"post":{"tags":["Actors"],"summary":"Actor Huggingface Model","operationId":"actor_huggingface_model_v1_actors_huggingface_model_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","description":"Org-prefixed or bare; redirects resolved server-side"}},"required":["id"]}}}}}},"/v1/actors/huggingface/models":{"post":{"tags":["Actors"],"summary":"Actor Huggingface Models","operationId":"actor_huggingface_models_v1_actors_huggingface_models_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"query":{"type":"string","description":"Free-text search"},"sort":{"type":"string","default":"downloads"},"filter":{"type":"string","description":"Tag filter (e.g. text-classification)"},"limit":{"type":"integer","default":20}}}}}}}},"/v1/actors/huggingface/space":{"post":{"tags":["Actors"],"summary":"Actor Huggingface Space","operationId":"actor_huggingface_space_v1_actors_huggingface_space_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"}},"required":["id"]}}}}}},"/v1/actors/huggingface/spaces":{"post":{"tags":["Actors"],"summary":"Actor Huggingface Spaces","operationId":"actor_huggingface_spaces_v1_actors_huggingface_spaces_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"query":{"type":"string","description":"Free-text search"},"sort":{"type":"string","default":"downloads"},"filter":{"type":"string","description":"Tag filter (e.g. text-classification)"},"limit":{"type":"integer","default":20}}}}}}}},"/v1/actors/npm/downloads":{"post":{"tags":["Actors"],"summary":"Actor Npm Downloads","operationId":"actor_npm_downloads_v1_actors_npm_downloads_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string"},"period":{"type":"string","default":"last-week"}},"required":["name"]}}}}}},"/v1/actors/npm/package":{"post":{"tags":["Actors"],"summary":"Actor Npm Package","operationId":"actor_npm_package_v1_actors_npm_package_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Bare or scoped (@org/pkg)"}},"required":["name"]}}}}}},"/v1/actors/npm/search":{"post":{"tags":["Actors"],"summary":"Actor Npm Search","operationId":"actor_npm_search_v1_actors_npm_search_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"query":{"type":"string"},"limit":{"type":"integer","default":20}},"required":["query"]}}}}}},"/v1/actors/nvd/cve":{"post":{"tags":["Actors"],"summary":"Actor Nvd Cve","operationId":"actor_nvd_cve_v1_actors_nvd_cve_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"cve_id":{"type":"string"}},"required":["cve_id"]}}}}}},"/v1/actors/nvd/search":{"post":{"tags":["Actors"],"summary":"Actor Nvd Search","operationId":"actor_nvd_search_v1_actors_nvd_search_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"keyword":{"type":"string"},"cpe":{"type":"string","description":"CPE name string"},"days_back":{"type":"integer","description":"Days back from now"},"limit":{"type":"integer","default":20}}}}}}}},"/v1/actors/openalex/author":{"post":{"tags":["Actors"],"summary":"Actor Openalex Author","operationId":"actor_openalex_author_v1_actors_openalex_author_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"}},"required":["id"]}}}}}},"/v1/actors/openalex/authors":{"post":{"tags":["Actors"],"summary":"Actor Openalex Authors","operationId":"actor_openalex_authors_v1_actors_openalex_authors_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"query":{"type":"string"},"limit":{"type":"integer","default":10}},"required":["query"]}}}}}},"/v1/actors/openalex/work":{"post":{"tags":["Actors"],"summary":"Actor Openalex Work","operationId":"actor_openalex_work_v1_actors_openalex_work_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"}},"required":["id"]}}}}}},"/v1/actors/openalex/works":{"post":{"tags":["Actors"],"summary":"Actor Openalex Works","operationId":"actor_openalex_works_v1_actors_openalex_works_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"query":{"type":"string"},"limit":{"type":"integer","default":10},"year_from":{"type":"integer"},"year_to":{"type":"integer"}},"required":["query"]}}}}}},"/v1/actors/orcid/record":{"post":{"tags":["Actors"],"summary":"Actor Orcid Record","operationId":"actor_orcid_record_v1_actors_orcid_record_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"orcid":{"type":"string"}},"required":["orcid"]}}}}}},"/v1/actors/orcid/works":{"post":{"tags":["Actors"],"summary":"Actor Orcid Works","operationId":"actor_orcid_works_v1_actors_orcid_works_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"orcid":{"type":"string"},"limit":{"type":"integer","default":50}},"required":["orcid"]}}}}}},"/v1/actors/pypi/package":{"post":{"tags":["Actors"],"summary":"Actor Pypi Package","operationId":"actor_pypi_package_v1_actors_pypi_package_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string"},"version":{"type":"string","description":"Optional specific version"}},"required":["name"]}}}}}},"/v1/actors/pypi/release":{"post":{"tags":["Actors"],"summary":"Actor Pypi Release","operationId":"actor_pypi_release_v1_actors_pypi_release_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string"},"version":{"type":"string"}},"required":["name","version"]}}}}}},"/v1/actors/ror/get":{"post":{"tags":["Actors"],"summary":"Actor Ror Get","operationId":"actor_ror_get_v1_actors_ror_get_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","description":"Bare ROR ID (e.g. 00f54p054) or full URL"}},"required":["id"]}}}}}},"/v1/actors/ror/search":{"post":{"tags":["Actors"],"summary":"Actor Ror Search","operationId":"actor_ror_search_v1_actors_ror_search_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"query":{"type":"string"},"limit":{"type":"integer","default":20}},"required":["query"]}}}}}},"/v1/actors/sec/facts":{"post":{"tags":["Actors"],"summary":"Actor Sec Facts","operationId":"actor_sec_facts_v1_actors_sec_facts_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"cik":{"type":"string"},"ticker":{"type":"string"}}}}}}}},"/v1/actors/sec/filings":{"post":{"tags":["Actors"],"summary":"Actor Sec Filings","operationId":"actor_sec_filings_v1_actors_sec_filings_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"cik":{"type":"string","description":"CIK (zero-padded or numeric)"},"ticker":{"type":"string"},"type":{"type":"string","description":"Form type filter, e.g. 10-K, 10-Q, 8-K"},"limit":{"type":"integer","default":20}}}}}}}},"/v1/actors/sec/lookup_ticker":{"post":{"tags":["Actors"],"summary":"Actor Sec Lookup Ticker","operationId":"actor_sec_lookup_ticker_v1_actors_sec_lookup_ticker_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"ticker":{"type":"string","description":"e.g. AAPL"}},"required":["ticker"]}}}}}},"/v1/actors/stackexchange/questions":{"post":{"tags":["Actors"],"summary":"Actor Stackexchange Questions","operationId":"actor_stackexchange_questions_v1_actors_stackexchange_questions_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"site":{"type":"string","default":"stackoverflow"},"sort":{"type":"string","default":"hot"},"limit":{"type":"integer","default":20}}}}}}}},"/v1/actors/stackexchange/search":{"post":{"tags":["Actors"],"summary":"Actor Stackexchange Search","operationId":"actor_stackexchange_search_v1_actors_stackexchange_search_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"intitle":{"type":"string"},"site":{"type":"string","default":"stackoverflow"},"limit":{"type":"integer","default":20}},"required":["intitle"]}}}}}},"/v1/actors/stackexchange/sites":{"post":{"tags":["Actors"],"summary":"Actor Stackexchange Sites","operationId":"actor_stackexchange_sites_v1_actors_stackexchange_sites_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{}}}}}}},"/v1/actors/stackexchange/user":{"post":{"tags":["Actors"],"summary":"Actor Stackexchange User","operationId":"actor_stackexchange_user_v1_actors_stackexchange_user_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"user_id":{"type":"integer"},"site":{"type":"string","default":"stackoverflow"}},"required":["user_id"]}}}}}},"/v1/actors/zenodo/record":{"post":{"tags":["Actors"],"summary":"Actor Zenodo Record","operationId":"actor_zenodo_record_v1_actors_zenodo_record_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"}},"required":["id"]}}}}}},"/v1/actors/zenodo/search":{"post":{"tags":["Actors"],"summary":"Actor Zenodo Search","operationId":"actor_zenodo_search_v1_actors_zenodo_search_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"query":{"type":"string"},"type":{"type":"string"},"limit":{"type":"integer","default":20},"sort":{"type":"string","default":"mostrecent"}},"required":["query"]}}}}}},"/v1/actors/amazon/product":{"post":{"tags":["Actors"],"summary":"Actor Amazon Product","operationId":"actor_amazon_product_v1_actors_amazon_product_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"asin":{"type":"string"},"marketplace":{"type":"string","default":"us"},"proxy_url":{"type":"string"}},"required":["asin"]}}}}}},"/v1/actors/amazon/reviews":{"post":{"tags":["Actors"],"summary":"Actor Amazon Reviews","operationId":"actor_amazon_reviews_v1_actors_amazon_reviews_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"asin":{"type":"string"},"marketplace":{"type":"string","default":"us"},"max_pages":{"type":"integer","default":1}},"required":["asin"]}}}}}},"/v1/actors/amazon/search":{"post":{"tags":["Actors"],"summary":"Actor Amazon Search","operationId":"actor_amazon_search_v1_actors_amazon_search_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"query":{"type":"string"},"marketplace":{"type":"string","default":"us"},"limit":{"type":"integer","default":25},"proxy_url":{"type":"string"}},"required":["query"]}}}}}},"/v1/actors/gmaps/place":{"post":{"tags":["Actors"],"summary":"Actor Gmaps Place","operationId":"actor_gmaps_place_v1_actors_gmaps_place_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"place_url":{"type":"string"},"cid":{"type":"string"},"name":{"type":"string"},"location":{"type":"string"}}}}}}}},"/v1/actors/gmaps/reviews":{"post":{"tags":["Actors"],"summary":"Actor Gmaps Reviews","operationId":"actor_gmaps_reviews_v1_actors_gmaps_reviews_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"place_url":{"type":"string"},"cid":{"type":"string"},"max_pages":{"type":"integer","default":1}}}}}}}},"/v1/actors/gmaps/search":{"post":{"tags":["Actors"],"summary":"Actor Gmaps Search","operationId":"actor_gmaps_search_v1_actors_gmaps_search_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"query":{"type":"string"},"location":{"type":"string"},"limit":{"type":"integer","default":20}},"required":["query"]}}}}}},"/v1/actors/linkedin/company":{"post":{"tags":["Actors"],"summary":"Actor Linkedin Company","description":"Authorized use only — respect LinkedIn's Terms of Service. Returns public profile/company data; supply your own li_at session cookie where required.","operationId":"actor_linkedin_company_v1_actors_linkedin_company_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"slug":{"type":"string","description":"e.g. 'microsoft'"},"company_url":{"type":"string"},"li_at":{"type":"string"},"proxy_url":{"type":"string"}}}}}}}},"/v1/actors/linkedin/profile":{"post":{"tags":["Actors"],"summary":"Actor Linkedin Profile","description":"Authorized use only — respect LinkedIn's Terms of Service. Returns public profile/company data; supply your own li_at session cookie where required.","operationId":"actor_linkedin_profile_v1_actors_linkedin_profile_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"public_id":{"type":"string","description":"e.g. 'satyanadella'"},"profile_url":{"type":"string","description":"Full LinkedIn URL"},"li_at":{"type":"string","description":"Optional if server pool configured"},"proxy_url":{"type":"string"}}}}}}}},"/v1/actors/yelp/business":{"post":{"tags":["Actors"],"summary":"Actor Yelp Business","operationId":"actor_yelp_business_v1_actors_yelp_business_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"biz_path":{"type":"string","description":"Yelp slug, e.g. blue-bottle-coffee-san-francisco-9"},"biz_url":{"type":"string","description":"Alternative to biz_path; full Yelp URL"},"proxy_url":{"type":"string"}}}}}}}},"/v1/actors/yelp/reviews":{"post":{"tags":["Actors"],"summary":"Actor Yelp Reviews","operationId":"actor_yelp_reviews_v1_actors_yelp_reviews_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"biz_path":{"type":"string"},"biz_url":{"type":"string"},"max_pages":{"type":"integer","default":1}}}}}}}},"/v1/actors/yelp/search":{"post":{"tags":["Actors"],"summary":"Actor Yelp Search","operationId":"actor_yelp_search_v1_actors_yelp_search_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"query":{"type":"string"},"location":{"type":"string"},"limit":{"type":"integer","default":20},"proxy_url":{"type":"string"}},"required":["query","location"]}}}}}},"/v1/actors/youtube/channel":{"post":{"tags":["Actors"],"summary":"Actor Youtube Channel","operationId":"actor_youtube_channel_v1_actors_youtube_channel_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"handle":{"type":"string","description":"Handle with or without @"},"url":{"type":"string"}}}}}}}},"/v1/actors/youtube/search":{"post":{"tags":["Actors"],"summary":"Actor Youtube Search","operationId":"actor_youtube_search_v1_actors_youtube_search_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"query":{"type":"string"},"limit":{"type":"integer","default":20},"country":{"type":"string","default":"us"},"language":{"type":"string","default":"en"}},"required":["query"]}}}}}},"/v1/actors/youtube/video":{"post":{"tags":["Actors"],"summary":"Actor Youtube Video","operationId":"actor_youtube_video_v1_actors_youtube_video_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string","description":"Full YouTube/youtu.be/shorts/embed URL"},"id":{"type":"string","description":"Bare 11-char video ID"}}}}}}}},"/v1/actors/yelp/search/async":{"post":{"tags":["Actors"],"summary":"Actor Yelp Search Async","description":"Async variant — returns a job_id immediately; poll GET /v1/jobs/{id} or supply webhook_url for a signed callback. Use this for slow vendor jobs (Yelp's run takes minutes; the synchronous endpoint times out at the edge).","operationId":"actor_yelp_search_async_v1_actors_yelp_search_async_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"query":{"type":"string"},"location":{"type":"string"},"limit":{"type":"integer","default":20},"proxy_url":{"type":"string"},"webhook_url":{"type":"string","description":"Optional callback URL; the signed result is POSTed here on completion."}},"required":["query","location"]}}}}}},"/v1/actors/yelp/business/async":{"post":{"tags":["Actors"],"summary":"Actor Yelp Business Async","description":"Async variant — returns a job_id immediately; poll GET /v1/jobs/{id} or supply webhook_url for a signed callback. Use this for slow vendor jobs (Yelp's run takes minutes; the synchronous endpoint times out at the edge).","operationId":"actor_yelp_business_async_v1_actors_yelp_business_async_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"biz_path":{"type":"string","description":"Yelp slug, e.g. blue-bottle-coffee-san-francisco-9"},"biz_url":{"type":"string","description":"Alternative to biz_path; full Yelp URL"},"proxy_url":{"type":"string"},"webhook_url":{"type":"string","description":"Optional callback URL; the signed result is POSTed here on completion."}}}}}}}},"/v1/actors/yelp/reviews/async":{"post":{"tags":["Actors"],"summary":"Actor Yelp Reviews Async","description":"Async variant — returns a job_id immediately; poll GET /v1/jobs/{id} or supply webhook_url for a signed callback. Use this for slow vendor jobs (Yelp's run takes minutes; the synchronous endpoint times out at the edge).","operationId":"actor_yelp_reviews_async_v1_actors_yelp_reviews_async_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"biz_path":{"type":"string"},"biz_url":{"type":"string"},"max_pages":{"type":"integer","default":1},"webhook_url":{"type":"string","description":"Optional callback URL; the signed result is POSTed here on completion."}}}}}}}},"/v1/render":{"post":{"tags":["Actors"],"summary":"Render Endpoint","description":"Render a URL through our managed browser engine and return HTML + metadata.","operationId":"render_endpoint_v1_render_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/script":{"post":{"tags":["Actors"],"summary":"Script Endpoint","description":"Run a multi-step browser script (click/wait/extract) against a URL.","operationId":"script_endpoint_v1_script_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/session":{"post":{"tags":["Actors"],"summary":"Session Create Endpoint","description":"Open a persistent browser session. Free — billing happens on render/script.","operationId":"session_create_endpoint_v1_session_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/session/{session_id}":{"get":{"tags":["Actors"],"summary":"Session Get Endpoint","description":"Inspect a session's state (engine, age, idle_seconds, last_url).","operationId":"session_get_endpoint_v1_session__session_id__get","parameters":[{"name":"session_id","in":"path","required":true,"schema":{"type":"string","title":"Session Id"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["Actors"],"summary":"Session Delete Endpoint","description":"Close a session and free its browser context.","operationId":"session_delete_endpoint_v1_session__session_id__delete","parameters":[{"name":"session_id","in":"path","required":true,"schema":{"type":"string","title":"Session Id"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/session/{session_id}/render":{"post":{"tags":["Actors"],"summary":"Session Render Endpoint","description":"Render a URL inside an existing session (keeps cookies/storage).","operationId":"session_render_endpoint_v1_session__session_id__render_post","parameters":[{"name":"session_id","in":"path","required":true,"schema":{"type":"string","title":"Session Id"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/session/{session_id}/script":{"post":{"tags":["Actors"],"summary":"Session Script Endpoint","description":"Run a script inside an existing session.","operationId":"session_script_endpoint_v1_session__session_id__script_post","parameters":[{"name":"session_id","in":"path","required":true,"schema":{"type":"string","title":"Session Id"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/stagehand":{"post":{"tags":["Actors"],"summary":"Stagehand Create Endpoint","description":"Open a Stagehand (LLM-driven) browser session. **Free** — billing happens on\ngoto/act/observe/extract/screenshot (1 credit each). Returns `stagehand_session_id`,\n`llm_provider`, `model_name`, `expires_at`. All body fields optional; defaults to a\nmanaged model (no key required). BYO keys are held in memory for the session only.","operationId":"stagehand_create_endpoint_v1_stagehand_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"engine":{"type":"string","enum":["chromium"],"default":"chromium","description":"Browser engine for the session (Chromium)."},"llm_provider":{"type":"string","description":"LLM provider for natural-language actions. Defaults to a managed provider (no key required)."},"model_name":{"type":"string","description":"Model id to use. Defaults to a managed model."},"llm_api_key":{"type":"string","description":"Bring-your-own provider key. Held in memory for the session only — never logged or persisted."},"llm_base_url":{"type":"string","description":"OpenAI-compatible base URL for a custom provider."},"idle_ttl_seconds":{"type":"integer","default":1800,"description":"Idle timeout (seconds) before the session is reaped."}}},"examples":{"default":{"summary":"Managed defaults (no key required)","value":{}},"byo_model":{"summary":"Bring your own model","value":{"llm_provider":"openai","model_name":"gpt-4o-mini","llm_api_key":"sk-..."}}}}}}}},"/v1/stagehand/{session_id}/goto":{"post":{"tags":["Actors"],"summary":"Stagehand Goto Endpoint","description":"Navigate the session to a URL (1 credit). Returns `{ok, url, title}`.","operationId":"stagehand_goto_endpoint_v1_stagehand__session_id__goto_post","parameters":[{"name":"session_id","in":"path","required":true,"schema":{"type":"string","title":"Session Id"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string","format":"uri","description":"Absolute URL to navigate the session to."}},"required":["url"]},"examples":{"basic":{"summary":"Navigate","value":{"url":"https://example.com"}}}}}}}},"/v1/stagehand/{session_id}/act":{"post":{"tags":["Actors"],"summary":"Stagehand Act Endpoint","description":"Perform a natural-language action (1 credit). Field is **`instruction`** (not `action`).\nReturns `{ok, success, message (selector used), url_after}`. LLM-backed (~1–2s).","operationId":"stagehand_act_endpoint_v1_stagehand__session_id__act_post","parameters":[{"name":"session_id","in":"path","required":true,"schema":{"type":"string","title":"Session Id"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"instruction":{"type":"string","description":"Plain-English action. The model resolves it to a precise element selector + action (click/type/select/scroll)."}},"required":["instruction"]},"examples":{"click":{"summary":"Click","value":{"instruction":"click the more information link"}},"type":{"summary":"Type + submit","value":{"instruction":"type 'wireless headphones' into the search box and press Enter"}}}}}}}},"/v1/stagehand/{session_id}/observe":{"post":{"tags":["Actors"],"summary":"Stagehand Observe Endpoint","description":"List candidate actions on the current page (1 credit). Returns `{ok, candidates:[{description, method, selector}]}`.","operationId":"stagehand_observe_endpoint_v1_stagehand__session_id__observe_post","parameters":[{"name":"session_id","in":"path","required":true,"schema":{"type":"string","title":"Session Id"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"instruction":{"type":"string","description":"Optional hint to focus candidate discovery; omit to list all actionable elements."}}},"examples":{"all":{"summary":"All actionable elements","value":{}},"focused":{"summary":"Focused","value":{"instruction":"find the main heading"}}}}}}}},"/v1/stagehand/{session_id}/extract":{"post":{"tags":["Actors"],"summary":"Stagehand Extract Endpoint","description":"Structured extraction from the current page (1 credit). Pass an optional JSON Schema\nin `schema` to coerce the output; omit for free-form extraction.","operationId":"stagehand_extract_endpoint_v1_stagehand__session_id__extract_post","parameters":[{"name":"session_id","in":"path","required":true,"schema":{"type":"string","title":"Session Id"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"instruction":{"type":"string","description":"What to extract, in plain English."},"schema":{"type":"object","description":"Optional JSON Schema; when present the result is coerced/validated against it."}},"required":["instruction"]},"examples":{"freeform":{"summary":"Free-form","value":{"instruction":"extract the page title and the first paragraph"}},"schema":{"summary":"Schema-coerced","value":{"instruction":"extract the product name and price","schema":{"type":"object","properties":{"name":{"type":"string"},"price":{"type":"number"}}}}}}}}}}},"/v1/stagehand/{session_id}/screenshot":{"post":{"tags":["Actors"],"summary":"Stagehand Screenshot Endpoint","description":"Screenshot the current page (1 credit). Returns base64-in-JSON\n`{ok, screenshot_b64, size_bytes, url}`; `full_page` captures the full scrollable page.","operationId":"stagehand_screenshot_endpoint_v1_stagehand__session_id__screenshot_post","parameters":[{"name":"session_id","in":"path","required":true,"schema":{"type":"string","title":"Session Id"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"full_page":{"type":"boolean","default":false,"description":"Capture the full scrollable page instead of just the viewport."}}},"examples":{"viewport":{"summary":"Viewport","value":{}},"full":{"summary":"Full page","value":{"full_page":true}}}}}}}},"/v1/stagehand/{session_id}/keepalive":{"post":{"tags":["Actors"],"summary":"Stagehand Keepalive Endpoint","description":"Reset the session idle timer. Free.","operationId":"stagehand_keepalive_endpoint_v1_stagehand__session_id__keepalive_post","parameters":[{"name":"session_id","in":"path","required":true,"schema":{"type":"string","title":"Session Id"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/stagehand/{session_id}":{"delete":{"tags":["Actors"],"summary":"Stagehand Delete Endpoint","description":"Close the Stagehand session. Free.","operationId":"stagehand_delete_endpoint_v1_stagehand__session_id__delete","parameters":[{"name":"session_id","in":"path","required":true,"schema":{"type":"string","title":"Session Id"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/billing/dodo/checkout":{"post":{"tags":["Billing"],"summary":"Create Dodo Checkout Session","description":"Create a subscription checkout session.\n\nReturns a hosted-page URL the customer should be redirected to. The\nsubscription is fulfilled asynchronously via our internal webhook.\n\nReturns a mock URL when OBSCURA_BILLING_MODE=mock so the dashboard wiring\ncan be tested before keys are minted.\n\nIdempotency: pass `Idempotency-Key: <uuid>` to make this safe to retry —\nreplays within 24 h return the cached checkout URL with\n`Idempotency-Replayed: true`. Without the header, every call creates a\nbrand-new Dodo checkout session.","operationId":"create_dodo_checkout_session_v1_billing_dodo_checkout_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DodoCheckoutRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/billing/dodo/credits/packs":{"get":{"tags":["Billing"],"summary":"List Dodo Credit Packs","description":"List configured pay-as-you-go credit packs (one-time purchases).\n\nReturned shape is purposefully minimal — the dashboard only needs\n{product_id, credits} to render a buy button; price + description\nlive in the Dodo dashboard.","operationId":"list_dodo_credit_packs_v1_billing_dodo_credits_packs_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/billing/dodo/credits/checkout":{"post":{"tags":["Billing"],"summary":"Create Dodo Credits Checkout","description":"Pay-as-you-go: buy a one-time credit pack via Dodo. Returns a\nhosted-page URL the customer is redirected to. Credits are granted\nby the webhook on payment.succeeded — NOT inline here.\n\nUnlike subscription checkout, this does not touch the user's plan.\nA free-tier user can buy a credit pack and stay on free.\n\nIdempotency: pass `Idempotency-Key: <uuid>` to make this safe to retry —\nreplays within 24 h return the cached checkout URL with\n`Idempotency-Replayed: true`.","operationId":"create_dodo_credits_checkout_v1_billing_dodo_credits_checkout_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DodoCreditsCheckoutRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/billing/dodo/subscription":{"get":{"tags":["Billing"],"summary":"Get Dodo Subscription State","description":"Return the user's current Dodo subscription state.\n\nUsed by the dashboard's BillingView to decide whether to render the\n\"Current subscription\" card with a Cancel button (when is_active=true).","operationId":"get_dodo_subscription_state_v1_billing_dodo_subscription_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/billing/dodo/subscription/cancel":{"post":{"tags":["Billing"],"summary":"Cancel Dodo Subscription","description":"Cancel the user's active Dodo subscription at the end of the current\nbilling period. Returns immediately; the plan downgrade is finalised by\nthe `subscription.cancelled` webhook when Dodo fires it.","operationId":"cancel_dodo_subscription_v1_billing_dodo_subscription_cancel_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/billing/dodo/subscription/change-plan":{"post":{"tags":["Billing"],"summary":"Change Dodo Subscription Plan","description":"Change the user's active Dodo subscription to a different plan.\n\n`effective_at=immediately` charges a prorated amount and applies now;\n`next_billing_date` defers the swap to renewal (preferred for\ndowngrades). Final plan state is reconciled via the webhook.","operationId":"change_dodo_subscription_plan_v1_billing_dodo_subscription_change_plan_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DodoChangePlanRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/billing/dodo/portal":{"post":{"tags":["Billing"],"summary":"Open Dodo Customer Portal","description":"Mint a Dodo customer-portal session URL for full self-service.\n\nThe portal is Dodo's hosted surface — supports cancel, plan change,\npayment-method update, and viewing invoices/receipts. Use this in the\ndashboard as the \"Manage billing\" link.","operationId":"open_dodo_customer_portal_v1_billing_dodo_portal_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/auth/signup":{"post":{"summary":"Auth Signup","operationId":"auth_signup_v1_auth_signup_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SignupRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Authentication"],"security":[]}},"/v1/auth/verify":{"get":{"summary":"Auth Verify Email","description":"Email-verification link target. Flips the account to verified so its\nAPI key starts working.","operationId":"auth_verify_email_v1_auth_verify_get","parameters":[{"name":"token","in":"query","required":false,"schema":{"type":"string","default":"","title":"Token"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Authentication"],"security":[]}},"/v1/auth/verify/resend":{"post":{"summary":"Auth Verify Resend","description":"Re-send the email-verification link for an account that hasn't verified\nyet. Always returns success — it never reveals whether the email exists or is\nalready verified. Throttled per-IP like signup to prevent email-bombing.","operationId":"auth_verify_resend_v1_auth_verify_resend_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VerifyResendRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Authentication"]}},"/v1/auth/password/forgot":{"post":{"summary":"Auth Password Forgot","description":"Start a password reset: emails a one-time, 1-hour reset link. Always\nreturns success — never reveals whether the email is registered. Throttled\nper-IP. This is the self-service recovery for a forgotten password (the\nauthenticated /v1/me/password route still requires the current password).","operationId":"auth_password_forgot_v1_auth_password_forgot_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PasswordForgotRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Authentication"]}},"/v1/auth/password/reset":{"post":{"summary":"Auth Password Reset","description":"Complete a password reset with the one-time token from the email. The\ntoken is single-use and expires 1 hour after it was issued.","operationId":"auth_password_reset_v1_auth_password_reset_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PasswordResetRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Authentication"]}},"/v1/auth/login":{"post":{"summary":"Auth Login","description":"Verify password. Returns the user's API key prefix as a hint —\nthe raw key is not recoverable (we only store its hash). Users who\nhave lost their key should rotate via a future /v1/keys/rotate\nendpoint.","operationId":"auth_login_v1_auth_login_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LoginRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Authentication"],"security":[]}},"/v1/auth/keys":{"post":{"summary":"Auth Login And Mint Key","description":"Verify email+password and mint a fresh API key tagged 'dashboard'.\n\nUsed by the dashboard login flow so users can sign in with their password\nrather than pasting an osk_ key. Each call mints a NEW key (we don't store\nraw keys, only hashes); the previous key remains valid until explicitly\nrevoked. Returns {api_key, user} on success.","operationId":"auth_login_and_mint_key_v1_auth_keys_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LoginRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Authentication"]}},"/v1/auth/me":{"get":{"summary":"Auth Me","description":"Dashboard's account-info endpoint. Uses get_api_key (auth only) rather\nthan check_limits so the dashboard polling for stats doesn't burn the\nuser's monthly quota.","operationId":"auth_me_v1_auth_me_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Authentication"]}}},"components":{"schemas":{"ActorRequest":{"properties":{"url":{"type":"string","title":"Url"},"stealth":{"type":"boolean","title":"Stealth","default":true},"proxy":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Proxy"}},"type":"object","required":["url"],"title":"ActorRequest"},"AeoAiBotAllowlistRequest":{"properties":{"domain":{"type":"string","title":"Domain","description":"Domain or origin to inspect — qcrawl.com, https://ollagraph.com, or example.org all accepted."}},"type":"object","required":["domain"],"title":"AeoAiBotAllowlistRequest","examples":[{"domain":"ollagraph.com"},{"domain":"anthropic.com"}]},"AeoCitationReadinessRequest":{"properties":{"url":{"type":"string","title":"Url","description":"Page URL to score against the post-ChatGPT EEAT signals."},"use_residential_proxy":{"type":"boolean","title":"Use Residential Proxy","description":"When True, routes the fetch through our premium residential proxy pool. Use for sites with strict access controls. Bills +3 credits.","default":false}},"type":"object","required":["url"],"title":"AeoCitationReadinessRequest","examples":[{"url":"https://ollagraph.com/architecture/"},{"url":"https://www.nytimes.com/","use_residential_proxy":true}]},"AeoCompetitorDiffRequest":{"properties":{"urls":{"items":{"type":"string"},"type":"array","maxItems":5,"minItems":2,"title":"Urls","description":"2–5 URLs. First entry is treated as 'your' page; the rest are competitors. Bills 3 credits regardless of count."}},"type":"object","required":["urls"],"title":"AeoCompetitorDiffRequest","examples":[{"urls":["https://ollagraph.com/docs/intel-geoip/","https://ipinfo.io/","https://ipapi.co/"]}]},"AeoLlmFetchSimulatorRequest":{"properties":{"url":{"type":"string","title":"Url","description":"Page URL to fetch as each of 11 named AI crawlers (plus a browser baseline)."}},"type":"object","required":["url"],"title":"AeoLlmFetchSimulatorRequest","examples":[{"url":"https://ollagraph.com/"}]},"AeoLlmsTxtAuditRequest":{"properties":{"domain":{"type":"string","title":"Domain","description":"Domain to inspect for an llms.txt file at /llms.txt."}},"type":"object","required":["domain"],"title":"AeoLlmsTxtAuditRequest","examples":[{"domain":"ollagraph.com"}]},"AeoPageAuditRequest":{"properties":{"url":{"type":"string","title":"Url","description":"Page URL to run the full AEO audit on. Bills 3 credits — runs 9 component probes in parallel."}},"type":"object","required":["url"],"title":"AeoPageAuditRequest","examples":[{"url":"https://ollagraph.com/architecture/"}]},"AeoSchemaCoverageRequest":{"properties":{"url":{"type":"string","title":"Url","description":"Page URL to inspect for JSON-LD / OpenGraph / Microdata coverage."},"use_residential_proxy":{"type":"boolean","title":"Use Residential Proxy","description":"When True, fetches with JS rendering through our premium proxy pool — sees JSON-LD that's hydrated client-side on Next.js / SvelteKit sites. Bills +3 credits.","default":false}},"type":"object","required":["url"],"title":"AeoSchemaCoverageRequest","examples":[{"url":"https://ollagraph.com/architecture/"},{"url":"https://docs.stripe.com/api","use_residential_proxy":true}]},"AnchorTextAuditRequest":{"properties":{"url":{"type":"string","title":"Url","description":"Page to audit anchor text on."}},"type":"object","required":["url"],"title":"AnchorTextAuditRequest","examples":[{"url":"https://en.wikipedia.org/wiki/SEO"}]},"AsnRequest":{"properties":{"asn":{"type":"integer","exclusiveMinimum":0.0,"title":"Asn","description":"ASN number, without the 'AS' prefix. E.g. 15169 for Google."}},"type":"object","required":["asn"],"title":"AsnRequest","examples":[{"asn":15169},{"asn":13335}]},"AsyncBatchScrapeRequest":{"properties":{"urls":{"items":{"type":"string"},"type":"array","maxItems":100,"minItems":1,"title":"Urls"},"concurrency":{"type":"integer","title":"Concurrency","default":5},"format":{"type":"string","title":"Format","default":"markdown"},"js_eval":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Js Eval"},"actions":{"anyOf":[{"items":{"type":"object"},"type":"array","maxItems":50},{"type":"null"}],"title":"Actions"},"timeout":{"type":"integer","maximum":180.0,"minimum":1.0,"title":"Timeout","default":120},"stealth":{"type":"boolean","title":"Stealth","default":true},"proxy":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Proxy"},"webhook_url":{"anyOf":[{"type":"string","maxLength":2083,"minLength":1,"format":"uri"},{"type":"null"}],"title":"Webhook Url"}},"type":"object","required":["urls"],"title":"AsyncBatchScrapeRequest","examples":[{"format":"markdown","urls":["https://a.example.com","https://b.example.com"],"webhook_url":"https://yourapp.com/qcrawl-callback"}]},"AsyncScrapeRequest":{"properties":{"url":{"type":"string","title":"Url"},"webhook_url":{"type":"string","maxLength":2083,"minLength":1,"format":"uri","title":"Webhook Url"},"format":{"type":"string","enum":["markdown","html","text","links"],"title":"Format","default":"markdown"},"js_eval":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Js Eval"},"actions":{"anyOf":[{"items":{"type":"object"},"type":"array","maxItems":50},{"type":"null"}],"title":"Actions"},"stealth":{"type":"boolean","title":"Stealth","default":true},"timeout":{"type":"integer","title":"Timeout","default":30},"proxy":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Proxy"}},"type":"object","required":["url","webhook_url"],"title":"AsyncScrapeRequest","examples":[{"format":"markdown","url":"https://example.com","webhook_url":"https://yourapp.com/qcrawl-callback"}]},"BatchScrapeRequest":{"properties":{"urls":{"items":{"type":"string"},"type":"array","maxItems":100,"minItems":1,"title":"Urls"},"concurrency":{"type":"integer","title":"Concurrency","default":5},"format":{"type":"string","title":"Format","default":"markdown"},"js_eval":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Js Eval"},"actions":{"anyOf":[{"items":{"type":"object"},"type":"array","maxItems":50},{"type":"null"}],"title":"Actions"},"timeout":{"type":"integer","maximum":180.0,"minimum":1.0,"title":"Timeout","default":120},"stealth":{"type":"boolean","title":"Stealth","default":true},"proxy":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Proxy"}},"type":"object","required":["urls"],"title":"BatchScrapeRequest","examples":[{"concurrency":5,"format":"markdown","urls":["https://a.example.com","https://b.example.com"]}]},"BrokenLinksAuditRequest":{"properties":{"url":{"type":"string","title":"Url","description":"Page to scan for broken outbound + internal links."},"max_links":{"type":"integer","maximum":200.0,"minimum":1.0,"title":"Max Links","description":"Cap on number of links probed.","default":50},"concurrency":{"type":"integer","maximum":24.0,"minimum":1.0,"title":"Concurrency","description":"Parallel HEAD probes.","default":8},"timeout_seconds":{"type":"number","maximum":30.0,"minimum":1.0,"title":"Timeout Seconds","default":8.0}},"type":"object","required":["url"],"title":"BrokenLinksAuditRequest","examples":[{"max_links":25,"url":"https://ollagraph.com/"}]},"CaptchaAutoSolveRequest":{"properties":{"url":{"type":"string","title":"Url"},"action":{"type":"string","title":"Action","default":"submit"},"proxy":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Proxy"}},"type":"object","required":["url"],"title":"CaptchaAutoSolveRequest","examples":[{"action":"submit","url":"https://example.com/protected"}]},"CaptchaSolveRequest":{"properties":{"site_key":{"type":"string","title":"Site Key"},"site_url":{"type":"string","title":"Site Url"},"action":{"type":"string","title":"Action","default":"submit"},"proxy":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Proxy"}},"type":"object","required":["site_key","site_url"],"title":"CaptchaSolveRequest","examples":[{"action":"submit","site_key":"6LeIxAcTAAAAAJcZVRqyHh71UMIEGNQ_MXjiZKhI","site_url":"https://www.google.com/recaptcha/api2/demo"}]},"CertTransparencyRequest":{"properties":{"domain":{"type":"string","title":"Domain","description":"Domain to query for every cert ever issued (incl. subdomains)."}},"type":"object","required":["domain"],"title":"CertTransparencyRequest","examples":[{"domain":"ollagraph.com"},{"domain":"github.com"}]},"ChangePasswordRequest":{"properties":{"current_password":{"type":"string","title":"Current Password"},"new_password":{"type":"string","title":"New Password"}},"type":"object","required":["current_password","new_password"],"title":"ChangePasswordRequest"},"ChunkRequest":{"properties":{"text":{"type":"string","title":"Text"},"max_tokens":{"type":"integer","title":"Max Tokens","default":512},"overlap":{"type":"integer","title":"Overlap","default":0},"encoding":{"type":"string","title":"Encoding","default":"cl100k_base"}},"type":"object","required":["text"],"title":"ChunkRequest","examples":[{"max_tokens":256,"overlap":32,"text":"Long document text to split for RAG ingestion..."}]},"ConvertOcrRequest":{"properties":{"image_b64":{"type":"string","title":"Image B64","description":"Base64-encoded image bytes (PNG / JPEG / WebP / BMP / TIFF). Max 15 MB after decode."},"return_boxes":{"type":"boolean","title":"Return Boxes","description":"When True, return bounding boxes + per-region confidence scores alongside the text.","default":false}},"type":"object","required":["image_b64"],"title":"ConvertOcrRequest","examples":[{"image_b64":"iVBORw0KGgoAAAANSUhEUg...","return_boxes":false}]},"CostEstimateRequest":{"properties":{"endpoint":{"type":"string","title":"Endpoint","description":"API path, e.g. '/v1/scrape'."},"use_residential_proxy":{"type":"boolean","title":"Use Residential Proxy","description":"Adds the +3-credit residential-proxy surcharge applied to the AEO/SEO endpoints when the customer opts into the residential proxy.","default":false}},"type":"object","required":["endpoint"],"title":"CostEstimateRequest","examples":[{"endpoint":"/v1/scrape"},{"endpoint":"/v1/aeo/page-audit","use_residential_proxy":true}]},"CrawlRequest":{"properties":{"url":{"type":"string","title":"Url"},"max_pages":{"type":"integer","maximum":5000.0,"minimum":1.0,"title":"Max Pages","default":500},"depth":{"type":"integer","maximum":10.0,"minimum":1.0,"title":"Depth","default":3},"concurrency":{"type":"integer","maximum":20.0,"minimum":1.0,"title":"Concurrency","default":10},"respect_robots":{"type":"boolean","title":"Respect Robots","default":true},"webhook_url":{"anyOf":[{"type":"string","maxLength":2083,"minLength":1,"format":"uri"},{"type":"null"}],"title":"Webhook Url"}},"type":"object","required":["url"],"title":"CrawlRequest","examples":[{"depth":3,"max_pages":500,"url":"https://docs.example.com"}]},"CreateKeyRequest":{"properties":{"label":{"type":"string","title":"Label","default":"user-created"},"project_tag":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Project Tag","description":"Optional cost-center / project label for this key. Powers the /v1/orgs/{id}/usage/by-project spend roll-up. Free text, up to 64 chars."},"org_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Org Id","description":"Org to bind this key to. Defaults to the caller's personal org. To mint a team-org key, pass the team org id — caller must be a member."},"daily_cap_credits":{"anyOf":[{"type":"integer","minimum":1.0},{"type":"null"}],"title":"Daily Cap Credits","description":"Per-key daily budget cap (credits). When this key has charged this many credits today, further calls return 402 daily_cap_exceeded. Null = no cap. Resets at 00:00 UTC."},"redact_query_string":{"type":"boolean","title":"Redact Query String","description":"When true, the query string + fragment are stripped from the URL recorded in your usage log for calls made with this key — for URLs that carry PII or tokens in query params. The path is kept.","default":false}},"type":"object","title":"CreateKeyRequest"},"CsvToMarkdownRequest":{"properties":{"csv_text":{"type":"string","title":"Csv Text","description":"Raw CSV text (already decoded). Delimiter auto-detected from , \\t ; |"},"delimiter":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Delimiter","description":"Override delimiter. Default: auto-detect."},"max_rows":{"type":"integer","maximum":50000.0,"minimum":1.0,"title":"Max Rows","description":"Cap on rows rendered; past 5000 a Markdown table is rarely useful.","default":5000}},"type":"object","required":["csv_text"],"title":"CsvToMarkdownRequest","examples":[{"csv_text":"name,age,city\\nAlice,30,Bangalore\\nBob,25,Mumbai"}]},"DatetimeParseRequest":{"properties":{"text":{"type":"string","title":"Text"},"languages":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Languages"}},"type":"object","required":["text"],"title":"DatetimeParseRequest","examples":[{"text":"next tuesday at 3pm"}]},"DeleteAccountRequest":{"properties":{"password":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Password","description":"Your account password. Required unless this is an OAuth-only account."},"confirm_email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Confirm Email","description":"Your account email, typed to confirm. Used when the account has no password (Google sign-in)."}},"type":"object","title":"DeleteAccountRequest","description":"Confirmation for self-service account deletion. Provide `password`\n(accounts with a password set) OR `confirm_email` matching the account\nemail (Google/OAuth-only accounts that never set a password).","examples":[{"password":"my-current-password"},{"confirm_email":"me@example.com"}]},"DnsIntelRequest":{"properties":{"domain":{"type":"string","title":"Domain"}},"type":"object","required":["domain"],"title":"DnsIntelRequest","examples":[{"domain":"anthropic.com"}]},"DnsLookupRequest":{"properties":{"domain":{"type":"string","title":"Domain"},"records":{"items":{"type":"string"},"type":"array","title":"Records","default":["A","MX","TXT"]}},"type":"object","required":["domain"],"title":"DnsLookupRequest","examples":[{"domain":"anthropic.com","records":["A","MX","TXT"]}]},"DnsOverHttpsRequest":{"properties":{"domain":{"type":"string","title":"Domain","description":"Domain to resolve via DoH."},"record_type":{"type":"string","title":"Record Type","description":"DNS record type. A, AAAA, MX, TXT, NS, CNAME, SOA, CAA, PTR, SRV, DNSKEY, DS.","default":"A"},"resolver":{"type":"string","title":"Resolver","description":"Which DoH resolver to use: 'cloudflare' (1.1.1.1) or 'google' (8.8.8.8).","default":"cloudflare"}},"type":"object","required":["domain"],"title":"DnsOverHttpsRequest","examples":[{"domain":"anthropic.com","record_type":"A","resolver":"cloudflare"},{"domain":"anthropic.com","record_type":"MX","resolver":"google"}]},"DocxToMarkdownRequest":{"properties":{"docx_base64":{"type":"string","title":"Docx Base64","description":"Base64-encoded .docx (modern Word) bytes. Legacy .doc binary not supported."}},"type":"object","required":["docx_base64"],"title":"DocxToMarkdownRequest","examples":[{"docx_base64":"<base64-encoded-docx>"}]},"DodoChangePlanRequest":{"properties":{"plan":{"type":"string","enum":["tiny","small","medium","large"],"title":"Plan","description":"Target subscription plan"},"effective_at":{"type":"string","enum":["immediately","next_billing_date"],"title":"Effective At","description":"When the change takes effect","default":"immediately"}},"type":"object","required":["plan"],"title":"DodoChangePlanRequest","examples":[{"effective_at":"immediately","plan":"medium"}]},"DodoCheckoutRequest":{"properties":{"plan":{"type":"string","title":"Plan","description":"Plan to subscribe to. Must be a key in DODO_PLAN_PRODUCT_MAP (typically: tiny | small | medium | large).","default":"small","examples":["small"]},"country":{"anyOf":[{"type":"string","maxLength":2,"minLength":2,"pattern":"^[A-Z]{2}$"},{"type":"null"}],"title":"Country","description":"ISO 3166-1 alpha-2 country code (e.g. 'US', 'GB', 'DE'). Omit to let the customer fill it in on Dodo's hosted page."},"org_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Org Id","description":"Bill a TEAM org instead of your personal account. Caller must be owner/admin of the team. Omit for personal billing."}},"type":"object","title":"DodoCheckoutRequest","examples":[{"plan":"small"},{"country":"US","plan":"medium"},{"org_id":42,"plan":"large"}]},"DodoCreditsCheckoutRequest":{"properties":{"product_id":{"type":"string","title":"Product Id","description":"Dodo product_id for the credit pack to purchase. Must be a key in DODO_PAYG_PRODUCT_MAP.","examples":["prod_aaa"]},"country":{"anyOf":[{"type":"string","maxLength":2,"minLength":2,"pattern":"^[A-Z]{2}$"},{"type":"null"}],"title":"Country","description":"ISO 3166-1 alpha-2 country code (e.g. 'US', 'GB', 'DE'). Omit to let the customer fill it in on Dodo's hosted page."},"org_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Org Id","description":"Buy the credit pack for a TEAM org instead of your personal account. Caller must be owner/admin of the team."}},"type":"object","required":["product_id"],"title":"DodoCreditsCheckoutRequest","examples":[{"product_id":"prod_aaa"},{"country":"GB","product_id":"prod_aaa"},{"org_id":42,"product_id":"prod_aaa"}]},"EmailVerifyRequest":{"properties":{"email":{"type":"string","title":"Email"}},"type":"object","required":["email"],"title":"EmailVerifyRequest","examples":[{"email":"you@example.com"}]},"EnrichCompanyRequest":{"properties":{"url":{"type":"string","title":"Url","description":"Company URL — typically a homepage or /about page. We extract JSON-LD Organization, og:* tags, social anchors, contact patterns."},"use_residential_proxy":{"type":"boolean","title":"Use Residential Proxy","description":"When True, fetches with JS rendering through our premium proxy pool. Use for sites whose JSON-LD is injected client-side. Bills +3 credits.","default":false}},"type":"object","required":["url"],"title":"EnrichCompanyRequest","examples":[{"url":"https://stripe.com/"},{"url":"https://www.anthropic.com/","use_residential_proxy":true}]},"ExtractContactsRequest":{"properties":{"text":{"type":"string","title":"Text","description":"Text or HTML blob. Auto-detected. Body limit is 1 MB."},"include_phones":{"type":"boolean","title":"Include Phones","default":true},"include_socials":{"type":"boolean","title":"Include Socials","default":true}},"type":"object","required":["text"],"title":"ExtractContactsRequest","examples":[{"text":"Reach us at sales@example.com or +1 (415) 555-0142. We're on https://twitter.com/example and https://linkedin.com/in/jane-doe."}]},"ExtractDocumentRequest":{"properties":{"file_base64":{"type":"string","title":"File Base64","description":"Base64-encoded PDF to extract into structured JSON (Docling): text blocks with labels, tables with cells, reading order, page layout, plus markdown. Max ~3.75 MB file (5 MB base64). Processed in-memory; never stored."}},"type":"object","required":["file_base64"],"title":"ExtractDocumentRequest","examples":[{"file_base64":"<base64-encoded-pdf>"}]},"ExtractRequest":{"properties":{"url":{"type":"string","title":"Url"},"stealth":{"type":"boolean","title":"Stealth","default":true},"timeout":{"type":"integer","title":"Timeout","default":30},"proxy":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Proxy"}},"type":"object","required":["url"],"title":"ExtractRequest","examples":[{"url":"https://en.wikipedia.org/wiki/Web_scraping"}]},"ExtractTablesRequest":{"properties":{"html":{"type":"string","title":"Html","description":"HTML blob containing one or more <table> elements. Body limit is 1 MB."},"min_rows":{"type":"integer","minimum":0.0,"title":"Min Rows","description":"Skip tables with fewer rows than this.","default":1},"min_columns":{"type":"integer","minimum":0.0,"title":"Min Columns","description":"Skip tables with fewer columns than this.","default":1}},"type":"object","required":["html"],"title":"ExtractTablesRequest","examples":[{"html":"<table><thead><tr><th>City</th><th>Pop</th></tr></thead><tbody><tr><td>Bangalore</td><td>13M</td></tr><tr><td>Mumbai</td><td>20M</td></tr></tbody></table>"}]},"FileScanRequest":{"properties":{"file_base64":{"type":"string","title":"File Base64","description":"Base64-encoded file bytes to scan with YARA. Scanned in-memory and never stored. Max ~3.75 MB file (5 MB base64)."},"rules":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Rules","description":"Optional custom YARA rule source, scanned in addition to the built-in ruleset."}},"type":"object","required":["file_base64"],"title":"FileScanRequest","examples":[{"file_base64":"WDVPIVAlQEFQWzRcUFpYNTQoUF4pN0NDKTd9JEVJQ0FSLVNUQU5EQVJELUFOVElWSVJVUy1URVNULUZJTEUhJEgrSCo="}]},"ForwarderCreateRequest":{"properties":{"vendor":{"type":"string","title":"Vendor","description":"One of: betterstack, logfire, honeycomb, axiom, grafana_cloud, datadog, newrelic, otlp"},"endpoint_url":{"type":"string","title":"Endpoint Url","description":"Full OTLP HTTP endpoint URL, e.g. https://in.logs.betterstack.com"},"auth_header_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Auth Header Name","description":"HTTP header name to set (e.g. 'Authorization' or 'DD-API-KEY')"},"auth_header_value":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Auth Header Value","description":"HTTP header value. Stored encrypted at rest. Never returned via the API."},"data_types":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Data Types","description":"Subset of ['traces','metrics','logs']. Defaults to ['traces']."}},"type":"object","required":["vendor","endpoint_url"],"title":"ForwarderCreateRequest","examples":[{"auth_header_name":"Authorization","auth_header_value":"Bearer xxx","endpoint_url":"https://in.logs.betterstack.com","vendor":"betterstack"},{"auth_header_name":"Authorization","auth_header_value":"Bearer pylf_v1_xxx","endpoint_url":"https://logfire-api.pydantic.dev","vendor":"logfire"},{"auth_header_name":"x-honeycomb-team","auth_header_value":"hcaik_xxx","endpoint_url":"https://api.honeycomb.io","vendor":"honeycomb"},{"auth_header_name":"Authorization","auth_header_value":"Bearer xaat-xxx","endpoint_url":"https://api.axiom.co","vendor":"axiom"}]},"FreshnessSignalRequest":{"properties":{"url":{"type":"string","title":"Url","description":"Page URL to audit for freshness signals."}},"type":"object","required":["url"],"title":"FreshnessSignalRequest","examples":[{"url":"https://en.wikipedia.org/wiki/Retrieval-augmented_generation"}]},"GeoIpBulkRequest":{"properties":{"ips":{"items":{"type":"string"},"type":"array","maxItems":100,"minItems":1,"title":"Ips","description":"List of IPv4/IPv6 addresses. Max 100 per request."}},"type":"object","required":["ips"],"title":"GeoIpBulkRequest","examples":[{"ips":["8.8.8.8","1.1.1.1","208.67.222.222"]}]},"GeoIpRequest":{"properties":{"ip":{"type":"string","title":"Ip"}},"type":"object","required":["ip"],"title":"GeoIpRequest","examples":[{"ip":"8.8.8.8"}]},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"HashReputationRequest":{"properties":{"hash":{"type":"string","title":"Hash","description":"md5 (32), sha1 (40), or sha256 (64) hex hash to look up on MalwareBazaar. Only the hash is sent upstream — never a file.","examples":["44d88612fea8a8f36de82e1278abb02f"]}},"type":"object","required":["hash"],"title":"HashReputationRequest"},"HeadingHierarchyRequest":{"properties":{"url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Url","description":"URL to fetch and analyse."},"html":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Html","description":"HTML to analyse in place of fetching a URL."}},"type":"object","title":"HeadingHierarchyRequest","examples":[{"url":"https://ollagraph.com/capabilities"}]},"HtmlToMarkdownRequest":{"properties":{"html":{"type":"string","title":"Html","description":"The HTML to convert. Max 1 MB body."},"heading_style":{"type":"string","title":"Heading Style","description":"ATX (#), ATX_CLOSED (# ... #), or UNDERLINED (===).","default":"ATX"},"strip_tags":{"anyOf":[{"items":{"type":"string"},"type":"array","maxItems":50},{"type":"null"}],"title":"Strip Tags","description":"Extra tag names to drop entirely. script and style are always dropped."},"include_links":{"type":"boolean","title":"Include Links","default":true},"include_images":{"type":"boolean","title":"Include Images","default":false}},"type":"object","required":["html"],"title":"HtmlToMarkdownRequest","examples":[{"html":"<article><h1>Hello</h1><p>This is <a href=\"/x\">linked</a> text.</p><script>alert(1)</script></article>"},{"html":"<h2>Doc</h2><p>Drop links.</p><a href=\"/y\">y</a>","include_links":false}]},"IntelBlacklistRequest":{"properties":{"target":{"type":"string","title":"Target","description":"IPv4 address or domain to check."}},"type":"object","required":["target"],"title":"IntelBlacklistRequest","examples":[{"target":"8.8.8.8"},{"target":"spamhaus.org"}]},"IntelCaaRequest":{"properties":{"domain":{"type":"string","title":"Domain","description":"Apex domain. Returns its CAA records and which CAs may issue certs."}},"type":"object","required":["domain"],"title":"IntelCaaRequest","examples":[{"domain":"google.com"}]},"IntelCookiesRequest":{"properties":{"url":{"type":"string","title":"Url","description":"URL to fetch. Returns the Set-Cookie response headers parsed by RFC 6265 grammar."}},"type":"object","required":["url"],"title":"IntelCookiesRequest","examples":[{"url":"https://www.bbc.com/"}]},"IntelDnsPropagationRequest":{"properties":{"domain":{"type":"string","title":"Domain","description":"Domain to query across public resolvers."},"record_type":{"type":"string","title":"Record Type","description":"DNS record type: A, AAAA, MX, TXT, NS, CNAME, or SOA.","default":"A"}},"type":"object","required":["domain"],"title":"IntelDnsPropagationRequest","examples":[{"domain":"ollagraph.com","record_type":"A"}]},"IntelDnssecRequest":{"properties":{"domain":{"type":"string","title":"Domain","description":"Apex domain to probe for DNSSEC posture (DNSKEY + DS + AD-bit)."}},"type":"object","required":["domain"],"title":"IntelDnssecRequest","examples":[{"domain":"cloudflare.com"},{"domain":"example.com"},{"domain":"anthropic.com"}]},"IntelDomainRequest":{"properties":{"domain":{"type":"string","title":"Domain"}},"type":"object","required":["domain"],"title":"IntelDomainRequest","examples":[{"domain":"anthropic.com"}]},"IntelEmailAuthRequest":{"properties":{"domain":{"type":"string","title":"Domain","description":"Domain to inspect — e.g. example.com."}},"type":"object","required":["domain"],"title":"IntelEmailAuthRequest","examples":[{"domain":"google.com"},{"domain":"anthropic.com"}]},"IntelHeadersRequest":{"properties":{"url":{"type":"string","title":"Url","description":"URL to fetch. Must include scheme."}},"type":"object","required":["url"],"title":"IntelHeadersRequest","examples":[{"url":"https://anthropic.com"}]},"IntelHttpVersionsRequest":{"properties":{"url":{"type":"string","title":"Url","description":"An https:// URL to probe for HTTP/1.1, HTTP/2, and HTTP/3-advertised support."}},"type":"object","required":["url"],"title":"IntelHttpVersionsRequest","examples":[{"url":"https://cloudflare.com"},{"url":"https://example.com"}]},"IntelIpReputationRequest":{"properties":{"ip":{"type":"string","title":"Ip","description":"Public IPv4 or IPv6 address to classify."}},"type":"object","required":["ip"],"title":"IntelIpReputationRequest","examples":[{"ip":"8.8.8.8"},{"ip":"23.92.16.1"}]},"IntelNameserversRequest":{"properties":{"domain":{"type":"string","title":"Domain","description":"Apex domain. Returns its NS records plus the IPv4/IPv6 each NS resolves to."}},"type":"object","required":["domain"],"title":"IntelNameserversRequest","examples":[{"domain":"anthropic.com"}]},"IntelRedirectsRequest":{"properties":{"url":{"type":"string","title":"Url","description":"URL whose redirect chain you want to trace."}},"type":"object","required":["url"],"title":"IntelRedirectsRequest","examples":[{"url":"https://bit.ly/anthropic"}]},"IntelReverseDnsRequest":{"properties":{"ip":{"type":"string","title":"Ip","description":"An IPv4 or IPv6 address. Returns its PTR hostname if one is configured."}},"type":"object","required":["ip"],"title":"IntelReverseDnsRequest","examples":[{"ip":"1.1.1.1"},{"ip":"8.8.8.8"}]},"IntelRobotsRequest":{"properties":{"url":{"type":"string","title":"Url"},"user_agent":{"type":"string","title":"User Agent","default":"*"}},"type":"object","required":["url"],"title":"IntelRobotsRequest","examples":[{"url":"https://anthropic.com/pricing","user_agent":"*"}]},"IntelSecurityTxtRequest":{"properties":{"url":{"type":"string","title":"Url","description":"Any URL on the target — we derive the origin and probe /.well-known/security.txt then /security.txt."}},"type":"object","required":["url"],"title":"IntelSecurityTxtRequest","examples":[{"url":"https://google.com"}]},"IntelSocialTagsRequest":{"properties":{"url":{"type":"string","title":"Url","description":"Page to fetch. Returns Open Graph + Twitter Card + canonical + title + icons + lang + theme color."}},"type":"object","required":["url"],"title":"IntelSocialTagsRequest","examples":[{"url":"https://anthropic.com"}]},"IntelSriAuditRequest":{"properties":{"url":{"type":"string","title":"Url","description":"Page to fetch. Lists external scripts + stylesheets and flags which lack Subresource Integrity (SRI) pinning."}},"type":"object","required":["url"],"title":"IntelSriAuditRequest","examples":[{"url":"https://news.ycombinator.com"}]},"IntelUptimeRequest":{"properties":{"url":{"type":"string","title":"Url","description":"URL to probe."}},"type":"object","required":["url"],"title":"IntelUptimeRequest","examples":[{"url":"https://ollagraph.com"}]},"IntelUrlRequest":{"properties":{"url":{"type":"string","title":"Url"}},"type":"object","required":["url"],"title":"IntelUrlRequest","examples":[{"url":"https://anthropic.com"}]},"IntelWafRequest":{"properties":{"url":{"type":"string","title":"Url","description":"URL to probe. Detects Cloudflare/Akamai/Fastly/AWS WAF/Imperva/Sucuri/F5/ModSecurity/etc. from headers + body patterns."}},"type":"object","required":["url"],"title":"IntelWafRequest","examples":[{"url":"https://cloudflare.com"}]},"IntelWaybackRequest":{"properties":{"url":{"type":"string","title":"Url","description":"URL to look up in the Wayback Machine. Returns the first and last archived snapshot."}},"type":"object","required":["url"],"title":"IntelWaybackRequest","examples":[{"url":"https://anthropic.com"}]},"JsonRepairRequest":{"properties":{"text":{"type":"string","title":"Text"}},"type":"object","required":["text"],"title":"JsonRepairRequest","examples":[{"text":"{'name': 'Ada', age: 36, skills: ['math',]"}]},"KeywordExtractRequest":{"properties":{"text":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Text","description":"Plain text to extract keywords from. Provide either `text` or `url`."},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Url","description":"URL to fetch — we'll extract the clean article body and run TextRank over it."},"top_k":{"type":"integer","maximum":100.0,"minimum":1.0,"title":"Top K","description":"How many top keywords + phrases to return.","default":20}},"type":"object","title":"KeywordExtractRequest","examples":[{"text":"Retrieval-augmented generation (RAG) is a technique that enables large language models (LLMs) to retrieve and incorporate new information from external data sources."},{"top_k":30,"url":"https://en.wikipedia.org/wiki/Retrieval-augmented_generation"}]},"LangDetectRequest":{"properties":{"text":{"type":"string","title":"Text"}},"type":"object","required":["text"],"title":"LangDetectRequest","examples":[{"text":"Bonjour, comment allez-vous aujourd'hui ?"}]},"LlmReadyRequest":{"properties":{"url":{"type":"string","title":"Url","description":"URL to fetch and chunk for RAG ingest."},"max_tokens":{"type":"integer","maximum":4096.0,"minimum":64.0,"title":"Max Tokens","description":"Target token budget per chunk. Default 512 (fits comfortably in embedding context windows).","default":512},"overlap_tokens":{"anyOf":[{"type":"integer","minimum":0.0},{"type":"null"}],"title":"Overlap Tokens","description":"Tokens to overlap between adjacent chunks. Default 15% of max_tokens."}},"type":"object","required":["url"],"title":"LlmReadyRequest","examples":[{"max_tokens":512,"url":"https://ollagraph.com/docs"},{"max_tokens":1024,"overlap_tokens":128,"url":"https://en.wikipedia.org/wiki/Retrieval-augmented_generation"}]},"LoginRequest":{"properties":{"email":{"type":"string","title":"Email"},"password":{"type":"string","title":"Password"}},"type":"object","required":["email","password"],"title":"LoginRequest"},"MixedContentRequest":{"properties":{"url":{"type":"string","title":"Url","description":"HTTPS URL to audit for HTTP subresources."}},"type":"object","required":["url"],"title":"MixedContentRequest","examples":[{"url":"https://ollagraph.com/"}]},"ParseEmailRequest":{"properties":{"email":{"type":"string","title":"Email"}},"type":"object","required":["email"],"title":"ParseEmailRequest","examples":[{"email":"Alex.B+work@gmail.com"}]},"ParseUrlRequest":{"properties":{"url":{"type":"string","title":"Url"}},"type":"object","required":["url"],"title":"ParseUrlRequest","examples":[{"url":"https://shop.example.co.uk/products/item?ref=ad&utm_source=fb#reviews"}]},"ParseUserAgentRequest":{"properties":{"user_agent":{"type":"string","title":"User Agent"}},"type":"object","required":["user_agent"],"title":"ParseUserAgentRequest","examples":[{"user_agent":"Mozilla/5.0 (iPhone; CPU iPhone OS 17_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.4 Mobile/15E148 Safari/604.1"}]},"PasswordForgotRequest":{"properties":{"email":{"type":"string","title":"Email","examples":["you@example.com"]}},"type":"object","required":["email"],"title":"PasswordForgotRequest"},"PasswordResetRequest":{"properties":{"token":{"type":"string","minLength":8,"title":"Token","examples":["<token-from-the-email>"]},"new_password":{"type":"string","minLength":8,"title":"New Password","examples":["a-strong-new-password"]}},"type":"object","required":["token","new_password"],"title":"PasswordResetRequest"},"PdfToMarkdownRequest":{"properties":{"pdf_base64":{"type":"string","title":"Pdf Base64","description":"Base64-encoded PDF bytes. 1 MB body cap = ~750 KB raw PDF."},"max_pages":{"type":"integer","maximum":500.0,"minimum":1.0,"title":"Max Pages","description":"Maximum pages to process; defaults to 200.","default":200}},"type":"object","required":["pdf_base64"],"title":"PdfToMarkdownRequest","examples":[{"max_pages":50,"pdf_base64":"<base64-encoded-pdf>"}]},"PptxToMarkdownRequest":{"properties":{"pptx_base64":{"type":"string","title":"Pptx Base64","description":"Base64-encoded .pptx PowerPoint bytes. Extracts titles, bullets, speaker notes. Image-only slides are flagged."}},"type":"object","required":["pptx_base64"],"title":"PptxToMarkdownRequest","examples":[{"pptx_base64":"<base64-encoded-pptx>"}]},"RedirectChainMapRequest":{"properties":{"url":{"type":"string","title":"Url","description":"Starting URL. We trace the full chain to the final destination."}},"type":"object","required":["url"],"title":"RedirectChainMapRequest","examples":[{"url":"http://github.com"},{"url":"https://bit.ly/3xyz"}]},"SchemaValidateRequest":{"properties":{"url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Url","description":"URL to fetch and validate JSON-LD on."},"html":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Html","description":"HTML to validate in place of fetching a URL."}},"type":"object","title":"SchemaValidateRequest","examples":[{"url":"https://schema.org/Product"}]},"ScrapeRequest":{"properties":{"url":{"type":"string","title":"Url"},"format":{"type":"string","enum":["markdown","html","text","links"],"title":"Format","default":"markdown"},"js_eval":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Js Eval"},"actions":{"anyOf":[{"items":{"type":"object"},"type":"array","maxItems":50},{"type":"null"}],"title":"Actions"},"wait_until":{"type":"string","title":"Wait Until","default":"load"},"stealth":{"type":"boolean","title":"Stealth","default":true},"timeout":{"type":"integer","maximum":60.0,"minimum":1.0,"title":"Timeout","default":30},"proxy":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Proxy"},"user_agent":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"User Agent"},"solve_captcha":{"type":"boolean","title":"Solve Captcha","default":false},"captcha_action":{"type":"string","title":"Captcha Action","default":"submit"}},"type":"object","required":["url"],"title":"ScrapeRequest","examples":[{"format":"markdown","url":"https://example.com"},{"actions":[{"selector":".load-more","type":"click"},{"ms":1500,"type":"wait"}],"format":"html","url":"https://example.com/spa","wait_until":"networkidle0"}]},"SeoMetaAuditRequest":{"properties":{"url":{"type":"string","title":"Url","description":"Page URL to audit."},"use_residential_proxy":{"type":"boolean","title":"Use Residential Proxy","description":"When True, routes through our premium residential proxy pool to reach sites that block standard datacenter fetches. Bills +3 credits.","default":false}},"type":"object","required":["url"],"title":"SeoMetaAuditRequest","examples":[{"url":"https://ollagraph.com/architecture/"}]},"SeoReadabilityRequest":{"properties":{"text":{"type":"string","title":"Text","description":"Plain text (or text content extracted from HTML) to score for readability. Minimum 5 words."}},"type":"object","required":["text"],"title":"SeoReadabilityRequest","examples":[{"text":"Qcrawl returns clean structured data from any URL. Send a URL, pick a format, get back markdown, HTML, plain text, or links. Free tier covers 1,000 requests every month with no credit card required."}]},"SeoSnippetCandidatesRequest":{"properties":{"html":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Html","description":"HTML to extract candidates from. Provide either `html` or `url`. Body limit 1 MB."},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Url","description":"Alternative: page URL to fetch and analyse. When supplied with `use_residential_proxy=true`, fetches with JS rendering — finds snippet candidates on JS-hydrated docs sites that have 0 <p> tags in their server-rendered HTML."},"use_residential_proxy":{"type":"boolean","title":"Use Residential Proxy","description":"Only meaningful when `url` is supplied. Routes the fetch through our premium proxy pool with JS rendering. Bills +3 credits.","default":false},"max_per_kind":{"type":"integer","maximum":50.0,"minimum":1.0,"title":"Max Per Kind","description":"Cap per kind (paragraphs / lists / tables).","default":5}},"type":"object","title":"SeoSnippetCandidatesRequest","examples":[{"html":"<article><h2>How big is the free tier?</h2><p>The free tier covers 1,000 requests per month across every endpoint. No credit card is required at signup, and credits do not roll over between billing periods. Upgrade only when you need more.</p></article>"},{"url":"https://docs.stripe.com/api","use_residential_proxy":true}]},"SignupRequest":{"properties":{"email":{"type":"string","title":"Email"},"password":{"type":"string","title":"Password"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name","default":""}},"type":"object","required":["email","password"],"title":"SignupRequest"},"SmartScrapeRequest":{"properties":{"url":{"type":"string","title":"Url"},"format":{"type":"string","title":"Format","default":"markdown"},"stealth":{"type":"boolean","title":"Stealth","default":true},"timeout":{"type":"integer","title":"Timeout","default":30},"proxy":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Proxy"},"actions":{"anyOf":[{"items":{"type":"object"},"type":"array","maxItems":50},{"type":"null"}],"title":"Actions"}},"type":"object","required":["url"],"title":"SmartScrapeRequest","examples":[{"format":"markdown","url":"https://example.com"}]},"SnippetFormatDetectRequest":{"properties":{"url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Url","description":"URL to fetch and analyse. Provide either `url` or `html`."},"html":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Html","description":"HTML to analyse in place of fetching a URL."}},"type":"object","title":"SnippetFormatDetectRequest","examples":[{"url":"https://ollagraph.com/docs"}]},"SubdomainEnumerateRequest":{"properties":{"domain":{"type":"string","title":"Domain","description":"Apex domain to enumerate. We query Certificate Transparency logs (crt.sh) for every cert ever issued under it, then dedupe the SAN list."},"max_results":{"type":"integer","maximum":5000.0,"minimum":1.0,"title":"Max Results","description":"Hard cap on returned subdomains. Most companies fit under 500; large orgs (google, microsoft) need a higher cap.","default":500}},"type":"object","required":["domain"],"title":"SubdomainEnumerateRequest","examples":[{"domain":"stripe.com"},{"domain":"vercel.com","max_results":1000}]},"TextDiffRequest":{"properties":{"a":{"type":"string","title":"A"},"b":{"type":"string","title":"B"},"mode":{"type":"string","title":"Mode","default":"unified"}},"type":"object","required":["a","b"],"title":"TextDiffRequest","examples":[{"a":"line one\nline two","b":"line one\nline 2","mode":"unified"}]},"TextSimilarityRequest":{"properties":{"a":{"type":"string","title":"A"},"b":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"B"},"candidates":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Candidates"}},"type":"object","required":["a"],"title":"TextSimilarityRequest","examples":[{"a":"Ollagraph API","candidates":["Ollagraph","Olanode API","Qcrawl"]}]},"ThreatRequest":{"properties":{"indicator":{"type":"string","title":"Indicator","description":"A single indicator — IP, domain, URL, or file hash. The type is auto-detected and routed to the relevant free threat sources.","examples":["8.8.8.8"]}},"type":"object","required":["indicator"],"title":"ThreatRequest"},"TokenCountRequest":{"properties":{"text":{"type":"string","title":"Text"},"encoding":{"type":"string","title":"Encoding","default":"cl100k_base"}},"type":"object","required":["text"],"title":"TokenCountRequest","examples":[{"encoding":"cl100k_base","text":"How many tokens is this?"}]},"TranscribeRequest":{"properties":{"audio_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Audio Url","description":"HTTPS URL to an audio or video file to transcribe; we download it (size-capped, SSRF-guarded). Provide this OR audio_base64."},"audio_base64":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Audio Base64","description":"Base64-encoded audio bytes for short clips (up to ~3.75 MB). Provide this OR audio_url."},"language":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Language","description":"ISO language code (e.g. 'en') to skip auto-detection."}},"type":"object","title":"TranscribeRequest","examples":[{"audio_url":"https://example.com/clip.mp3"}]},"UpdateKeyRequest":{"properties":{"label":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Label"},"project_tag":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Project Tag","description":"New project tag (or empty string to clear)."},"daily_cap_credits":{"anyOf":[{"type":"integer","minimum":0.0},{"type":"null"}],"title":"Daily Cap Credits","description":"New daily cap in credits. Pass 0 to remove the cap."},"redact_query_string":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Redact Query String","description":"Toggle per-key query-string redaction in the usage log. Omit to leave unchanged."}},"type":"object","title":"UpdateKeyRequest"},"UrlReputationRequest":{"properties":{"url":{"type":"string","title":"Url","description":"URL to check against the URLhaus phishing/malware feed. The URL is matched locally — we do NOT fetch it.","examples":["http://malware.example/login"]}},"type":"object","required":["url"],"title":"UrlReputationRequest"},"ValidateJsonRequest":{"properties":{"data":{"title":"Data"},"schema":{"anyOf":[{"type":"object"},{"type":"null"}],"title":"Schema"}},"type":"object","required":["data"],"title":"ValidateJsonRequest","examples":[{"data":{"age":36,"email":"a@b.com"},"schema":{"properties":{"email":{"type":"string"},"age":{"type":"integer"}},"required":["email"],"type":"object"}}]},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"},"VerifyResendRequest":{"properties":{"email":{"type":"string","title":"Email","examples":["you@example.com"]}},"type":"object","required":["email"],"title":"VerifyResendRequest"},"VsCodeRunRequest":{"properties":{"testCode":{"type":"string","maxLength":100000,"minLength":1,"title":"Testcode","description":"A Mocha test file using ExTester page objects (require('vscode-extension-tester')). Runs against a vanilla VS Code with a no-op extension installed."},"vscodeVersion":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Vscodeversion","description":"Pin a VS Code version (e.g. '1.127.0'). Omit for the server default."}},"type":"object","required":["testCode"],"title":"VsCodeRunRequest","description":"Submit a VS Code UI test (Mocha + ExTester page objects) to run headless\nin an isolated container. Async — poll GET /v1/jobs/{job_id} for the result.","examples":[{"testCode":"const assert=require('assert');const {VSBrowser,ActivityBar}=require('vscode-extension-tester');describe('smoke',function(){this.timeout(180000);it('workbench renders',async()=>{await VSBrowser.instance.waitForWorkbench();const c=await new ActivityBar().getViewControls();assert.ok(c.length>0);});});","vscodeVersion":"1.127.0"}]},"WebhookTestRequest":{"properties":{"webhook_url":{"type":"string","title":"Webhook Url","description":"HTTPS URL to receive the signed test payload."}},"type":"object","required":["webhook_url"],"title":"WebhookTestRequest","examples":[{"webhook_url":"https://example.com/hooks/ollagraph"}]},"XlsxToMarkdownRequest":{"properties":{"xlsx_base64":{"type":"string","title":"Xlsx Base64","description":"Base64-encoded .xlsx Excel bytes. Each sheet rendered as a Markdown table."},"max_rows_per_sheet":{"type":"integer","maximum":10000.0,"minimum":1.0,"title":"Max Rows Per Sheet","description":"Cap per sheet; past 1000 rows raw CSV is more useful than Markdown.","default":1000}},"type":"object","required":["xlsx_base64"],"title":"XlsxToMarkdownRequest","examples":[{"max_rows_per_sheet":500,"xlsx_base64":"<base64-encoded-xlsx>"}]}},"securitySchemes":{"BearerAuth":{"type":"http","scheme":"bearer","bearerFormat":"osk_… API key","description":"Pass your API key as `Authorization: Bearer osk_…`. Create or rotate keys at [app.ollagraph.com](https://app.ollagraph.com/)."},"AdminToken":{"type":"apiKey","in":"header","name":"X-Admin-Token","description":"Operator-only token. Not for customer use."}}},"tags":[{"name":"Scraping","description":"Fetch single URLs or batches. Smart routing picks fast HTTP for static pages, full stealth browser for dynamic ones."},{"name":"Extraction","description":"Turn raw HTML into clean article content or structured metadata (JSON-LD, OpenGraph, Microdata)."},{"name":"Intelligence","description":"Domain and IP intelligence: DNS, WHOIS, SSL certificates, IP geolocation, page tech stack, sitemap, robots.txt, email verification."},{"name":"Crawling","description":"Full-site crawl with depth, budget, and robots.txt controls. Results delivered via webhook or polled with the jobs endpoint."},{"name":"Captcha","description":"Solve reCAPTCHA v3 invisible challenges. v3 only — by design."},{"name":"Parsing","description":"Stateless, offline parsers: URL decomposition, User-Agent breakdown, email syntax + role/disposable/free-provider flags. No network calls."},{"name":"Conversion","description":"Pure HTML → Markdown transformation. No fetch — caller supplies the HTML."},{"name":"SEO","description":"On-page SEO audit: meta scoring, readability, candidate snippet extraction."},{"name":"AEO","description":"Answer Engine Optimization: AI-crawler allowlist audit, llms.txt validation for the post-ChatGPT search era."},{"name":"Account","description":"Identity, usage, credits, API keys, password, and webhook secret for the authenticated user."},{"name":"Authentication","description":"Sign up, log in, verify email, mint a session-scoped API key."},{"name":"Billing","description":"Subscribe, buy credit packs, manage the active subscription, and open the hosted billing portal."},{"name":"Automation","description":"Run VS Code UI tests headless (ExTester) and get structured pass/fail + failure screenshots. Limited access — submitted code executes in an isolated container; enabled per-account."},{"name":"Jobs","description":"Poll the status of any async job (scrape, batch, crawl)."},{"name":"Health","description":"Liveness probe for monitoring."},{"name":"Admin","description":"Operator-only endpoints. Requires X-Admin-Token header."}],"security":[{"BearerAuth":[]}]}