228 endpoints · generated from the live OpenAPI spec

API reference

Base URL https://api.ollagraph.com. Every endpoint takes a Bearer API key and returns JSON. Failed calls are refunded automatically — you only pay for successful responses, and the exact cost comes back in the response headers.

Quickstart

Sign up for a key (1,000 free credits, no card), then make your first call:

# 1. Set your key
export OLLAGRAPH_API_KEY="osk_..."

# 2. Scrape a page
curl https://api.ollagraph.com/v1/scrape \
  -H "Authorization: Bearer $OLLAGRAPH_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"url": "https://example.com"}'

# 3. Or use the MCP server in Claude Desktop / Cursor
pipx run ollagraph-mcp

Authentication

All requests authenticate with a Bearer token: Authorization: Bearer osk_…. Create and revoke keys from your dashboard. The /health endpoint is the only unauthenticated route. Each response carries x-credits-cost, x-credits-charged, and x-credits-balance so you always know what a call cost.

Scraping

Fetch a page. Static or JS-rendered. Single or batch. Sync or async. Plus llm-ready chunking for RAG.

POST/v1/scrape

Scrape

Body parameters

FieldTypeDescription
urlstringrequired
formatstringoptional
js_evalstringoptional
actionsobject[]optional
wait_untilstringoptional
stealthbooleanoptional
timeoutintegeroptional
proxystringoptional
user_agentstringoptional
solve_captchabooleanoptional
captcha_actionstringoptional

Example request

curl -X POST https://api.ollagraph.com/v1/scrape \
  -H "Authorization: Bearer $OLLAGRAPH_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"url":"https://example.com"}'

Example response

{
  "status": "success",
  "url": "https://example.com",
  "content": "# Example Domain\n\nThis domain is for use in documentation examples without needing permission. Avoid use in operations.\n\n[Learn more](https://iana.org/domains/example)",
  "eval_result": null,
  "format": "markdown",
  "time_ms": 146,
  "fallback": false
}
POST/v1/scrape/async

Scrape Async

Body parameters

FieldTypeDescription
urlstringrequired
webhook_urlstring (uri)required
formatstringoptional
js_evalstringoptional
actionsobject[]optional
stealthbooleanoptional
timeoutintegeroptional
proxystringoptional

Example request

curl -X POST https://api.ollagraph.com/v1/scrape/async \
  -H "Authorization: Bearer $OLLAGRAPH_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"url":"https://example.com","webhook_url":"https://example.com"}'
POST/v1/scrape/batch

Batch Scrape

Body parameters

FieldTypeDescription
urlsstring[]required
concurrencyintegeroptional
formatstringoptional
js_evalstringoptional
actionsobject[]optional
timeoutintegeroptional
stealthbooleanoptional
proxystringoptional

Example request

curl -X POST https://api.ollagraph.com/v1/scrape/batch \
  -H "Authorization: Bearer $OLLAGRAPH_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"urls":[]}'
POST/v1/scrape/batch/async

Batch Scrape Async

Body parameters

FieldTypeDescription
urlsstring[]required
concurrencyintegeroptional
formatstringoptional
js_evalstringoptional
actionsobject[]optional
timeoutintegeroptional
stealthbooleanoptional
proxystringoptional
webhook_urlstring (uri)optional

Example request

curl -X POST https://api.ollagraph.com/v1/scrape/batch/async \
  -H "Authorization: Bearer $OLLAGRAPH_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"urls":[]}'
POST/v1/scrape/llm-ready

Scrape Llm Ready

Fetch a URL, extract the article body, chunk it for RAG ingest. Returns chunks sized for an embedding model's context window with configurable overlap. Each chunk carries byte offsets into the source page so customers can attribute citations back to exact positions. The response shape is identical regardless of which fetch path was used; the `proxy_used` field carries a diagnostic label.

Body parameters

FieldTypeDescription
urlstringrequiredURL to fetch and chunk for RAG ingest.
max_tokensintegeroptionalTarget token budget per chunk. Default 512 (fits comfortably in embedding context windows).
overlap_tokensintegeroptionalTokens to overlap between adjacent chunks. Default 15% of max_tokens.

Example request

curl -X POST https://api.ollagraph.com/v1/scrape/llm-ready \
  -H "Authorization: Bearer $OLLAGRAPH_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"url":"https://example.com"}'

Example response

{
  "status": "success",
  "url": "https://example.com",
  "final_url": "https://example.com/",
  "title": "Example Domain",
  "fetched_at": "2026-06-12T09:09:27Z",
  "rendered_with_js": true,
  "rendered_via": "render_backend",
  "chunks": [
    {
      "text": "Example Domain\n\nExample Domain\n\nThis domain is for use in documentation examples without needing permission. Avoid use in operations.\n\nLearn more",
      "byte_start": 0,
      "byte_end": 145,
      "token_count": 25
    }
  ],
  "chunk_count": 1,
  "total_tokens": 25,
  "max_tokens": 512,
  "overlap_tokens": 76,
  "proxy_used": "brightdata",
  "time_ms": 5646
}
POST/v1/scrape/smart

Smart Scrape

Body parameters

FieldTypeDescription
urlstringrequired
formatstringoptional
stealthbooleanoptional
timeoutintegeroptional
proxystringoptional
actionsobject[]optional

Example request

curl -X POST https://api.ollagraph.com/v1/scrape/smart \
  -H "Authorization: Bearer $OLLAGRAPH_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"url":"https://example.com"}'

Extraction

Pull the article, the contacts, the tables. Clean HTML to text your agent can read.

POST/v1/extract/clean

Extract Clean

Body parameters

FieldTypeDescription
urlstringrequired
stealthbooleanoptional
timeoutintegeroptional
proxystringoptional

Example request

curl -X POST https://api.ollagraph.com/v1/extract/clean \
  -H "Authorization: Bearer $OLLAGRAPH_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"url":"https://example.com"}'

Example response

{
  "status": "success",
  "title": "Example Domain",
  "short_title": "Example Domain",
  "content_html": "<html><body><div><body id=\"readabilityBody\"><div><h1>Example Domain</h1><p>This domain is for use in documentation examples without needing permission. Avoid use in operations.</p><p><a href=\"https://iana.org/domains/example\">Learn more</a></p></div>\n</body></div></body></html>",
  "content_text": "Example Domain\n\nThis domain is for use in documentation examples without needing permission. Avoid use in operations.\n\nLearn more",
  "word_count": 19,
  "reading_time_min": 1,
  "url": "https://example.com",
  "fetch_time_ms": 110
}
POST/v1/extract/contacts

Extract Contacts

Pull emails, phone numbers, and social-profile URLs from a text/HTML blob the customer supplies. No fetch, no network — pure regex extraction.

Body parameters

FieldTypeDescription
textstringrequiredText or HTML blob. Auto-detected. Body limit is 1 MB.
include_phonesbooleanoptional
include_socialsbooleanoptional

Example request

curl -X POST https://api.ollagraph.com/v1/extract/contacts \
  -H "Authorization: Bearer $OLLAGRAPH_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"text":"string"}'
POST/v1/extract/document

Extract Document

Extract a PDF into STRUCTURED JSON via Docling — text blocks with labels, tables with cells, reading order, and page layout, plus markdown. For document-AI workflows (invoices, receipts, forms, reports) where structure matters, not just text. The `document` field is Docling's lossless export. In-memory; never stored. Heavier than /v1/convert/pdf-to-markdown.

Body parameters

FieldTypeDescription
file_base64stringrequiredBase64-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.

Example request

curl -X POST https://api.ollagraph.com/v1/extract/document \
  -H "Authorization: Bearer $OLLAGRAPH_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"file_base64":"string"}'
POST/v1/extract/structured

Extract Structured

Body parameters

FieldTypeDescription
urlstringrequired
stealthbooleanoptional
timeoutintegeroptional
proxystringoptional

Example request

curl -X POST https://api.ollagraph.com/v1/extract/structured \
  -H "Authorization: Bearer $OLLAGRAPH_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"url":"https://example.com"}'

Example response

{
  "json_ld": [],
  "microdata": [],
  "open_graph": {},
  "twitter_card": {},
  "rdfa": [],
  "meta": {
    "viewport": "width=device-width, initial-scale=1",
    "title": "Example Domain"
  },
  "products": [],
  "url": "https://example.com",
  "status": "success",
  "fetch_time_ms": 108
}
POST/v1/extract/tables

Extract Tables

Extract every <table> from an HTML blob as structured JSON. Headers detected from <thead> or all-<th> first rows. Colspan/rowspan expanded. No fetch — caller supplies the HTML.

Body parameters

FieldTypeDescription
htmlstringrequiredHTML blob containing one or more <table> elements. Body limit is 1 MB.
min_rowsintegeroptionalSkip tables with fewer rows than this.
min_columnsintegeroptionalSkip tables with fewer columns than this.

Example request

curl -X POST https://api.ollagraph.com/v1/extract/tables \
  -H "Authorization: Bearer $OLLAGRAPH_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"html":"string"}'

Conversion

PDF, DOCX, XLSX, PPTX, CSV, HTML to Markdown. OCR for images. Layout-aware extraction.

POST/v1/convert/csv-to-markdown

Csv To Markdown

Convert CSV text (already decoded) into a Markdown table. Delimiter auto-detected from , \t ; | unless overridden.

Body parameters

FieldTypeDescription
csv_textstringrequiredRaw CSV text (already decoded). Delimiter auto-detected from , \t ; |
delimiterstringoptionalOverride delimiter. Default: auto-detect.
max_rowsintegeroptionalCap on rows rendered; past 5000 a Markdown table is rarely useful.

Example request

curl -X POST https://api.ollagraph.com/v1/convert/csv-to-markdown \
  -H "Authorization: Bearer $OLLAGRAPH_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"csv_text":"string"}'
POST/v1/convert/docx-to-markdown

Docx To Markdown

Convert a modern Word .docx to Markdown. Preserves heading levels, paragraphs, list bullets, table structure. Drops images + comments.

Body parameters

FieldTypeDescription
docx_base64stringrequiredBase64-encoded .docx (modern Word) bytes. Legacy .doc binary not supported.

Example request

curl -X POST https://api.ollagraph.com/v1/convert/docx-to-markdown \
  -H "Authorization: Bearer $OLLAGRAPH_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"docx_base64":"string"}'
POST/v1/convert/html-to-markdown

Html To Markdown

Convert raw HTML to clean Markdown. No fetch — the customer supplies the HTML directly. Same converter as the scrape endpoint's markdown output, exposed standalone for LLM/RAG pipelines that already have HTML.

Body parameters

FieldTypeDescription
htmlstringrequiredThe HTML to convert. Max 1 MB body.
heading_stylestringoptionalATX (#), ATX_CLOSED (# ... #), or UNDERLINED (===).
strip_tagsstring[]optionalExtra tag names to drop entirely. script and style are always dropped.
include_linksbooleanoptional
include_imagesbooleanoptional

Example request

curl -X POST https://api.ollagraph.com/v1/convert/html-to-markdown \
  -H "Authorization: Bearer $OLLAGRAPH_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"html":"string"}'

Example response

{
  "status": "success",
  "markdown": "# Hi\n\nBody [link](/x)",
  "byte_count": 21,
  "word_count": 4
}
POST/v1/convert/ocr

Convert Ocr

OCR an image (PNG/JPEG/WebP/BMP/TIFF) to text. Proxies to a dedicated OCR backend — CPU-only, no GPU. Optionally returns per-region bounding boxes and confidence scores.

Body parameters

FieldTypeDescription
image_b64stringrequiredBase64-encoded image bytes (PNG / JPEG / WebP / BMP / TIFF). Max 15 MB after decode.
return_boxesbooleanoptionalWhen True, return bounding boxes + per-region confidence scores alongside the text.

Example request

curl -X POST https://api.ollagraph.com/v1/convert/ocr \
  -H "Authorization: Bearer $OLLAGRAPH_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"image_b64":"string"}'
POST/v1/convert/pdf-to-markdown

Pdf To Markdown

Convert a PDF to Markdown. Customer supplies base64-encoded PDF bytes. Page-per-section output. Image-only/scanned PDFs are flagged for OCR.

Body parameters

FieldTypeDescription
pdf_base64stringrequiredBase64-encoded PDF bytes. 1 MB body cap = ~750 KB raw PDF.
max_pagesintegeroptionalMaximum pages to process; defaults to 200.

Example request

curl -X POST https://api.ollagraph.com/v1/convert/pdf-to-markdown \
  -H "Authorization: Bearer $OLLAGRAPH_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"pdf_base64":"string"}'
POST/v1/convert/pptx-to-markdown

Pptx To Markdown

Convert a PowerPoint .pptx deck to Markdown — one section per slide. Extracts titles, bullets, and speaker notes. Image-only slides are flagged.

Body parameters

FieldTypeDescription
pptx_base64stringrequiredBase64-encoded .pptx PowerPoint bytes. Extracts titles, bullets, speaker notes. Image-only slides are flagged.

Example request

curl -X POST https://api.ollagraph.com/v1/convert/pptx-to-markdown \
  -H "Authorization: Bearer $OLLAGRAPH_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"pptx_base64":"string"}'
POST/v1/convert/xlsx-to-markdown

Xlsx To Markdown

Convert an Excel .xlsx workbook to Markdown — one section per sheet, formatted as Markdown tables.

Body parameters

FieldTypeDescription
xlsx_base64stringrequiredBase64-encoded .xlsx Excel bytes. Each sheet rendered as a Markdown table.
max_rows_per_sheetintegeroptionalCap per sheet; past 1000 rows raw CSV is more useful than Markdown.

Example request

curl -X POST https://api.ollagraph.com/v1/convert/xlsx-to-markdown \
  -H "Authorization: Bearer $OLLAGRAPH_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"xlsx_base64":"string"}'

AEO

Audit how AI crawlers see, cite, and rank your site. Page audit, citation readiness, llms.txt, fetch simulator.

POST/v1/aeo/ai-bot-allowlist

Aeo Ai Bot Allowlist

For each of 14 named AI crawlers (GPTBot, ClaudeBot, PerplexityBot, Google-Extended, Applebot-Extended, CCBot, etc.), report whether the site's robots.txt allows or blocks it.

Body parameters

FieldTypeDescription
domainstringrequiredDomain or origin to inspect — qcrawl.com, https://ollagraph.com, or example.org all accepted.

Example request

curl -X POST https://api.ollagraph.com/v1/aeo/ai-bot-allowlist \
  -H "Authorization: Bearer $OLLAGRAPH_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"domain":"example.com"}'
POST/v1/aeo/citation-readiness

Aeo Citation Readiness

Score a page against the post-ChatGPT EEAT signals: numerical specifics, named entities, authoritative outbound links, author byline, last-updated date, content length. Mechanical scoring — no LLM call. Opt-in residential proxy is available for sites with strict access controls.

Body parameters

FieldTypeDescription
urlstringrequiredPage URL to score against the post-ChatGPT EEAT signals.
use_residential_proxybooleanoptionalWhen True, routes the fetch through our premium residential proxy pool. Use for sites with strict access controls. Bills +3 credits.

Example request

curl -X POST https://api.ollagraph.com/v1/aeo/citation-readiness \
  -H "Authorization: Bearer $OLLAGRAPH_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"url":"https://example.com"}'
POST/v1/aeo/competitor-diff

Aeo Competitor Diff

Run page-audit on 2-5 URLs in parallel; return head-to-head rankings plus where the first URL wins and loses against the rest. Bills 3 credits regardless of URL count.

Body parameters

FieldTypeDescription
urlsstring[]required2–5 URLs. First entry is treated as 'your' page; the rest are competitors. Bills 3 credits regardless of count.

Example request

curl -X POST https://api.ollagraph.com/v1/aeo/competitor-diff \
  -H "Authorization: Bearer $OLLAGRAPH_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"urls":[]}'
POST/v1/aeo/freshness-signal

Aeo Freshness Signal

Audit a page's freshness signals from schema.org dateModified, OpenGraph article:modified_time, HTTP Last-Modified, visible 'Updated' text, and copyright year. Returns a 0-100 freshness score + the most-recent dated signal + any inconsistencies between them.

Body parameters

FieldTypeDescription
urlstringrequiredPage URL to audit for freshness signals.

Example request

curl -X POST https://api.ollagraph.com/v1/aeo/freshness-signal \
  -H "Authorization: Bearer $OLLAGRAPH_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"url":"https://example.com"}'
POST/v1/aeo/heading-hierarchy-score

Aeo Heading Hierarchy

Audit H1-H6 hierarchy on a page. Surfaces missing H1, multiple H1s, hierarchy skips (H2 -> H4 without H3 between), and the count of question-style headings — important for AI Overview eligibility.

Body parameters

FieldTypeDescription
urlstringoptionalURL to fetch and analyse.
htmlstringoptionalHTML to analyse in place of fetching a URL.

Example request

curl -X POST https://api.ollagraph.com/v1/aeo/heading-hierarchy-score \
  -H "Authorization: Bearer $OLLAGRAPH_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"url":"https://example.com"}'
POST/v1/aeo/llm-fetch-simulator

Aeo Llm Fetch Simulator

Fetch a URL as each of 11 named AI crawlers (plus a browser baseline). Report what each one actually received: status, content length, visible text preview, plus cloaking + JS-only detection.

Body parameters

FieldTypeDescription
urlstringrequiredPage URL to fetch as each of 11 named AI crawlers (plus a browser baseline).

Example request

curl -X POST https://api.ollagraph.com/v1/aeo/llm-fetch-simulator \
  -H "Authorization: Bearer $OLLAGRAPH_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"url":"https://example.com"}'
POST/v1/aeo/llms-txt-audit

Aeo Llms Txt Audit

Fetch /llms.txt at the given domain and audit it against the emerging AEO-readiness convention. Validates structure, scores section coverage, checks for link rot (up to 50 links).

Body parameters

FieldTypeDescription
domainstringrequiredDomain to inspect for an llms.txt file at /llms.txt.

Example request

curl -X POST https://api.ollagraph.com/v1/aeo/llms-txt-audit \
  -H "Authorization: Bearer $OLLAGRAPH_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"domain":"example.com"}'
POST/v1/aeo/page-audit

Aeo Page Audit

Full AEO audit — runs 9 component probes in parallel and returns one headline 0–100 score, five category breakdowns, top issues, and ranked recommendations. Bills 3 credits (premium orchestration).

Body parameters

FieldTypeDescription
urlstringrequiredPage URL to run the full AEO audit on. Bills 3 credits — runs 9 component probes in parallel.

Example request

curl -X POST https://api.ollagraph.com/v1/aeo/page-audit \
  -H "Authorization: Bearer $OLLAGRAPH_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"url":"https://example.com"}'

Example response

{
  "status": "success",
  "url": "https://example.com",
  "overall_score": 29,
  "overall_grade": "F",
  "category_scores": {
    "discoverability": 66.7,
    "content_quality": 30,
    "structured_data": 0,
    "answerability": 30,
    "citability": 0
  },
  "top_issues": [
    "Meta: Title is 14 characters; aim for 30–60.",
    "Meta: Missing meta description.",
    "Meta: Missing rel=canonical link."
  ],
  "ranked_recommendations": [
    {
      "priority": "high",
      "category": "structured_data",
      "action": "No JSON-LD found at all. This page is effectively invisible to AI answer engines."
    },
    {
      "priority": "high",
      "category": "structured_data",
      "action": "Add FAQPage schema — earns AI Overview citation on question queries. Highest single-schema impact for AEO."
    },
    {
      "priority": "high",
      "category": "structured_data",
      "action": "Add Article schema — basic eligibility for Google AI Overview."
    },
    {
      "priority": "medium",
      "category": "citability",
      "action": "Add concrete numbers (percentages, dollar amounts, dates). LLMs pull-quote specifics; they rewrite vague claims."
    },
    {
      "priority": "medium",
      "category": "citability",
      "action": "Name more specific entities (companies, products, people, places). LLMs preferentially cite pages with high named-entity density."
    },
    "… (+2 more)"
  ],
  "components": {
    "meta_audit": {
      "status": "success",
      "url": "https://example.com",
      "final_url": "https://example.com",
      "bot_blocked_at_origin": false,
      "proxy_used": "brightdata",
      "is_likely_404": false,
      "soft_404_signals": [],
      "score": 40,
      "grade": "D",
      "title": "Example Domain",
      "title_length": 14,
      "meta_description": null,
      "meta_description_length": 0,
      "h1_count": 1,
      "h1_text": "Example Domain",
      "canonical": null,
      "robots_directive": null,
      "is_indexable": true,
      "viewport": "width=device-width, initial-scale=1",
      "og_image": null,
      "og_title": null,
      "og_description": null,
      "issues": [
        "Title is 14 characters; aim for 30–60.",
        "Missing meta description.",
        "Missing rel=canonical link.",
        "Missing og:image (used by social previews and many AI crawlers)."
      ]
    },
    "readability": {
      "status": "success",
      "text_byte_count": 142,
      "word_count": 21,
      "sentence_count": 2,
      "syllable_count": 41,
      "reading_time_min": 1,
      "scores": {
        "flesch_reading_ease": 26.98,
        "flesch_kincaid_grade": 12.1,
        "gunning_fog": 13.72,
        "smog_index": 0,
        "automated_readability_index": 11.2,
        "coleman_liau_index": 14.36
      },
      "summary": {
        "band": "very_difficult",
        "label": "College-graduate level; very difficult."
      }
    },
    "snippet_candidates": {
      "status": "success",
      "paragraphs": [],
      "lists": [],
      "tables": [],
      "total_candidates": 0
    },
    "schema_coverage": {
      "status": "success",
      "url": "https://example.com",
      "final_url": "https://example.com",
      "score": 0,
      "grade": "F",
      "bot_blocked_at_origin": false,
      "proxy_used": "brightdata",
      "json_ld_types_present": [],
      "json_ld_block_count": 0,
      "microdata_types_present": [],
      "aeo_critical_present": [],
      "aeo_critical_missing": [
        "Article",
        "BlogPosting",
        "BreadcrumbList",
        "FAQPage",
        "HowTo",
        "… (+7 more)"
      ],
      "aeo_critical_legend": {
        "Article": "Standard article — basic AI Overview eligibility.",
        "NewsArticle": "Time-sensitive content — Top Stories eligibility.",
        "BlogPosting": "Blog-format article variant — adds publishDate weight.",
        "FAQPage": "Question/answer pairs — extremely AI-friendly, often quoted verbatim by Perplexity/ChatGPT.",
        "HowTo": "Step-by-step content — high citation rate in 'how do I' queries.",
        "Product": "E-commerce — required for Shopping Graph + AI shopping answers.",
        "Recipe": "Cooking content — required for the Recipe answer panel.",
        "Organization": "Site/brand identity — required for knowledge-panel candidacy.",
        "WebSite": "Site-level signals — enables Sitelinks Search Box.",
        "BreadcrumbList": "Navigation path — improves SERP display and AI citation chain.",
        "Person": "Author identity — strongest E-E-A-T signal.",
        "Review": "Star-rated reviews — pull-quoted in AI shopping answers."
      },
      "open_graph_present": false,
      "open_graph_field_count": 0,
      "twitter_card_present": false,
      "twitter_card_field_count": 0,
      "recommendations": [
        "No JSON-LD found at all. This page is effectively invisible to AI answer engines.",
        "Add FAQPage schema — earns AI Overview citation on question queries. Highest single-schema impact for AEO.",
        "Add Article schema — basic eligibility for Google AI Overview.",
        "Add Organization schema with logo + sameAs — required for knowledge-panel candidacy.",
        "Add BreadcrumbList — improves SERP display and helps LLMs understand site hierarchy."
      ]
    },
    "citation_readiness": {
      "status": "success",
      "url": "https://example.com",
      "final_url": "https://example.com",
      "bot_blocked_at_origin": false,
      "proxy_used": "brightdata",
      "score": 0,
      "grade": "F",
      "score_breakdown": {
        "numerical_specifics_max20": 0,
        "named_entities_max20": 0,
        "authoritative_outbound_links_max25": 0,
        "author_byline_max15": 0,
        "last_updated_max10": 0,
        "content_length_max10": 0
      },
      "signals": {
        "numerical_specifics": {
          "count": 0,
          "examples": []
        },
        "named_entities": {
          "count": 0,
          "examples": []
        },
        "authoritative_outbound_links": {
          "count": 0,
          "domains": []
        },
        "has_author_byline": false,
        "author_name": null,
        "has_last_updated": false,
        "last_updated": null,
        "word_count": 21
      },
      "recommendations": [
        "Add concrete numbers (percentages, dollar amounts, dates). LLMs pull-quote specifics; they rewrite vague claims.",
        "Name more specific entities (companies, products, people, places). LLMs preferentially cite pages with high named-entity density.",
        "Add outbound citations to authoritative sources (.gov, .edu, reputable news). Boosts perceived trustworthiness for both Google and LLM crawlers.",
        "Add a visible author byline + meta name='author'. The single strongest E-E-A-T signal for ChatGPT and Google AI Overview.",
        "Add a visible 'last updated' date + article:modified_time meta tag. LLMs heavily prefer recent content; stale-looking pages get skipped.",
        "… (+1 more)"
      ]
    },
    "ai_bot_allowlist": {
      "status": "success",
      "domain": "example.com",
      "robots_url": "https://example.com/robots.txt",
      "robots_status": 404,
      "results": [
        {
          "bot": "GPTBot",
          "vendor": "OpenAI",
          "purpose": "Trains GPT models.",
          "allowed": true,
          "explicit_rule": false,
          "reason": "no_robots_txt"
        },
        {
          "bot": "ChatGPT-User",
          "vendor": "OpenAI",
          "purpose": "Live browsing during ChatGPT conversations.",
          "allowed": true,
          "explicit_rule": false,
          "reason": "no_robots_txt"
        },
        {
          "bot": "OAI-SearchBot",
          "vendor": "OpenAI",
          "purpose": "Powers ChatGPT search results.",
          "allowed": true,
          "explicit_rule": false,
          "reason": "no_robots_txt"
        },
        {
          "bot": "ClaudeBot",
          "vendor": "Anthropic",
          "purpose": "Trains Claude models.",
          "allowed": true,
          "explicit_rule": false,
          "reason": "no_robots_txt"
        },
        {
          "bot": "Claude-Web",
          "vendor": "Anthropic",
          "purpose": "Live browsing in Claude conversations.",
          "allowed": true,
          "explicit_rule": false,
          "reason": "no_robots_txt"
        },
        "… (+9 more)"
      ],
      "summary": {
        "total_bots_checked": 14,
        "explicitly_allowed": 0,
        "explicitly_blocked": 0,
        "implicit_default": 14
      }
    },
    "llm_fetch_simulator": {
      "status": "success",
      "url": "https://example.com",
      "bots_probed": 10,
      "results": [
        {
          "bot": "GPTBot",
          "vendor": "OpenAI",
          "ua": "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko); compatible; GPTBot/1.2; +https://openai.com/gptbot",
          "status": 200,
          "final_url": "https://example.com",
          "content_length_bytes": 559,
          "visible_text_chars": 142,
          "visible_words": 21,
          "visible_text_preview": "Example Domain Example Domain This domain is for use in documentation examples without needing permission. Avoid use in operations. Learn more",
          "received_full_content": false,
          "reason": null
        },
        {
          "bot": "ChatGPT-User",
          "vendor": "OpenAI",
          "ua": "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko); compatible; ChatGPT-User/1.0; +https://openai.com/bot",
          "status": 200,
          "final_url": "https://example.com",
          "content_length_bytes": 559,
          "visible_text_chars": 142,
          "visible_words": 21,
          "visible_text_preview": "Example Domain Example Domain This domain is for use in documentation examples without needing permission. Avoid use in operations. Learn more",
          "received_full_content": false,
          "reason": null
        },
        {
          "bot": "OAI-SearchBot",
          "vendor": "OpenAI",
          "ua": "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko); compatible; OAI-SearchBot/1.0; +https://openai.com/searchbot",
          "status": 200,
          "final_url": "https://example.com",
          "content_length_bytes": 559,
          "visible_text_chars": 142,
          "visible_words": 21,
          "visible_text_preview": "Example Domain Example Domain This domain is for use in documentation examples without needing permission. Avoid use in operations. Learn more",
          "received_full_content": false,
          "reason": null
        },
        {
          "bot": "ClaudeBot",
          "vendor": "Anthropic",
          "ua": "Mozilla/5.0 (compatible; ClaudeBot/1.0; [email protected])",
          "status": 200,
          "final_url": "https://example.com",
          "content_length_bytes": 559,
          "visible_text_chars": 142,
          "visible_words": 21,
          "visible_text_preview": "Example Domain Example Domain This domain is for use in documentation examples without needing permission. Avoid use in operations. Learn more",
          "received_full_content": false,
          "reason": null
        },
        {
          "bot": "PerplexityBot",
          "vendor": "Perplexity",
          "ua": "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko); compatible; PerplexityBot/1.0; +https://perplexity.ai/perplexitybot",
          "status": 200,
          "final_url": "https://example.com",
          "content_length_bytes": 559,
          "visible_text_chars": 142,
          "visible_words": 21,
          "visible_text_preview": "Example Domain Example Domain This domain is for use in documentation examples without needing permission. Avoid use in operations. Learn more",
          "received_full_content": false,
          "reason": null
        },
        "… (+6 more)"
      ],
      "summary": {
        "all_bots_received_content": false,
        "success_count": 0,
        "blocked_count": 0,
        "js_only_count": 0,
        "error_count": 0,
        "cloaking_detected": false
      }
    },
    "redirects": {
      "status": "success",
      "starting_url": "https://example.com",
      "final_url": "https://example.com",
      "final_status": 200,
      "hops": [
        {
          "url": "https://example.com",
          "status": 200,
          "location": null
        }
      ],
      "hop_count": 1,
      "elapsed_ms": 302
    },
    "llms_txt_audit": {
      "status": "success",
      "domain": "example.com",
      "llms_txt_url": "https://example.com/llms.txt",
      "exists": false,
      "score": 0,
      "grade": "F",
      "recommendations": [
        "Create an llms.txt file at the site root.",
        "Follow the convention at https://llmstxt.org/",
        "Cover at minimum: about, product, pricing, API reference, blog posts."
      ]
    }
  }
}
POST/v1/aeo/schema-coverage

Aeo Schema Coverage

Parse every JSON-LD block + Microdata + OpenGraph on a page; score coverage against the 12 AEO-critical schema.org types. Opt-in residential + JS-rendering captures schemas hydrated client-side on Next.js sites.

Body parameters

FieldTypeDescription
urlstringrequiredPage URL to inspect for JSON-LD / OpenGraph / Microdata coverage.
use_residential_proxybooleanoptionalWhen 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.

Example request

curl -X POST https://api.ollagraph.com/v1/aeo/schema-coverage \
  -H "Authorization: Bearer $OLLAGRAPH_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"url":"https://example.com"}'
POST/v1/aeo/snippet-format-detect

Aeo Snippet Format Detect

Classify a page's content into the four featured-snippet shapes Google pulls from: paragraph, list, table, definition. Returns counts + example snippets for each kind + a best-fit prediction.

Body parameters

FieldTypeDescription
urlstringoptionalURL to fetch and analyse. Provide either `url` or `html`.
htmlstringoptionalHTML to analyse in place of fetching a URL.

Example request

curl -X POST https://api.ollagraph.com/v1/aeo/snippet-format-detect \
  -H "Authorization: Bearer $OLLAGRAPH_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"url":"https://example.com"}'

SEO

Meta-tag audits, readability, schema validation, redirect chains, broken links, anchor text, freshness.

POST/v1/seo/anchor-text-audit

Seo Anchor Text Audit

Audit every <a href> on the page. Flags generic anchors ('click here', 'read more') and over-optimized repeats (same exact- match anchor used 3+ times pointing at the same URL).

Body parameters

FieldTypeDescription
urlstringrequiredPage to audit anchor text on.

Example request

curl -X POST https://api.ollagraph.com/v1/seo/anchor-text-audit \
  -H "Authorization: Bearer $OLLAGRAPH_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"url":"https://example.com"}'
POST/v1/seo/broken-links-audit

Seo Broken Links

Scan a single page for broken outbound + internal links. HEAD probe with GET fallback, parallel, configurable cap. Returns full status code + final URL per link, with broken ones flagged.

Body parameters

FieldTypeDescription
urlstringrequiredPage to scan for broken outbound + internal links.
max_linksintegeroptionalCap on number of links probed.
concurrencyintegeroptionalParallel HEAD probes.
timeout_secondsnumberoptional

Example request

curl -X POST https://api.ollagraph.com/v1/seo/broken-links-audit \
  -H "Authorization: Bearer $OLLAGRAPH_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"url":"https://example.com"}'
POST/v1/seo/keyword-extract

Seo Keyword Extract

Extract top keywords + multi-word phrases from text or a URL. Uses lightweight TextRank-style co-occurrence ranking; no LLM calls, no paid keyword feeds. Bring your own text or let us fetch+clean the URL for you.

Body parameters

FieldTypeDescription
textstringoptionalPlain text to extract keywords from. Provide either `text` or `url`.
urlstringoptionalURL to fetch — we'll extract the clean article body and run TextRank over it.
top_kintegeroptionalHow many top keywords + phrases to return.

Example request

curl -X POST https://api.ollagraph.com/v1/seo/keyword-extract \
  -H "Authorization: Bearer $OLLAGRAPH_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"text":"string"}'
POST/v1/seo/meta-audit

Seo Meta Audit

Audit a page's SEO meta fields and grade them 0–100 / A–F.

Body parameters

FieldTypeDescription
urlstringrequiredPage URL to audit.
use_residential_proxybooleanoptionalWhen True, routes through our premium residential proxy pool to reach sites that block standard datacenter fetches. Bills +3 credits.

Example request

curl -X POST https://api.ollagraph.com/v1/seo/meta-audit \
  -H "Authorization: Bearer $OLLAGRAPH_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"url":"https://example.com"}'

Example response

{
  "status": "success",
  "url": "https://example.com",
  "final_url": "https://example.com",
  "bot_blocked_at_origin": false,
  "proxy_used": "brightdata",
  "is_likely_404": false,
  "soft_404_signals": [],
  "score": 40,
  "grade": "D",
  "title": "Example Domain",
  "title_length": 14,
  "meta_description": null,
  "meta_description_length": 0,
  "h1_count": 1,
  "h1_text": "Example Domain",
  "canonical": null,
  "robots_directive": null,
  "is_indexable": true,
  "viewport": "width=device-width, initial-scale=1",
  "og_image": null,
  "og_title": null,
  "og_description": null,
  "issues": [
    "Title is 14 characters; aim for 30–60.",
    "Missing meta description.",
    "Missing rel=canonical link.",
    "Missing og:image (used by social previews and many AI crawlers)."
  ]
}
POST/v1/seo/mixed-content

Seo Mixed Content

Find HTTP subresources loaded by an HTTPS page (mixed content). Reports every <img>, <script>, <link>, <iframe>, <audio>, <video>, <source>, <embed>, <object> that uses http:// instead of https://.

Body parameters

FieldTypeDescription
urlstringrequiredHTTPS URL to audit for HTTP subresources.

Example request

curl -X POST https://api.ollagraph.com/v1/seo/mixed-content \
  -H "Authorization: Bearer $OLLAGRAPH_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"url":"https://example.com"}'
POST/v1/seo/readability

Seo Readability

Score readability via six standard formulas (Flesch, Flesch-Kincaid, Gunning-Fog, SMOG, ARI, Coleman-Liau) plus reading time.

Body parameters

FieldTypeDescription
textstringrequiredPlain text (or text content extracted from HTML) to score for readability. Minimum 5 words.

Example request

curl -X POST https://api.ollagraph.com/v1/seo/readability \
  -H "Authorization: Bearer $OLLAGRAPH_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"text":"string"}'
POST/v1/seo/redirect-chain-map

Seo Redirect Chain

Trace the full redirect chain from a URL to its final destination. Returns the hops + SEO-flavored scoring: too-long chain, HTTPS->HTTP downgrade, 302/307 used where 301 would be appropriate.

Body parameters

FieldTypeDescription
urlstringrequiredStarting URL. We trace the full chain to the final destination.

Example request

curl -X POST https://api.ollagraph.com/v1/seo/redirect-chain-map \
  -H "Authorization: Bearer $OLLAGRAPH_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"url":"https://example.com"}'
POST/v1/seo/schema-validate

Seo Schema Validate

Validate JSON-LD blocks against Google's required-field lists for 20+ rich-result types (Product, Recipe, Article, Event, FAQPage, HowTo, JobPosting, LocalBusiness, Review, ...). Returns the list of types the page is rich-result-eligible for.

Body parameters

FieldTypeDescription
urlstringoptionalURL to fetch and validate JSON-LD on.
htmlstringoptionalHTML to validate in place of fetching a URL.

Example request

curl -X POST https://api.ollagraph.com/v1/seo/schema-validate \
  -H "Authorization: Bearer $OLLAGRAPH_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"url":"https://example.com"}'
POST/v1/seo/snippet-candidates

Seo Snippet Candidates

Extract candidate featured-snippet paragraphs, lists, and tables from an HTML blob OR from a URL we fetch on your behalf. When `url` is supplied with `use_residential_proxy=true`, fetches with JS rendering — finds snippets on div-soup docs sites.

Body parameters

FieldTypeDescription
htmlstringoptionalHTML to extract candidates from. Provide either `html` or `url`. Body limit 1 MB.
urlstringoptionalAlternative: 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_proxybooleanoptionalOnly meaningful when `url` is supplied. Routes the fetch through our premium proxy pool with JS rendering. Bills +3 credits.
max_per_kindintegeroptionalCap per kind (paragraphs / lists / tables).

Example request

curl -X POST https://api.ollagraph.com/v1/seo/snippet-candidates \
  -H "Authorization: Bearer $OLLAGRAPH_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"html":"string"}'

Intelligence

WHOIS, RDAP, DNS, SSL, GeoIP, ASN. Certificate transparency. Subdomain enumeration. Email auth.

POST/v1/dns/intelligence

Dns Intel

Body parameters

FieldTypeDescription
domainstringrequired

Example request

curl -X POST https://api.ollagraph.com/v1/dns/intelligence \
  -H "Authorization: Bearer $OLLAGRAPH_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"domain":"example.com"}'
POST/v1/dns/lookup

Dns Lookup

Body parameters

FieldTypeDescription
domainstringrequired
recordsstring[]optional

Example request

curl -X POST https://api.ollagraph.com/v1/dns/lookup \
  -H "Authorization: Bearer $OLLAGRAPH_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"domain":"example.com"}'

Example response

{
  "domain": "example.com",
  "records": {
    "A": [
      "104.20.23.154",
      "172.66.147.243"
    ],
    "MX": [
      "0 ."
    ],
    "TXT": [
      "\"v=spf1 -all\"",
      "\"_k2n1y4vw3qtb4skdx9e7dxt97qrmmq9\""
    ]
  },
  "status": "success"
}
POST/v1/dns/over-https

Dns Over Https

Forward a DNS query through Cloudflare 1.1.1.1 or Google 8.8.8.8 via DoH (RFC 8484 JSON encoding). Use when you want a DNS answer from a specific public resolver without running your own DoH client — handy for privacy-aware lookups or 'what does Cloudflare see vs Google'.

Body parameters

FieldTypeDescription
domainstringrequiredDomain to resolve via DoH.
record_typestringoptionalDNS record type. A, AAAA, MX, TXT, NS, CNAME, SOA, CAA, PTR, SRV, DNSKEY, DS.
resolverstringoptionalWhich DoH resolver to use: 'cloudflare' (1.1.1.1) or 'google' (8.8.8.8).

Example request

curl -X POST https://api.ollagraph.com/v1/dns/over-https \
  -H "Authorization: Bearer $OLLAGRAPH_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"domain":"example.com"}'
POST/v1/intel/asn

Intel Asn

ASN → operator name + every routed CIDR prefix. Reuses the same iptoasn.com data the geoip endpoint indexes. Read-only, no network. Useful for compiling per-network IP allow/deny lists, mapping customer infrastructure, or auditing ASN ownership claims.

Body parameters

FieldTypeDescription
asnintegerrequiredASN number, without the 'AS' prefix. E.g. 15169 for Google.

Example request

curl -X POST https://api.ollagraph.com/v1/intel/asn \
  -H "Authorization: Bearer $OLLAGRAPH_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"asn":0}'
POST/v1/intel/blacklist

Intel Blacklist

Check an IPv4 or domain against major DNSBLs in parallel.

Body parameters

FieldTypeDescription
targetstringrequiredIPv4 address or domain to check.

Example request

curl -X POST https://api.ollagraph.com/v1/intel/blacklist \
  -H "Authorization: Bearer $OLLAGRAPH_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"target":"string"}'
POST/v1/intel/caa

Intel Caa

CAA records for a domain: which CAs may issue certs (issue), which may issue wildcard certs (issuewild), and where security incidents should be reported (iodef). Absence = open default (any CA may issue). `issue ';'` = closed (no CA may issue).

Body parameters

FieldTypeDescription
domainstringrequiredApex domain. Returns its CAA records and which CAs may issue certs.

Example request

curl -X POST https://api.ollagraph.com/v1/intel/caa \
  -H "Authorization: Bearer $OLLAGRAPH_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"domain":"example.com"}'
POST/v1/intel/cert-transparency-history

Intel Cert Transparency

Query Certificate Transparency logs via crt.sh for every cert ever issued for the domain or any subdomain. Free, no auth needed. Returns deduplicated certs sorted newest-first.

Body parameters

FieldTypeDescription
domainstringrequiredDomain to query for every cert ever issued (incl. subdomains).

Example request

curl -X POST https://api.ollagraph.com/v1/intel/cert-transparency-history \
  -H "Authorization: Bearer $OLLAGRAPH_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"domain":"example.com"}'
POST/v1/intel/cookies

Intel Cookies

Set-Cookie header analysis: name, domain, path, SameSite, Secure, HttpOnly, Max-Age, Expires, is_session, third-party-or-not. Header cookies only — JS-set cookies need a real browser and are NOT visible from server-side fetch.

Body parameters

FieldTypeDescription
urlstringrequiredURL to fetch. Returns the Set-Cookie response headers parsed by RFC 6265 grammar.

Example request

curl -X POST https://api.ollagraph.com/v1/intel/cookies \
  -H "Authorization: Bearer $OLLAGRAPH_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"url":"https://example.com"}'
POST/v1/intel/dns-propagation

Intel Dns Propagation

Query the same record across N public resolvers; show consistency.

Body parameters

FieldTypeDescription
domainstringrequiredDomain to query across public resolvers.
record_typestringoptionalDNS record type: A, AAAA, MX, TXT, NS, CNAME, or SOA.

Example request

curl -X POST https://api.ollagraph.com/v1/intel/dns-propagation \
  -H "Authorization: Bearer $OLLAGRAPH_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"domain":"example.com"}'
POST/v1/intel/dnssec

Intel Dnssec

DNSSEC posture: does the domain publish DNSKEY records, has the parent delegated DS, did the upstream resolver set AD on a fresh lookup? We surface the three discrete observations rather than try to give a single 'is it valid' verdict — chain validation has too many edge cases (NSEC3, expired sigs, CDS conventions) to compress into one bit honestly.

Body parameters

FieldTypeDescription
domainstringrequiredApex domain to probe for DNSSEC posture (DNSKEY + DS + AD-bit).

Example request

curl -X POST https://api.ollagraph.com/v1/intel/dnssec \
  -H "Authorization: Bearer $OLLAGRAPH_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"domain":"example.com"}'
POST/v1/intel/email-auth

Intel Email Auth

Parse and score SPF, DKIM, DMARC, and BIMI for a domain. All-DNS, no SMTP.

Body parameters

FieldTypeDescription
domainstringrequiredDomain to inspect — e.g. example.com.

Example request

curl -X POST https://api.ollagraph.com/v1/intel/email-auth \
  -H "Authorization: Bearer $OLLAGRAPH_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"domain":"example.com"}'
POST/v1/intel/geoip

Intel Geoip

IP geolocation — country, city, lat/lon, timezone for any public IP. Backed by the DB-IP Lite database (CC-BY, db-ip.com). No SSRF guard needed: the IP is only a key into a local DB read, never fetched.

Body parameters

FieldTypeDescription
ipstringrequired

Example request

curl -X POST https://api.ollagraph.com/v1/intel/geoip \
  -H "Authorization: Bearer $OLLAGRAPH_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"ip":"string"}'
POST/v1/intel/geoip/bulk

Intel Geoip Bulk

Bulk IP geolocation — up to 100 IPs per call. Billed N credits per N IPs (handled via check_limits_batch). Wraps the same `geoip.lookup()` used by /v1/intel/geoip — each IP gets the full enrichment (country/region/city/lat-lon/timezone/ASN/ISP/postal).

Body parameters

FieldTypeDescription
ipsstring[]requiredList of IPv4/IPv6 addresses. Max 100 per request.

Example request

curl -X POST https://api.ollagraph.com/v1/intel/geoip/bulk \
  -H "Authorization: Bearer $OLLAGRAPH_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"ips":[]}'
POST/v1/intel/hash-reputation

Intel Hash Reputation

Is this file hash a known malware sample? Lookup against abuse.ch MalwareBazaar. Only the hash is sent upstream — never a file.

Body parameters

FieldTypeDescription
hashstringrequiredmd5 (32), sha1 (40), or sha256 (64) hex hash to look up on MalwareBazaar. Only the hash is sent upstream — never a file.

Example request

curl -X POST https://api.ollagraph.com/v1/intel/hash-reputation \
  -H "Authorization: Bearer $OLLAGRAPH_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"hash":"string"}'
POST/v1/intel/headers

Intel Headers

Fetch a URL and return all response headers plus a security-header grade.

Body parameters

FieldTypeDescription
urlstringrequiredURL to fetch. Must include scheme.

Example request

curl -X POST https://api.ollagraph.com/v1/intel/headers \
  -H "Authorization: Bearer $OLLAGRAPH_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"url":"https://example.com"}'
POST/v1/intel/http-versions

Intel Http Versions

Detect which HTTP versions a URL serves: HTTP/1.1, HTTP/2 (via TLS ALPN), and HTTP/3 (via Alt-Svc advertisement). Also returns the negotiated ALPN protocol, TLS version, cipher, and HSTS posture (max_age + includeSubDomains + preload). h3_advertised reflects the server's Alt-Svc header — we do not actively probe QUIC. h1 + h2 are confirmed at the handshake/HEAD layer. Useful for origin audits ("is my origin H/3-ready?") and CDN posture checks.

Body parameters

FieldTypeDescription
urlstringrequiredAn https:// URL to probe for HTTP/1.1, HTTP/2, and HTTP/3-advertised support.

Example request

curl -X POST https://api.ollagraph.com/v1/intel/http-versions \
  -H "Authorization: Bearer $OLLAGRAPH_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"url":"https://example.com"}'
POST/v1/intel/ip-reputation

Intel Ip Reputation

Classify an IP — datacenter / Tor exit / cloud range. Local DB lookup.

Body parameters

FieldTypeDescription
ipstringrequiredPublic IPv4 or IPv6 address to classify.

Example request

curl -X POST https://api.ollagraph.com/v1/intel/ip-reputation \
  -H "Authorization: Bearer $OLLAGRAPH_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"ip":"string"}'
POST/v1/intel/nameservers

Intel Nameservers

Authoritative nameservers for a domain plus the IPv4/IPv6 each NS resolves to. Includes a `diversified` boolean — false means all NS sit in the same /16 (single-provider, single point of failure).

Body parameters

FieldTypeDescription
domainstringrequiredApex domain. Returns its NS records plus the IPv4/IPv6 each NS resolves to.

Example request

curl -X POST https://api.ollagraph.com/v1/intel/nameservers \
  -H "Authorization: Bearer $OLLAGRAPH_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"domain":"example.com"}'
POST/v1/intel/page

Intel Page

Body parameters

FieldTypeDescription
urlstringrequired

Example request

curl -X POST https://api.ollagraph.com/v1/intel/page \
  -H "Authorization: Bearer $OLLAGRAPH_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"url":"https://example.com"}'
POST/v1/intel/redirects

Intel Redirects

Trace a URL's full redirect chain, hop by hop.

Body parameters

FieldTypeDescription
urlstringrequiredURL whose redirect chain you want to trace.

Example request

curl -X POST https://api.ollagraph.com/v1/intel/redirects \
  -H "Authorization: Bearer $OLLAGRAPH_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"url":"https://example.com"}'
POST/v1/intel/reverse-dns

Intel Reverse Dns

Reverse-DNS (PTR) lookup. IP → hostname. Useful for log enrichment, abuse handling, and 'is this an AWS EC2 IP or a residential ISP?' at a glance.

Body parameters

FieldTypeDescription
ipstringrequiredAn IPv4 or IPv6 address. Returns its PTR hostname if one is configured.

Example request

curl -X POST https://api.ollagraph.com/v1/intel/reverse-dns \
  -H "Authorization: Bearer $OLLAGRAPH_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"ip":"string"}'
POST/v1/intel/robots

Intel Robots

Body parameters

FieldTypeDescription
urlstringrequired
user_agentstringoptional

Example request

curl -X POST https://api.ollagraph.com/v1/intel/robots \
  -H "Authorization: Bearer $OLLAGRAPH_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"url":"https://example.com"}'
POST/v1/intel/security-txt

Intel Security Txt

Probe the target for its RFC 9116 security.txt. Checks /.well-known/security.txt then /security.txt. Returns parsed fields plus a `rfc9116_minimum_compliant` flag (Contact + Expires required).

Body parameters

FieldTypeDescription
urlstringrequiredAny URL on the target — we derive the origin and probe /.well-known/security.txt then /security.txt.

Example request

curl -X POST https://api.ollagraph.com/v1/intel/security-txt \
  -H "Authorization: Bearer $OLLAGRAPH_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"url":"https://example.com"}'
POST/v1/intel/sitemap

Intel Sitemap

Body parameters

FieldTypeDescription
urlstringrequired

Example request

curl -X POST https://api.ollagraph.com/v1/intel/sitemap \
  -H "Authorization: Bearer $OLLAGRAPH_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"url":"https://example.com"}'
POST/v1/intel/social-tags

Intel Social Tags

Fetch a page and return everything a social card / link preview needs: Open Graph, Twitter Card, canonical URL, title, description, icons, language, theme color, robots meta.

Body parameters

FieldTypeDescription
urlstringrequiredPage to fetch. Returns Open Graph + Twitter Card + canonical + title + icons + lang + theme color.

Example request

curl -X POST https://api.ollagraph.com/v1/intel/social-tags \
  -H "Authorization: Bearer $OLLAGRAPH_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"url":"https://example.com"}'
POST/v1/intel/sri-audit

Intel Sri Audit

Subresource Integrity audit. Lists every external <script src> and <link rel=stylesheet|preload> on the page, and reports how many are pinned with an `integrity` attribute. Supply-chain hygiene check — your CDN-hosted JS can be tampered with if you don't pin it.

Body parameters

FieldTypeDescription
urlstringrequiredPage to fetch. Lists external scripts + stylesheets and flags which lack Subresource Integrity (SRI) pinning.

Example request

curl -X POST https://api.ollagraph.com/v1/intel/sri-audit \
  -H "Authorization: Bearer $OLLAGRAPH_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"url":"https://example.com"}'
POST/v1/intel/ssl

Intel Ssl

Body parameters

FieldTypeDescription
domainstringrequired

Example request

curl -X POST https://api.ollagraph.com/v1/intel/ssl \
  -H "Authorization: Bearer $OLLAGRAPH_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"domain":"example.com"}'
POST/v1/intel/subdomain-enumerate

Intel Subdomain Enumerate

Enumerate subdomains for a domain via Certificate Transparency. Public CT logs (crt.sh) — no DNS brute-forcing, no paid feeds. Returns the deduplicated SAN list. Stale entries are possible since we don't resolve; pair with a resolver if you need live-only hostnames.

Body parameters

FieldTypeDescription
domainstringrequiredApex domain to enumerate. We query Certificate Transparency logs (crt.sh) for every cert ever issued under it, then dedupe the SAN list.
max_resultsintegeroptionalHard cap on returned subdomains. Most companies fit under 500; large orgs (google, microsoft) need a higher cap.

Example request

curl -X POST https://api.ollagraph.com/v1/intel/subdomain-enumerate \
  -H "Authorization: Bearer $OLLAGRAPH_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"domain":"example.com"}'
POST/v1/intel/threat

Intel Threat

One indicator (IP / domain / URL / file hash) → a combined verdict from the free threat sources we carry: Feodo C2 + IP reputation (IP), URLhaus (URL/domain), MalwareBazaar (hash). Type is auto-detected. All free-data.

Body parameters

FieldTypeDescription
indicatorstringrequiredA single indicator — IP, domain, URL, or file hash. The type is auto-detected and routed to the relevant free threat sources.

Example request

curl -X POST https://api.ollagraph.com/v1/intel/threat \
  -H "Authorization: Bearer $OLLAGRAPH_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"indicator":"string"}'
POST/v1/intel/uptime

Intel Uptime

Quick is-it-up probe: status, latency, SSL expiry. One HTTP HEAD (or GET fallback).

Body parameters

FieldTypeDescription
urlstringrequiredURL to probe.

Example request

curl -X POST https://api.ollagraph.com/v1/intel/uptime \
  -H "Authorization: Bearer $OLLAGRAPH_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"url":"https://example.com"}'
POST/v1/intel/url-reputation

Intel Url Reputation

Is this URL (or its host) a known phishing / malware URL? Local lookup against the abuse.ch URLhaus feed (CC0). Does NOT fetch the URL — it is matched against the feed only, so there is no SSRF surface.

Body parameters

FieldTypeDescription
urlstringrequiredURL to check against the URLhaus phishing/malware feed. The URL is matched locally — we do NOT fetch it.

Example request

curl -X POST https://api.ollagraph.com/v1/intel/url-reputation \
  -H "Authorization: Bearer $OLLAGRAPH_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"url":"https://example.com"}'
POST/v1/intel/waf

Intel Waf

Detect which WAF/CDN/firewall is in front of a URL. Pattern matches on response headers + (when the origin returns 403/429/503) the challenge-page body. Covers Cloudflare, Akamai, Fastly, AWS WAF, Imperva, Sucuri, F5, ModSecurity, BunnyCDN, StackPath, DDoS-Guard, Wallarm, Varnish, Barracuda.

Body parameters

FieldTypeDescription
urlstringrequiredURL to probe. Detects Cloudflare/Akamai/Fastly/AWS WAF/Imperva/Sucuri/F5/ModSecurity/etc. from headers + body patterns.

Example request

curl -X POST https://api.ollagraph.com/v1/intel/waf \
  -H "Authorization: Bearer $OLLAGRAPH_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"url":"https://example.com"}'
POST/v1/intel/wayback

Intel Wayback

Query the Wayback Machine for a URL's archive history. Returns the first and last snapshots with direct wayback URLs. Free public Wayback CDX API; no auth needed. Useful for OSINT and 'when did this site first appear?'.

Body parameters

FieldTypeDescription
urlstringrequiredURL to look up in the Wayback Machine. Returns the first and last archived snapshot.

Example request

curl -X POST https://api.ollagraph.com/v1/intel/wayback \
  -H "Authorization: Bearer $OLLAGRAPH_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"url":"https://example.com"}'
GET/v1/intel/whoami

Intel Whoami

What does the internet see about you? Pure request-inspection — the caller's public IP, IP family, geoIP, ASN, datacenter/Tor reputation, parsed User-Agent, and a curated echo of the most useful request headers. Aggregator of /v1/intel/geoip + /v1/intel/asn + /v1/intel/ip-reputation + /v1/parse/useragent in one billed call. No outbound network — every lookup is against local databases or the request itself.

Example request

curl https://api.ollagraph.com/v1/intel/whoami
  -H "Authorization: Bearer $OLLAGRAPH_API_KEY"
POST/v1/intel/whois

Intel Whois

Body parameters

FieldTypeDescription
domainstringrequired

Example request

curl -X POST https://api.ollagraph.com/v1/intel/whois \
  -H "Authorization: Bearer $OLLAGRAPH_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"domain":"example.com"}'

Example response

{
  "status": "success",
  "domain": "example.com",
  "registrar": "RESERVED-Internet Assigned Numbers Authority",
  "creation_date": "1995-08-14T04:00:00",
  "expiry_date": "2026-08-13T04:00:00",
  "name_servers": [
    "ELLIOTT.NS.CLOUDFLARE.COM",
    "HERA.NS.CLOUDFLARE.COM"
  ],
  "emails": []
}
POST/v1/verify/email

Email Verify

Body parameters

FieldTypeDescription
emailstringrequired

Example request

curl -X POST https://api.ollagraph.com/v1/verify/email \
  -H "Authorization: Bearer $OLLAGRAPH_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"email":"[email protected]"}'

Actors

Higher-cost provider-routed lookups for hard-to-fetch sources. Use sparingly.

POST/v1/actors/amazon/product

Actor Amazon Product

Body parameters

FieldTypeDescription
asinstringrequired
marketplacestringoptional
proxy_urlstringoptional

Example request

curl -X POST https://api.ollagraph.com/v1/actors/amazon/product \
  -H "Authorization: Bearer $OLLAGRAPH_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"asin":"string"}'
POST/v1/actors/amazon/reviews

Actor Amazon Reviews

Body parameters

FieldTypeDescription
asinstringrequired
marketplacestringoptional
max_pagesintegeroptional

Example request

curl -X POST https://api.ollagraph.com/v1/actors/amazon/reviews \
  -H "Authorization: Bearer $OLLAGRAPH_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"asin":"string"}'
POST/v1/actors/amazon/search

Actor Amazon Search

Body parameters

FieldTypeDescription
querystringrequired
marketplacestringoptional
limitintegeroptional
proxy_urlstringoptional

Example request

curl -X POST https://api.ollagraph.com/v1/actors/amazon/search \
  -H "Authorization: Bearer $OLLAGRAPH_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"query":"string"}'
POST/v1/actors/arxiv/search

Actor Arxiv Search

Body parameters

FieldTypeDescription
querystringoptional
categorystringoptionalarXiv category code, e.g. cs.AI
limitintegeroptional
sortstringoptional

Example request

curl -X POST https://api.ollagraph.com/v1/actors/arxiv/search \
  -H "Authorization: Bearer $OLLAGRAPH_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"query":"string"}'
POST/v1/actors/atlas/case_studies

Actor Atlas Case Studies

Example request

curl -X POST https://api.ollagraph.com/v1/actors/atlas/case_studies \
  -H "Authorization: Bearer $OLLAGRAPH_API_KEY"
POST/v1/actors/atlas/get

Actor Atlas Get

Body parameters

FieldTypeDescription
idstringrequiredAML.* ID

Example request

curl -X POST https://api.ollagraph.com/v1/actors/atlas/get \
  -H "Authorization: Bearer $OLLAGRAPH_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"id":"string"}'
POST/v1/actors/atlas/summary

Actor Atlas Summary

Example request

curl -X POST https://api.ollagraph.com/v1/actors/atlas/summary \
  -H "Authorization: Bearer $OLLAGRAPH_API_KEY"
POST/v1/actors/atlas/tactics

Actor Atlas Tactics

Example request

curl -X POST https://api.ollagraph.com/v1/actors/atlas/tactics \
  -H "Authorization: Bearer $OLLAGRAPH_API_KEY"
POST/v1/actors/atlas/techniques

Actor Atlas Techniques

Body parameters

FieldTypeDescription
tactic_idstringoptionalFilter by tactic ID (e.g. AML.TA0000)

Example request

curl -X POST https://api.ollagraph.com/v1/actors/atlas/techniques \
  -H "Authorization: Bearer $OLLAGRAPH_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"tactic_id":"string"}'
POST/v1/actors/ats

Actor Ats

Fetch a company's open jobs from a specific ATS (greenhouse/lever/...).

Example request

curl -X POST https://api.ollagraph.com/v1/actors/ats \
  -H "Authorization: Bearer $OLLAGRAPH_API_KEY"
POST/v1/actors/ats/detect

Actor Ats Detect

Probe a company across all supported ATS providers in parallel.

Example request

curl -X POST https://api.ollagraph.com/v1/actors/ats/detect \
  -H "Authorization: Bearer $OLLAGRAPH_API_KEY"
GET/v1/actors/ats/supported

Actor Ats Supported

List ATS providers the partner backend can parse (greenhouse, lever, ...).

Example request

curl https://api.ollagraph.com/v1/actors/ats/supported
  -H "Authorization: Bearer $OLLAGRAPH_API_KEY"
POST/v1/actors/doi/resolve

Actor Doi Resolve

Body parameters

FieldTypeDescription
doistringrequiredBare DOI or full URL form

Example request

curl -X POST https://api.ollagraph.com/v1/actors/doi/resolve \
  -H "Authorization: Bearer $OLLAGRAPH_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"doi":"string"}'
POST/v1/actors/europepmc/search

Actor Europepmc Search

Body parameters

FieldTypeDescription
querystringrequired
limitintegeroptional
sourcestringoptional

Example request

curl -X POST https://api.ollagraph.com/v1/actors/europepmc/search \
  -H "Authorization: Bearer $OLLAGRAPH_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"query":"string"}'
POST/v1/actors/github/issues

Actor Github Issues

Body parameters

FieldTypeDescription
ownerstringrequired
repostringrequired
statestringoptional
limitintegeroptional

Example request

curl -X POST https://api.ollagraph.com/v1/actors/github/issues \
  -H "Authorization: Bearer $OLLAGRAPH_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"owner":"string","repo":"string"}'
POST/v1/actors/github/repo

Actor Github Repo

Body parameters

FieldTypeDescription
ownerstringrequired
repostringrequired

Example request

curl -X POST https://api.ollagraph.com/v1/actors/github/repo \
  -H "Authorization: Bearer $OLLAGRAPH_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"owner":"string","repo":"string"}'
POST/v1/actors/github/search

Actor Github Search

Body parameters

FieldTypeDescription
kindstringoptional
querystringrequired
limitintegeroptional

Example request

curl -X POST https://api.ollagraph.com/v1/actors/github/search \
  -H "Authorization: Bearer $OLLAGRAPH_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"query":"string"}'
POST/v1/actors/github/user

Actor Github User

Body parameters

FieldTypeDescription
usernamestringrequired

Example request

curl -X POST https://api.ollagraph.com/v1/actors/github/user \
  -H "Authorization: Bearer $OLLAGRAPH_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"username":"string"}'
POST/v1/actors/gleif/children

Actor Gleif Children

Body parameters

FieldTypeDescription
leistringrequired
limitintegeroptional

Example request

curl -X POST https://api.ollagraph.com/v1/actors/gleif/children \
  -H "Authorization: Bearer $OLLAGRAPH_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"lei":"string"}'
POST/v1/actors/gleif/get

Actor Gleif Get

Body parameters

FieldTypeDescription
leistringrequired20-char LEI

Example request

curl -X POST https://api.ollagraph.com/v1/actors/gleif/get \
  -H "Authorization: Bearer $OLLAGRAPH_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"lei":"string"}'
POST/v1/actors/gleif/parent

Actor Gleif Parent

Body parameters

FieldTypeDescription
leistringrequired
kindstringoptional

Example request

curl -X POST https://api.ollagraph.com/v1/actors/gleif/parent \
  -H "Authorization: Bearer $OLLAGRAPH_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"lei":"string"}'
POST/v1/actors/gleif/search

Actor Gleif Search

Body parameters

FieldTypeDescription
namestringrequired
limitintegeroptional

Example request

curl -X POST https://api.ollagraph.com/v1/actors/gleif/search \
  -H "Authorization: Bearer $OLLAGRAPH_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"name":"string"}'
POST/v1/actors/gmaps/place

Actor Gmaps Place

Body parameters

FieldTypeDescription
place_urlstringoptional
cidstringoptional
namestringoptional
locationstringoptional

Example request

curl -X POST https://api.ollagraph.com/v1/actors/gmaps/place \
  -H "Authorization: Bearer $OLLAGRAPH_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"place_url":"https://example.com"}'
POST/v1/actors/gmaps/reviews

Actor Gmaps Reviews

Body parameters

FieldTypeDescription
place_urlstringoptional
cidstringoptional
max_pagesintegeroptional

Example request

curl -X POST https://api.ollagraph.com/v1/actors/gmaps/reviews \
  -H "Authorization: Bearer $OLLAGRAPH_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"place_url":"https://example.com"}'
POST/v1/actors/gmaps/search

Actor Gmaps Search

Body parameters

FieldTypeDescription
querystringrequired
locationstringoptional
limitintegeroptional

Example request

curl -X POST https://api.ollagraph.com/v1/actors/gmaps/search \
  -H "Authorization: Bearer $OLLAGRAPH_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"query":"string"}'
POST/v1/actors/hackernews/item

Actor Hackernews Item

Body parameters

FieldTypeDescription
idintegerrequired

Example request

curl -X POST https://api.ollagraph.com/v1/actors/hackernews/item \
  -H "Authorization: Bearer $OLLAGRAPH_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"id":0}'
POST/v1/actors/hackernews/search

Actor Hackernews Search

Body parameters

FieldTypeDescription
querystringrequired
tagsstringoptional
limitintegeroptional

Example request

curl -X POST https://api.ollagraph.com/v1/actors/hackernews/search \
  -H "Authorization: Bearer $OLLAGRAPH_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"query":"string"}'
POST/v1/actors/hackernews/top

Actor Hackernews Top

Body parameters

FieldTypeDescription
kindstringoptional
limitintegeroptional

Example request

curl -X POST https://api.ollagraph.com/v1/actors/hackernews/top \
  -H "Authorization: Bearer $OLLAGRAPH_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"kind":"top"}'
POST/v1/actors/hackernews/user

Actor Hackernews User

Body parameters

FieldTypeDescription
usernamestringrequired

Example request

curl -X POST https://api.ollagraph.com/v1/actors/hackernews/user \
  -H "Authorization: Bearer $OLLAGRAPH_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"username":"string"}'
POST/v1/actors/huggingface/dataset

Actor Huggingface Dataset

Body parameters

FieldTypeDescription
idstringrequired

Example request

curl -X POST https://api.ollagraph.com/v1/actors/huggingface/dataset \
  -H "Authorization: Bearer $OLLAGRAPH_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"id":"string"}'
POST/v1/actors/huggingface/datasets

Actor Huggingface Datasets

Body parameters

FieldTypeDescription
querystringoptionalFree-text search
sortstringoptional
filterstringoptionalTag filter (e.g. text-classification)
limitintegeroptional

Example request

curl -X POST https://api.ollagraph.com/v1/actors/huggingface/datasets \
  -H "Authorization: Bearer $OLLAGRAPH_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"query":"string"}'
POST/v1/actors/huggingface/model

Actor Huggingface Model

Body parameters

FieldTypeDescription
idstringrequiredOrg-prefixed or bare; redirects resolved server-side

Example request

curl -X POST https://api.ollagraph.com/v1/actors/huggingface/model \
  -H "Authorization: Bearer $OLLAGRAPH_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"id":"string"}'
POST/v1/actors/huggingface/models

Actor Huggingface Models

Body parameters

FieldTypeDescription
querystringoptionalFree-text search
sortstringoptional
filterstringoptionalTag filter (e.g. text-classification)
limitintegeroptional

Example request

curl -X POST https://api.ollagraph.com/v1/actors/huggingface/models \
  -H "Authorization: Bearer $OLLAGRAPH_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"query":"string"}'
POST/v1/actors/huggingface/space

Actor Huggingface Space

Body parameters

FieldTypeDescription
idstringrequired

Example request

curl -X POST https://api.ollagraph.com/v1/actors/huggingface/space \
  -H "Authorization: Bearer $OLLAGRAPH_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"id":"string"}'
POST/v1/actors/huggingface/spaces

Actor Huggingface Spaces

Body parameters

FieldTypeDescription
querystringoptionalFree-text search
sortstringoptional
filterstringoptionalTag filter (e.g. text-classification)
limitintegeroptional

Example request

curl -X POST https://api.ollagraph.com/v1/actors/huggingface/spaces \
  -H "Authorization: Bearer $OLLAGRAPH_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"query":"string"}'
POST/v1/actors/jobs/adzuna

Actor Jobs Adzuna

Adzuna aggregator across 17 countries. Body params: country (str) — lowercase ISO 3166-1 alpha-2, default 'gb' (gb/us/ca/au/de/fr/nl/pl/at/ch/it/es/br/in/mx/za/sg) what (str) where (str) results_per_page (int 1-50) — default 25 Requires env: ADZUNA_APP_ID, ADZUNA_APP_KEY.

Example request

curl -X POST https://api.ollagraph.com/v1/actors/jobs/adzuna \
  -H "Authorization: Bearer $OLLAGRAPH_API_KEY"
POST/v1/actors/jobs/jobbank

Actor Jobs Jobbank

Canadian government job listings via jobbank.gc.ca RSS. Body params: searchstring (str) locationstring (str) limit (int 1-100) — default 25 No auth required (public RSS feed).

Example request

curl -X POST https://api.ollagraph.com/v1/actors/jobs/jobbank \
  -H "Authorization: Bearer $OLLAGRAPH_API_KEY"
POST/v1/actors/jobs/reed

Actor Jobs Reed

UK jobs via Reed.co.uk. Body params: keywords (str) locationName (str) distanceFromLocation (int) — miles, default 10 resultsToTake (int 1-100) — default 25 Requires env: REED_API_KEY.

Example request

curl -X POST https://api.ollagraph.com/v1/actors/jobs/reed \
  -H "Authorization: Bearer $OLLAGRAPH_API_KEY"
POST/v1/actors/jobs/scrape

Actor Jobs Scrape

Scrape job listings across one or more sites.

Example request

curl -X POST https://api.ollagraph.com/v1/actors/jobs/scrape \
  -H "Authorization: Bearer $OLLAGRAPH_API_KEY"
GET/v1/actors/jobs/sites

Actor Jobs Sites

List supported job-board sites (indeed, linkedin, glassdoor, ...).

Example request

curl https://api.ollagraph.com/v1/actors/jobs/sites
  -H "Authorization: Bearer $OLLAGRAPH_API_KEY"
GET/v1/actors/jobs/sources

Actor Jobs Sources

List the 4 direct job-source integrations and which are env-configured. Free (metadata). Each entry shows id, country, configured flag, and the env vars required to enable it. Adzuna additionally lists its 17 supported country codes.

Example request

curl https://api.ollagraph.com/v1/actors/jobs/sources
  -H "Authorization: Bearer $OLLAGRAPH_API_KEY"
POST/v1/actors/jobs/usajobs

Actor Jobs Usajobs

US federal jobs via data.usajobs.gov. Body params: Keyword (str) — search term LocationName (str) — e.g. "Washington, DC" ResultsPerPage (int 1-500) — default 25 Requires env: USAJOBS_USER_AGENT (email), USAJOBS_API_KEY.

Example request

curl -X POST https://api.ollagraph.com/v1/actors/jobs/usajobs \
  -H "Authorization: Bearer $OLLAGRAPH_API_KEY"
POST/v1/actors/linkedin/company

Actor Linkedin Company

Authorized use only — respect LinkedIn's Terms of Service. Returns public profile/company data; supply your own li_at session cookie where required.

Body parameters

FieldTypeDescription
slugstringoptionale.g. 'microsoft'
company_urlstringoptional
li_atstringoptional
proxy_urlstringoptional

Example request

curl -X POST https://api.ollagraph.com/v1/actors/linkedin/company \
  -H "Authorization: Bearer $OLLAGRAPH_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"slug":"string"}'
POST/v1/actors/linkedin/profile

Actor Linkedin Profile

Authorized use only — respect LinkedIn's Terms of Service. Returns public profile/company data; supply your own li_at session cookie where required.

Body parameters

FieldTypeDescription
public_idstringoptionale.g. 'satyanadella'
profile_urlstringoptionalFull LinkedIn URL
li_atstringoptionalOptional if server pool configured
proxy_urlstringoptional

Example request

curl -X POST https://api.ollagraph.com/v1/actors/linkedin/profile \
  -H "Authorization: Bearer $OLLAGRAPH_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"public_id":"string"}'
POST/v1/actors/npm/downloads

Actor Npm Downloads

Body parameters

FieldTypeDescription
namestringrequired
periodstringoptional

Example request

curl -X POST https://api.ollagraph.com/v1/actors/npm/downloads \
  -H "Authorization: Bearer $OLLAGRAPH_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"name":"string"}'
POST/v1/actors/npm/package

Actor Npm Package

Body parameters

FieldTypeDescription
namestringrequiredBare or scoped (@org/pkg)

Example request

curl -X POST https://api.ollagraph.com/v1/actors/npm/package \
  -H "Authorization: Bearer $OLLAGRAPH_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"name":"string"}'
POST/v1/actors/npm/search

Actor Npm Search

Body parameters

FieldTypeDescription
querystringrequired
limitintegeroptional

Example request

curl -X POST https://api.ollagraph.com/v1/actors/npm/search \
  -H "Authorization: Bearer $OLLAGRAPH_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"query":"string"}'
POST/v1/actors/nvd/cve

Actor Nvd Cve

Body parameters

FieldTypeDescription
cve_idstringrequired

Example request

curl -X POST https://api.ollagraph.com/v1/actors/nvd/cve \
  -H "Authorization: Bearer $OLLAGRAPH_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"cve_id":"string"}'
POST/v1/actors/nvd/search

Actor Nvd Search

Body parameters

FieldTypeDescription
keywordstringoptional
cpestringoptionalCPE name string
days_backintegeroptionalDays back from now
limitintegeroptional

Example request

curl -X POST https://api.ollagraph.com/v1/actors/nvd/search \
  -H "Authorization: Bearer $OLLAGRAPH_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"keyword":"string"}'
POST/v1/actors/openalex/author

Actor Openalex Author

Body parameters

FieldTypeDescription
idstringrequired

Example request

curl -X POST https://api.ollagraph.com/v1/actors/openalex/author \
  -H "Authorization: Bearer $OLLAGRAPH_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"id":"string"}'
POST/v1/actors/openalex/authors

Actor Openalex Authors

Body parameters

FieldTypeDescription
querystringrequired
limitintegeroptional

Example request

curl -X POST https://api.ollagraph.com/v1/actors/openalex/authors \
  -H "Authorization: Bearer $OLLAGRAPH_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"query":"string"}'
POST/v1/actors/openalex/work

Actor Openalex Work

Body parameters

FieldTypeDescription
idstringrequired

Example request

curl -X POST https://api.ollagraph.com/v1/actors/openalex/work \
  -H "Authorization: Bearer $OLLAGRAPH_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"id":"string"}'
POST/v1/actors/openalex/works

Actor Openalex Works

Body parameters

FieldTypeDescription
querystringrequired
limitintegeroptional
year_fromintegeroptional
year_tointegeroptional

Example request

curl -X POST https://api.ollagraph.com/v1/actors/openalex/works \
  -H "Authorization: Bearer $OLLAGRAPH_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"query":"string"}'
POST/v1/actors/orcid/record

Actor Orcid Record

Body parameters

FieldTypeDescription
orcidstringrequired

Example request

curl -X POST https://api.ollagraph.com/v1/actors/orcid/record \
  -H "Authorization: Bearer $OLLAGRAPH_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"orcid":"string"}'
POST/v1/actors/orcid/works

Actor Orcid Works

Body parameters

FieldTypeDescription
orcidstringrequired
limitintegeroptional

Example request

curl -X POST https://api.ollagraph.com/v1/actors/orcid/works \
  -H "Authorization: Bearer $OLLAGRAPH_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"orcid":"string"}'
POST/v1/actors/producthunt/daily

Actor Producthunt Daily

Today's ProductHunt frontpage launches.

Example request

curl -X POST https://api.ollagraph.com/v1/actors/producthunt/daily \
  -H "Authorization: Bearer $OLLAGRAPH_API_KEY"
POST/v1/actors/producthunt/product

Actor Producthunt Product

Detail page for a single ProductHunt product (by slug or url).

Example request

curl -X POST https://api.ollagraph.com/v1/actors/producthunt/product \
  -H "Authorization: Bearer $OLLAGRAPH_API_KEY"
POST/v1/actors/pypi/package

Actor Pypi Package

Body parameters

FieldTypeDescription
namestringrequired
versionstringoptionalOptional specific version

Example request

curl -X POST https://api.ollagraph.com/v1/actors/pypi/package \
  -H "Authorization: Bearer $OLLAGRAPH_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"name":"string"}'
POST/v1/actors/pypi/release

Actor Pypi Release

Body parameters

FieldTypeDescription
namestringrequired
versionstringrequired

Example request

curl -X POST https://api.ollagraph.com/v1/actors/pypi/release \
  -H "Authorization: Bearer $OLLAGRAPH_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"name":"string","version":"string"}'
POST/v1/actors/ror/get

Actor Ror Get

Body parameters

FieldTypeDescription
idstringrequiredBare ROR ID (e.g. 00f54p054) or full URL

Example request

curl -X POST https://api.ollagraph.com/v1/actors/ror/get \
  -H "Authorization: Bearer $OLLAGRAPH_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"id":"string"}'
POST/v1/actors/ror/search

Actor Ror Search

Body parameters

FieldTypeDescription
querystringrequired
limitintegeroptional

Example request

curl -X POST https://api.ollagraph.com/v1/actors/ror/search \
  -H "Authorization: Bearer $OLLAGRAPH_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"query":"string"}'
POST/v1/actors/scholar/author

Actor Scholar Author

Author profile from Google Scholar (publications, citations, h-index).

Example request

curl -X POST https://api.ollagraph.com/v1/actors/scholar/author \
  -H "Authorization: Bearer $OLLAGRAPH_API_KEY"
POST/v1/actors/scholar/publication

Actor Scholar Publication

Single publication detail from Google Scholar.

Example request

curl -X POST https://api.ollagraph.com/v1/actors/scholar/publication \
  -H "Authorization: Bearer $OLLAGRAPH_API_KEY"
POST/v1/actors/scholar/search

Actor Scholar Search

Google Scholar search results for a query.

Example request

curl -X POST https://api.ollagraph.com/v1/actors/scholar/search \
  -H "Authorization: Bearer $OLLAGRAPH_API_KEY"
POST/v1/actors/sec/facts

Actor Sec Facts

Body parameters

FieldTypeDescription
cikstringoptional
tickerstringoptional

Example request

curl -X POST https://api.ollagraph.com/v1/actors/sec/facts \
  -H "Authorization: Bearer $OLLAGRAPH_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"cik":"string"}'
POST/v1/actors/sec/filings

Actor Sec Filings

Body parameters

FieldTypeDescription
cikstringoptionalCIK (zero-padded or numeric)
tickerstringoptional
typestringoptionalForm type filter, e.g. 10-K, 10-Q, 8-K
limitintegeroptional

Example request

curl -X POST https://api.ollagraph.com/v1/actors/sec/filings \
  -H "Authorization: Bearer $OLLAGRAPH_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"cik":"string"}'
POST/v1/actors/sec/lookup_ticker

Actor Sec Lookup Ticker

Body parameters

FieldTypeDescription
tickerstringrequirede.g. AAPL

Example request

curl -X POST https://api.ollagraph.com/v1/actors/sec/lookup_ticker \
  -H "Authorization: Bearer $OLLAGRAPH_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"ticker":"string"}'
POST/v1/actors/stackexchange/questions

Actor Stackexchange Questions

Body parameters

FieldTypeDescription
sitestringoptional
sortstringoptional
limitintegeroptional

Example request

curl -X POST https://api.ollagraph.com/v1/actors/stackexchange/questions \
  -H "Authorization: Bearer $OLLAGRAPH_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"site":"stackoverflow"}'
POST/v1/actors/stackexchange/search

Actor Stackexchange Search

Body parameters

FieldTypeDescription
intitlestringrequired
sitestringoptional
limitintegeroptional

Example request

curl -X POST https://api.ollagraph.com/v1/actors/stackexchange/search \
  -H "Authorization: Bearer $OLLAGRAPH_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"intitle":"string"}'
POST/v1/actors/stackexchange/sites

Actor Stackexchange Sites

Example request

curl -X POST https://api.ollagraph.com/v1/actors/stackexchange/sites \
  -H "Authorization: Bearer $OLLAGRAPH_API_KEY"
POST/v1/actors/stackexchange/user

Actor Stackexchange User

Body parameters

FieldTypeDescription
user_idintegerrequired
sitestringoptional

Example request

curl -X POST https://api.ollagraph.com/v1/actors/stackexchange/user \
  -H "Authorization: Bearer $OLLAGRAPH_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"user_id":0}'
POST/v1/actors/yelp/business

Actor Yelp Business

Body parameters

FieldTypeDescription
biz_pathstringoptionalYelp slug, e.g. blue-bottle-coffee-san-francisco-9
biz_urlstringoptionalAlternative to biz_path; full Yelp URL
proxy_urlstringoptional

Example request

curl -X POST https://api.ollagraph.com/v1/actors/yelp/business \
  -H "Authorization: Bearer $OLLAGRAPH_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"biz_path":"string"}'
POST/v1/actors/yelp/business/async

Actor Yelp Business Async

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).

Body parameters

FieldTypeDescription
biz_pathstringoptionalYelp slug, e.g. blue-bottle-coffee-san-francisco-9
biz_urlstringoptionalAlternative to biz_path; full Yelp URL
proxy_urlstringoptional
webhook_urlstringoptionalOptional callback URL; the signed result is POSTed here on completion.

Example request

curl -X POST https://api.ollagraph.com/v1/actors/yelp/business/async \
  -H "Authorization: Bearer $OLLAGRAPH_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"biz_path":"string"}'
POST/v1/actors/yelp/reviews

Actor Yelp Reviews

Body parameters

FieldTypeDescription
biz_pathstringoptional
biz_urlstringoptional
max_pagesintegeroptional

Example request

curl -X POST https://api.ollagraph.com/v1/actors/yelp/reviews \
  -H "Authorization: Bearer $OLLAGRAPH_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"biz_path":"string"}'
POST/v1/actors/yelp/reviews/async

Actor Yelp Reviews Async

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).

Body parameters

FieldTypeDescription
biz_pathstringoptional
biz_urlstringoptional
max_pagesintegeroptional
webhook_urlstringoptionalOptional callback URL; the signed result is POSTed here on completion.

Example request

curl -X POST https://api.ollagraph.com/v1/actors/yelp/reviews/async \
  -H "Authorization: Bearer $OLLAGRAPH_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"biz_path":"string"}'
POST/v1/actors/yelp/search

Actor Yelp Search

Body parameters

FieldTypeDescription
querystringrequired
locationstringrequired
limitintegeroptional
proxy_urlstringoptional

Example request

curl -X POST https://api.ollagraph.com/v1/actors/yelp/search \
  -H "Authorization: Bearer $OLLAGRAPH_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"query":"string","location":"string"}'
POST/v1/actors/yelp/search/async

Actor Yelp Search Async

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).

Body parameters

FieldTypeDescription
querystringrequired
locationstringrequired
limitintegeroptional
proxy_urlstringoptional
webhook_urlstringoptionalOptional callback URL; the signed result is POSTed here on completion.

Example request

curl -X POST https://api.ollagraph.com/v1/actors/yelp/search/async \
  -H "Authorization: Bearer $OLLAGRAPH_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"query":"string","location":"string"}'
POST/v1/actors/youtube/channel

Actor Youtube Channel

Body parameters

FieldTypeDescription
handlestringoptionalHandle with or without @
urlstringoptional

Example request

curl -X POST https://api.ollagraph.com/v1/actors/youtube/channel \
  -H "Authorization: Bearer $OLLAGRAPH_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"handle":"string"}'
POST/v1/actors/youtube/search

Actor Youtube Search

Body parameters

FieldTypeDescription
querystringrequired
limitintegeroptional
countrystringoptional
languagestringoptional

Example request

curl -X POST https://api.ollagraph.com/v1/actors/youtube/search \
  -H "Authorization: Bearer $OLLAGRAPH_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"query":"string"}'
POST/v1/actors/youtube/video

Actor Youtube Video

Body parameters

FieldTypeDescription
urlstringoptionalFull YouTube/youtu.be/shorts/embed URL
idstringoptionalBare 11-char video ID

Example request

curl -X POST https://api.ollagraph.com/v1/actors/youtube/video \
  -H "Authorization: Bearer $OLLAGRAPH_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"url":"https://example.com"}'
POST/v1/actors/zenodo/record

Actor Zenodo Record

Body parameters

FieldTypeDescription
idstringrequired

Example request

curl -X POST https://api.ollagraph.com/v1/actors/zenodo/record \
  -H "Authorization: Bearer $OLLAGRAPH_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"id":"string"}'
POST/v1/actors/zenodo/search

Actor Zenodo Search

Body parameters

FieldTypeDescription
querystringrequired
typestringoptional
limitintegeroptional
sortstringoptional

Example request

curl -X POST https://api.ollagraph.com/v1/actors/zenodo/search \
  -H "Authorization: Bearer $OLLAGRAPH_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"query":"string"}'
POST/v1/render

Render

Render a URL through our managed browser engine and return HTML + metadata.

Example request

curl -X POST https://api.ollagraph.com/v1/render \
  -H "Authorization: Bearer $OLLAGRAPH_API_KEY"
POST/v1/script

Script

Run a multi-step browser script (click/wait/extract) against a URL.

Example request

curl -X POST https://api.ollagraph.com/v1/script \
  -H "Authorization: Bearer $OLLAGRAPH_API_KEY"
POST/v1/session

Session Create

Open a persistent browser session. Free — billing happens on render/script.

Example request

curl -X POST https://api.ollagraph.com/v1/session \
  -H "Authorization: Bearer $OLLAGRAPH_API_KEY"
GET/v1/session/{session_id}

Session Get

Inspect a session's state (engine, age, idle_seconds, last_url).

Example request

curl https://api.ollagraph.com/v1/session/{session_id}
  -H "Authorization: Bearer $OLLAGRAPH_API_KEY"
DELETE/v1/session/{session_id}

Session Delete

Close a session and free its browser context.

Example request

curl -X DELETE https://api.ollagraph.com/v1/session/{session_id} \
  -H "Authorization: Bearer $OLLAGRAPH_API_KEY"
POST/v1/session/{session_id}/render

Session Render

Render a URL inside an existing session (keeps cookies/storage).

Example request

curl -X POST https://api.ollagraph.com/v1/session/{session_id}/render \
  -H "Authorization: Bearer $OLLAGRAPH_API_KEY"
POST/v1/session/{session_id}/script

Session Script

Run a script inside an existing session.

Example request

curl -X POST https://api.ollagraph.com/v1/session/{session_id}/script \
  -H "Authorization: Bearer $OLLAGRAPH_API_KEY"
POST/v1/stagehand

Stagehand Create

Open a Stagehand (LLM-driven) browser session. **Free** — billing happens on goto/act/observe/extract/screenshot (1 credit each). Returns `stagehand_session_id`, `llm_provider`, `model_name`, `expires_at`. All body fields optional; defaults to a managed model (no key required). BYO keys are held in memory for the session only.

Body parameters

FieldTypeDescription
engine"chromium"optionalBrowser engine for the session (Chromium).
llm_providerstringoptionalLLM provider for natural-language actions. Defaults to a managed provider (no key required).
model_namestringoptionalModel id to use. Defaults to a managed model.
llm_api_keystringoptionalBring-your-own provider key. Held in memory for the session only — never logged or persisted.
llm_base_urlstringoptionalOpenAI-compatible base URL for a custom provider.
idle_ttl_secondsintegeroptionalIdle timeout (seconds) before the session is reaped.

Example request

curl -X POST https://api.ollagraph.com/v1/stagehand \
  -H "Authorization: Bearer $OLLAGRAPH_API_KEY"
DELETE/v1/stagehand/{session_id}

Stagehand Delete

Close the Stagehand session. Free.

Example request

curl -X DELETE https://api.ollagraph.com/v1/stagehand/{session_id} \
  -H "Authorization: Bearer $OLLAGRAPH_API_KEY"
POST/v1/stagehand/{session_id}/act

Stagehand Act

Perform a natural-language action (1 credit). Field is **`instruction`** (not `action`). Returns `{ok, success, message (selector used), url_after}`. LLM-backed (~1–2s).

Body parameters

FieldTypeDescription
instructionstringrequiredPlain-English action. The model resolves it to a precise element selector + action (click/type/select/scroll).

Example request

curl -X POST https://api.ollagraph.com/v1/stagehand/{session_id}/act \
  -H "Authorization: Bearer $OLLAGRAPH_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"instruction":"click the more information link"}'
POST/v1/stagehand/{session_id}/extract

Stagehand Extract

Structured extraction from the current page (1 credit). Pass an optional JSON Schema in `schema` to coerce the output; omit for free-form extraction.

Body parameters

FieldTypeDescription
instructionstringrequiredWhat to extract, in plain English.
schemaobjectoptionalOptional JSON Schema; when present the result is coerced/validated against it.

Example request

curl -X POST https://api.ollagraph.com/v1/stagehand/{session_id}/extract \
  -H "Authorization: Bearer $OLLAGRAPH_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"instruction":"extract the page title and the first paragraph"}'
POST/v1/stagehand/{session_id}/goto

Stagehand Goto

Navigate the session to a URL (1 credit). Returns `{ok, url, title}`.

Body parameters

FieldTypeDescription
urlstring (uri)requiredAbsolute URL to navigate the session to.

Example request

curl -X POST https://api.ollagraph.com/v1/stagehand/{session_id}/goto \
  -H "Authorization: Bearer $OLLAGRAPH_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"url":"https://example.com"}'
POST/v1/stagehand/{session_id}/keepalive

Stagehand Keepalive

Reset the session idle timer. Free.

Example request

curl -X POST https://api.ollagraph.com/v1/stagehand/{session_id}/keepalive \
  -H "Authorization: Bearer $OLLAGRAPH_API_KEY"
POST/v1/stagehand/{session_id}/observe

Stagehand Observe

List candidate actions on the current page (1 credit). Returns `{ok, candidates:[{description, method, selector}]}`.

Body parameters

FieldTypeDescription
instructionstringoptionalOptional hint to focus candidate discovery; omit to list all actionable elements.

Example request

curl -X POST https://api.ollagraph.com/v1/stagehand/{session_id}/observe \
  -H "Authorization: Bearer $OLLAGRAPH_API_KEY"
POST/v1/stagehand/{session_id}/screenshot

Stagehand Screenshot

Screenshot the current page (1 credit). Returns base64-in-JSON `{ok, screenshot_b64, size_bytes, url}`; `full_page` captures the full scrollable page.

Body parameters

FieldTypeDescription
full_pagebooleanoptionalCapture the full scrollable page instead of just the viewport.

Example request

curl -X POST https://api.ollagraph.com/v1/stagehand/{session_id}/screenshot \
  -H "Authorization: Bearer $OLLAGRAPH_API_KEY"

Parsing

URL, user-agent, and email parsers. Cheap, structured, no fetch.

POST/v1/parse/email

Parse Email

Body parameters

FieldTypeDescription
emailstringrequired

Example request

curl -X POST https://api.ollagraph.com/v1/parse/email \
  -H "Authorization: Bearer $OLLAGRAPH_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"email":"[email protected]"}'
POST/v1/parse/url

Parse Url

Body parameters

FieldTypeDescription
urlstringrequired

Example request

curl -X POST https://api.ollagraph.com/v1/parse/url \
  -H "Authorization: Bearer $OLLAGRAPH_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"url":"https://example.com"}'

Example response

{
  "status": "success",
  "url": "https://example.com/docs?q=1#frag",
  "scheme": "https",
  "host": "example.com",
  "port": null,
  "path": "/docs",
  "query": "q=1",
  "query_params": [
    {
      "key": "q",
      "value": "1"
    }
  ],
  "fragment": "frag",
  "subdomain": null,
  "registered_domain": "example.com",
  "public_suffix": "com",
  "is_ip_host": false
}
POST/v1/parse/useragent

Parse Useragent

Body parameters

FieldTypeDescription
user_agentstringrequired

Example request

curl -X POST https://api.ollagraph.com/v1/parse/useragent \
  -H "Authorization: Bearer $OLLAGRAPH_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"user_agent":"string"}'

Captcha

reCAPTCHA v2/v3 solving + auto-solve flow for sites behind a challenge.

POST/v1/captcha/auto

Captcha Auto

Body parameters

FieldTypeDescription
urlstringrequired
actionstringoptional
proxystringoptional

Example request

curl -X POST https://api.ollagraph.com/v1/captcha/auto \
  -H "Authorization: Bearer $OLLAGRAPH_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"url":"https://example.com"}'
POST/v1/captcha/solve

Captcha Solve

Body parameters

FieldTypeDescription
site_keystringrequired
site_urlstringrequired
actionstringoptional
proxystringoptional

Example request

curl -X POST https://api.ollagraph.com/v1/captcha/solve \
  -H "Authorization: Bearer $OLLAGRAPH_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"site_key":"string","site_url":"https://example.com"}'

Jobs

Poll long-running scrape/crawl jobs by id.

GET/v1/jobs/{job_id}

Get Job Status

Example request

curl https://api.ollagraph.com/v1/jobs/{job_id}
  -H "Authorization: Bearer $OLLAGRAPH_API_KEY"

Account

Your user record, usage, current credit balance.

GET/v1/keys

List My Keys

List the user's API keys (prefixes only - raw keys are never recoverable).

Example request

curl https://api.ollagraph.com/v1/keys
  -H "Authorization: Bearer $OLLAGRAPH_API_KEY"
POST/v1/keys

Create My Key

Mint a new API key. The raw key is returned ONCE; we only store the hash. If org_id is supplied (team-org keys), caller must already be a member of that org — we 403 otherwise. The new key inherits its billing context from the org.

Body parameters

FieldTypeDescription
labelstringoptional
project_tagstringoptionalOptional 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_idintegeroptionalOrg 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_creditsintegeroptionalPer-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_stringbooleanoptionalWhen 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.

Example request

curl -X POST https://api.ollagraph.com/v1/keys \
  -H "Authorization: Bearer $OLLAGRAPH_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"label":"user-created"}'
PATCH/v1/keys/{key_id}

Update My Key

Update an existing key's label, project_tag, or daily_cap_credits. project_tag="" clears the tag; daily_cap_credits=0 removes the cap. Only the owning user can update.

Body parameters

FieldTypeDescription
labelstringoptional
project_tagstringoptionalNew project tag (or empty string to clear).
daily_cap_creditsintegeroptionalNew daily cap in credits. Pass 0 to remove the cap.
redact_query_stringbooleanoptionalToggle per-key query-string redaction in the usage log. Omit to leave unchanged.

Example request

curl -X PATCH https://api.ollagraph.com/v1/keys/{key_id} \
  -H "Authorization: Bearer $OLLAGRAPH_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"label":"string"}'
DELETE/v1/keys/{key_id}

Delete My Key

Revoke an API key. Existing in-flight requests using it still complete; new requests with the revoked key get 401.

Example request

curl -X DELETE https://api.ollagraph.com/v1/keys/{key_id} \
  -H "Authorization: Bearer $OLLAGRAPH_API_KEY"
POST/v1/keys/{key_id}/rotate

Rotate My Key

Rotate an API key: mint a replacement that inherits the old key's label, project tag, org, and daily cap, then revoke the old key. The new raw key is returned ONCE. In-flight requests on the old key complete; new requests with the old key get 401. This is the self-service path for a leaked or lost key (previously the only option was delete + recreate).

Example request

curl -X POST https://api.ollagraph.com/v1/keys/{key_id}/rotate \
  -H "Authorization: Bearer $OLLAGRAPH_API_KEY"
GET/v1/me

Get Me

Example request

curl https://api.ollagraph.com/v1/me
  -H "Authorization: Bearer $OLLAGRAPH_API_KEY"
POST/v1/me/cost-estimate

Cost Estimate

Return what the next call to `endpoint` would cost this user. No execution, no charge, no rate-limit consumption. Reads the same `ENDPOINT_CREDIT_COST` map the actual billing path uses, applies the optional residential-proxy surcharge, and honours BYPASS_PLANS (internal / superadmin → 0). Customers price-check before they commit.

Body parameters

FieldTypeDescription
endpointstringrequiredAPI path, e.g. '/v1/scrape'.
use_residential_proxybooleanoptionalAdds the +3-credit residential-proxy surcharge applied to the AEO/SEO endpoints when the customer opts into the residential proxy.

Example request

curl -X POST https://api.ollagraph.com/v1/me/cost-estimate \
  -H "Authorization: Bearer $OLLAGRAPH_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"endpoint":"string"}'
GET/v1/me/credits

Get My Credits

Current credit balance + paginated credit ledger.

Example request

curl https://api.ollagraph.com/v1/me/credits
  -H "Authorization: Bearer $OLLAGRAPH_API_KEY"
POST/v1/me/delete

Delete My Account

Permanently delete the signed-in account and all associated data (API keys, usage log, credit ledger, OTel forwarders, personal org). Irreversible. GDPR/CCPA right-to-erasure. Confirmation: send `password` (password accounts) or `confirm_email` (OAuth-only accounts). If you OWN a team org that still has other members, deletion is refused (409) until you transfer ownership (`POST /v1/orgs/{id}/transfer`) or remove the members. An active subscription is cancelled at the next billing date before deletion. No scraped content is ever stored on our side, and invoices live with the payment provider — so this removes your complete footprint here.

Body parameters

FieldTypeDescription
passwordstringoptionalYour account password. Required unless this is an OAuth-only account.
confirm_emailstringoptionalYour account email, typed to confirm. Used when the account has no password (Google sign-in).

Example request

curl -X POST https://api.ollagraph.com/v1/me/delete \
  -H "Authorization: Bearer $OLLAGRAPH_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"password":"string"}'
GET/v1/me/export

Export My Data

Machine-readable export of all personal data we hold for the signed-in account (GDPR Art. 20 portability). Returns a single JSON document as a download: profile, credit ledger, usage log (capped — see `usage.note`), API-key METADATA (the key secret is never recoverable, so it is never included), OTel forwarders (auth values masked), and org memberships. No scraped content is stored on our side, so none appears here — the only URLs present are your own requested URLs from your usage log.

Example request

curl https://api.ollagraph.com/v1/me/export
  -H "Authorization: Bearer $OLLAGRAPH_API_KEY"
GET/v1/me/forwarders

Get My Forwarders

List the customer's configured OTel forwarders. Auth values are returned masked (last 4 chars + asterisks); plaintext is never exposed.

Example request

curl https://api.ollagraph.com/v1/me/forwarders
  -H "Authorization: Bearer $OLLAGRAPH_API_KEY"
POST/v1/me/forwarders

Create My Forwarder

Add a new OTel destination. Auth value is encrypted at rest. Kicks an immediate background refresh of the FanoutSpanProcessor's forwarder cache so spans start fanning out to the new destination within a few milliseconds rather than waiting for the next 30 s periodic tick.

Body parameters

FieldTypeDescription
vendorstringrequiredOne of: betterstack, logfire, honeycomb, axiom, grafana_cloud, datadog, newrelic, otlp
endpoint_urlstringrequiredFull OTLP HTTP endpoint URL, e.g. https://in.logs.betterstack.com
auth_header_namestringoptionalHTTP header name to set (e.g. 'Authorization' or 'DD-API-KEY')
auth_header_valuestringoptionalHTTP header value. Stored encrypted at rest. Never returned via the API.
data_typesstring[]optionalSubset of ['traces','metrics','logs']. Defaults to ['traces'].

Example request

curl -X POST https://api.ollagraph.com/v1/me/forwarders \
  -H "Authorization: Bearer $OLLAGRAPH_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"vendor":"string","endpoint_url":"https://example.com"}'
DELETE/v1/me/forwarders/{forwarder_id}

Delete My Forwarder

Remove a forwarder. Kicks an immediate background refresh so the deleted destination stops receiving spans within a few milliseconds — no privacy concern of continuing to forward to an endpoint the customer just removed. Spans already buffered inside the soon-to-be-shut-down BatchSpanProcessor still flush; spans created after the refresh completes do not.

Example request

curl -X DELETE https://api.ollagraph.com/v1/me/forwarders/{forwarder_id} \
  -H "Authorization: Bearer $OLLAGRAPH_API_KEY"
POST/v1/me/forwarders/{forwarder_id}/test

Test My Forwarder

Emit a single test span to the configured destination. Returns whether the endpoint accepted it. Updates last_test_at/status/detail columns so the dashboard can show the result inline.

Example request

curl -X POST https://api.ollagraph.com/v1/me/forwarders/{forwarder_id}/test \
  -H "Authorization: Bearer $OLLAGRAPH_API_KEY"
GET/v1/me/jobs

Get My Jobs

Paginated async-job history for the dashboard Jobs view.

Example request

curl https://api.ollagraph.com/v1/me/jobs
  -H "Authorization: Bearer $OLLAGRAPH_API_KEY"
POST/v1/me/password

Change My Password

Change the signed-in user's password. Verifies the current password first. Existing API keys are unaffected — only dashboard login changes.

Body parameters

FieldTypeDescription
current_passwordstringrequired
new_passwordstringrequired

Example request

curl -X POST https://api.ollagraph.com/v1/me/password \
  -H "Authorization: Bearer $OLLAGRAPH_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"current_password":"string","new_password":"string"}'
GET/v1/me/requests/{request_id}

Get My Request

Look up a specific request by its X-Request-ID. Customers paste the ID they grep-found in their own observability stack (Datadog, Better Stack, Honeycomb, etc.) and we return the billing-side record: endpoint, URL, status, latency, credit cost, timestamp. Returns 404 if the request_id isn't found for this user. That can mean: - the ID is from a different account - the Redis stream hasn't drained yet (within ~1s of the call completing) - the request was an unauthenticated /health hit which we don't log

Example request

curl https://api.ollagraph.com/v1/me/requests/{request_id}
  -H "Authorization: Bearer $OLLAGRAPH_API_KEY"
GET/v1/me/usage

Get My Usage

Paginated request log for the dashboard Logs view. Filter by endpoint. `format=json` (default) returns the standard `{rows, limit, offset}` envelope. `format=csv` returns the same rows as a streaming `text/csv` response with columns: created_at, endpoint, url, status, time_ms, credits_charged, tier_used, request_id. The same `limit`, `offset`, and `endpoint` filters apply. Closes the recurring "compliance asked me to dump 30 days of API calls" ticket without forcing customers to hand-roll a paginated client.

Example request

curl https://api.ollagraph.com/v1/me/usage
  -H "Authorization: Bearer $OLLAGRAPH_API_KEY"
GET/v1/me/usage/summary

Get My Usage Summary

Pre-aggregated chart data for the dashboard Overview.

Example request

curl https://api.ollagraph.com/v1/me/usage/summary
  -H "Authorization: Bearer $OLLAGRAPH_API_KEY"
POST/v1/me/webhook-secret/rotate

Rotate My Webhook Secret

Generate a new webhook signing secret. The previous one becomes invalid immediately - any signed callbacks already in-flight will verify against the new secret, so callers should drain in-flight jobs before rotating.

Example request

curl -X POST https://api.ollagraph.com/v1/me/webhook-secret/rotate \
  -H "Authorization: Bearer $OLLAGRAPH_API_KEY"
POST/v1/me/webhooks/test

Test My Webhook

Send a single signed test payload to `webhook_url` so the customer can verify their receiver before going live. Uses the same signing scheme as production deliveries: X-Ollagraph-Signature: t=<unix_ts>,v1=<hmac_sha256_hex> where the signed body is `<ts>.<exact_json_bytes>`. The customer recomputes the HMAC with their webhook_secret (from `/v1/me`) and compares in constant time. Reuses the same retry/timeout policy as the worker so the result reflects what a real delivery would look like.

Body parameters

FieldTypeDescription
webhook_urlstringrequiredHTTPS URL to receive the signed test payload.

Example request

curl -X POST https://api.ollagraph.com/v1/me/webhooks/test \
  -H "Authorization: Bearer $OLLAGRAPH_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"webhook_url":"https://example.com"}'

Billing

Dodo checkout sessions, customer portal links, plan info.

POST/v1/billing/dodo/checkout

Create Dodo Checkout Session

Create a subscription checkout session. Returns a hosted-page URL the customer should be redirected to. The subscription is fulfilled asynchronously via our internal webhook. Returns a mock URL when OBSCURA_BILLING_MODE=mock so the dashboard wiring can be tested before keys are minted. Idempotency: pass `Idempotency-Key: <uuid>` to make this safe to retry — replays within 24 h return the cached checkout URL with `Idempotency-Replayed: true`. Without the header, every call creates a brand-new Dodo checkout session.

Body parameters

FieldTypeDescription
planstringoptionalPlan to subscribe to. Must be a key in DODO_PLAN_PRODUCT_MAP (typically: tiny | small | medium | large).
countrystringoptionalISO 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_idintegeroptionalBill a TEAM org instead of your personal account. Caller must be owner/admin of the team. Omit for personal billing.

Example request

curl -X POST https://api.ollagraph.com/v1/billing/dodo/checkout \
  -H "Authorization: Bearer $OLLAGRAPH_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"plan":"small"}'
POST/v1/billing/dodo/credits/checkout

Create Dodo Credits Checkout

Pay-as-you-go: buy a one-time credit pack via Dodo. Returns a hosted-page URL the customer is redirected to. Credits are granted by the webhook on payment.succeeded — NOT inline here. Unlike subscription checkout, this does not touch the user's plan. A free-tier user can buy a credit pack and stay on free. Idempotency: pass `Idempotency-Key: <uuid>` to make this safe to retry — replays within 24 h return the cached checkout URL with `Idempotency-Replayed: true`.

Body parameters

FieldTypeDescription
product_idstringrequiredDodo product_id for the credit pack to purchase. Must be a key in DODO_PAYG_PRODUCT_MAP.
countrystringoptionalISO 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_idintegeroptionalBuy the credit pack for a TEAM org instead of your personal account. Caller must be owner/admin of the team.

Example request

curl -X POST https://api.ollagraph.com/v1/billing/dodo/credits/checkout \
  -H "Authorization: Bearer $OLLAGRAPH_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"product_id":"string"}'
GET/v1/billing/dodo/credits/packs

List Dodo Credit Packs

List configured pay-as-you-go credit packs (one-time purchases). Returned shape is purposefully minimal — the dashboard only needs {product_id, credits} to render a buy button; price + description live in the Dodo dashboard.

Example request

curl https://api.ollagraph.com/v1/billing/dodo/credits/packs
  -H "Authorization: Bearer $OLLAGRAPH_API_KEY"
POST/v1/billing/dodo/portal

Open Dodo Customer Portal

Mint a Dodo customer-portal session URL for full self-service. The portal is Dodo's hosted surface — supports cancel, plan change, payment-method update, and viewing invoices/receipts. Use this in the dashboard as the "Manage billing" link.

Example request

curl -X POST https://api.ollagraph.com/v1/billing/dodo/portal \
  -H "Authorization: Bearer $OLLAGRAPH_API_KEY"
GET/v1/billing/dodo/subscription

Get Dodo Subscription State

Return the user's current Dodo subscription state. Used by the dashboard's BillingView to decide whether to render the "Current subscription" card with a Cancel button (when is_active=true).

Example request

curl https://api.ollagraph.com/v1/billing/dodo/subscription
  -H "Authorization: Bearer $OLLAGRAPH_API_KEY"
POST/v1/billing/dodo/subscription/cancel

Cancel Dodo Subscription

Cancel the user's active Dodo subscription at the end of the current billing period. Returns immediately; the plan downgrade is finalised by the `subscription.cancelled` webhook when Dodo fires it.

Example request

curl -X POST https://api.ollagraph.com/v1/billing/dodo/subscription/cancel \
  -H "Authorization: Bearer $OLLAGRAPH_API_KEY"
POST/v1/billing/dodo/subscription/change-plan

Change Dodo Subscription Plan

Change the user's active Dodo subscription to a different plan. `effective_at=immediately` charges a prorated amount and applies now; `next_billing_date` defers the swap to renewal (preferred for downgrades). Final plan state is reconciled via the webhook.

Body parameters

FieldTypeDescription
plan"tiny" | "small" | "medium" | "large"requiredTarget subscription plan
effective_at"immediately" | "next_billing_date"optionalWhen the change takes effect

Example request

curl -X POST https://api.ollagraph.com/v1/billing/dodo/subscription/change-plan \
  -H "Authorization: Bearer $OLLAGRAPH_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"plan":"value"}'

Other

POST/v1/datetime/parse

Datetime Parse

Body parameters

FieldTypeDescription
textstringrequired
languagesstring[]optional

Example request

curl -X POST https://api.ollagraph.com/v1/datetime/parse \
  -H "Authorization: Bearer $OLLAGRAPH_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"text":"string"}'
POST/v1/enrich/company

Enrich Company

Lite company profile from a single page. Pulls Organization JSON-LD, og:* tags, social anchors, contact patterns. Best when pointed at a homepage or /about — no paid company-data feeds involved.

Body parameters

FieldTypeDescription
urlstringrequiredCompany URL — typically a homepage or /about page. We extract JSON-LD Organization, og:* tags, social anchors, contact patterns.
use_residential_proxybooleanoptionalWhen True, fetches with JS rendering through our premium proxy pool. Use for sites whose JSON-LD is injected client-side. Bills +3 credits.

Example request

curl -X POST https://api.ollagraph.com/v1/enrich/company \
  -H "Authorization: Bearer $OLLAGRAPH_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"url":"https://example.com"}'
POST/v1/json/repair

Json Repair

Body parameters

FieldTypeDescription
textstringrequired

Example request

curl -X POST https://api.ollagraph.com/v1/json/repair \
  -H "Authorization: Bearer $OLLAGRAPH_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"text":"string"}'
POST/v1/json/validate

Json Validate

Body parameters

FieldTypeDescription
dataobjectrequired
schemaobjectoptional

Example request

curl -X POST https://api.ollagraph.com/v1/json/validate \
  -H "Authorization: Bearer $OLLAGRAPH_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"data":"value"}'
POST/v1/lang/detect

Lang Detect

Body parameters

FieldTypeDescription
textstringrequired

Example request

curl -X POST https://api.ollagraph.com/v1/lang/detect \
  -H "Authorization: Bearer $OLLAGRAPH_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"text":"string"}'
POST/v1/scan/file

Scan File

Scan an uploaded file (base64) with YARA-X against a built-in ruleset (+ optional custom `rules`). The file is scanned **in-memory and never stored**. Max 10 MB decoded.

Body parameters

FieldTypeDescription
file_base64stringrequiredBase64-encoded file bytes to scan with YARA. Scanned in-memory and never stored. Max ~3.75 MB file (5 MB base64).
rulesstringoptionalOptional custom YARA rule source, scanned in addition to the built-in ruleset.

Example request

curl -X POST https://api.ollagraph.com/v1/scan/file \
  -H "Authorization: Bearer $OLLAGRAPH_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"file_base64":"string"}'
POST/v1/text/chunk

Text Chunk

Body parameters

FieldTypeDescription
textstringrequired
max_tokensintegeroptional
overlapintegeroptional
encodingstringoptional

Example request

curl -X POST https://api.ollagraph.com/v1/text/chunk \
  -H "Authorization: Bearer $OLLAGRAPH_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"text":"string"}'
POST/v1/text/diff

Text Diff

Body parameters

FieldTypeDescription
astringrequired
bstringrequired
modestringoptional

Example request

curl -X POST https://api.ollagraph.com/v1/text/diff \
  -H "Authorization: Bearer $OLLAGRAPH_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"a":"string","b":"string"}'
POST/v1/text/similarity

Text Similarity

Body parameters

FieldTypeDescription
astringrequired
bstringoptional
candidatesstring[]optional

Example request

curl -X POST https://api.ollagraph.com/v1/text/similarity \
  -H "Authorization: Bearer $OLLAGRAPH_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"a":"string"}'
POST/v1/tokens/count

Tokens Count

Body parameters

FieldTypeDescription
textstringrequired
encodingstringoptional

Example request

curl -X POST https://api.ollagraph.com/v1/tokens/count \
  -H "Authorization: Bearer $OLLAGRAPH_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"text":"string"}'
POST/v1/transcribe

Transcribe

Transcribe audio (or a video's audio track) to text + timestamped segments, auto-detecting language. Provide `audio_url` (we download it, SSRF-guarded) or `audio_base64`. Owned ASR (faster-whisper) on our own infra — free-data, no per-minute vendor fee. v1 is synchronous with a 5-minute audio cap; long-form async is coming.

Body parameters

FieldTypeDescription
audio_urlstringoptionalHTTPS URL to an audio or video file to transcribe; we download it (size-capped, SSRF-guarded). Provide this OR audio_base64.
audio_base64stringoptionalBase64-encoded audio bytes for short clips (up to ~3.75 MB). Provide this OR audio_url.
languagestringoptionalISO language code (e.g. 'en') to skip auto-detection.

Example request

curl -X POST https://api.ollagraph.com/v1/transcribe \
  -H "Authorization: Bearer $OLLAGRAPH_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"audio_url":"https://example.com"}'

Crawling

POST/v1/crawl

Crawl

Body parameters

FieldTypeDescription
urlstringrequired
max_pagesintegeroptional
depthintegeroptional
concurrencyintegeroptional
respect_robotsbooleanoptional
webhook_urlstring (uri)optional

Example request

curl -X POST https://api.ollagraph.com/v1/crawl \
  -H "Authorization: Bearer $OLLAGRAPH_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"url":"https://example.com"}'

Actors (preview)

POST/v1/actors/amazon

Actor Amazon

Body parameters

FieldTypeDescription
urlstringrequired
stealthbooleanoptional
proxystringoptional

Example request

curl -X POST https://api.ollagraph.com/v1/actors/amazon \
  -H "Authorization: Bearer $OLLAGRAPH_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"url":"https://example.com"}'
POST/v1/actors/google-maps

Actor Google Maps

Body parameters

FieldTypeDescription
urlstringrequired
stealthbooleanoptional
proxystringoptional

Example request

curl -X POST https://api.ollagraph.com/v1/actors/google-maps \
  -H "Authorization: Bearer $OLLAGRAPH_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"url":"https://example.com"}'
POST/v1/actors/markdown

Actor Markdown

Body parameters

FieldTypeDescription
urlstringrequired
stealthbooleanoptional
proxystringoptional

Example request

curl -X POST https://api.ollagraph.com/v1/actors/markdown \
  -H "Authorization: Bearer $OLLAGRAPH_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"url":"https://example.com"}'
POST/v1/actors/zillow

Actor Zillow

Body parameters

FieldTypeDescription
urlstringrequired
stealthbooleanoptional
proxystringoptional

Example request

curl -X POST https://api.ollagraph.com/v1/actors/zillow \
  -H "Authorization: Bearer $OLLAGRAPH_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"url":"https://example.com"}'

Authentication

POST/v1/auth/keys

Auth Login And Mint Key

Verify email+password and mint a fresh API key tagged 'dashboard'. Used by the dashboard login flow so users can sign in with their password rather than pasting an osk_ key. Each call mints a NEW key (we don't store raw keys, only hashes); the previous key remains valid until explicitly revoked. Returns {api_key, user} on success.

Body parameters

FieldTypeDescription
emailstringrequired
passwordstringrequired

Example request

curl -X POST https://api.ollagraph.com/v1/auth/keys \
  -H "Authorization: Bearer $OLLAGRAPH_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"email":"[email protected]","password":"string"}'
POST/v1/auth/login

Auth Login

Verify password. Returns the user's API key prefix as a hint — the raw key is not recoverable (we only store its hash). Users who have lost their key should rotate via a future /v1/keys/rotate endpoint.

Body parameters

FieldTypeDescription
emailstringrequired
passwordstringrequired

Example request

curl -X POST https://api.ollagraph.com/v1/auth/login \
  -H "Authorization: Bearer $OLLAGRAPH_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"email":"[email protected]","password":"string"}'
GET/v1/auth/me

Auth Me

Dashboard's account-info endpoint. Uses get_api_key (auth only) rather than check_limits so the dashboard polling for stats doesn't burn the user's monthly quota.

Example request

curl https://api.ollagraph.com/v1/auth/me
  -H "Authorization: Bearer $OLLAGRAPH_API_KEY"
POST/v1/auth/password/forgot

Auth Password Forgot

Start a password reset: emails a one-time, 1-hour reset link. Always returns success — never reveals whether the email is registered. Throttled per-IP. This is the self-service recovery for a forgotten password (the authenticated /v1/me/password route still requires the current password).

Body parameters

FieldTypeDescription
emailstringrequired

Example request

curl -X POST https://api.ollagraph.com/v1/auth/password/forgot \
  -H "Authorization: Bearer $OLLAGRAPH_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"email":"[email protected]"}'
POST/v1/auth/password/reset

Auth Password Reset

Complete a password reset with the one-time token from the email. The token is single-use and expires 1 hour after it was issued.

Body parameters

FieldTypeDescription
tokenstringrequired
new_passwordstringrequired

Example request

curl -X POST https://api.ollagraph.com/v1/auth/password/reset \
  -H "Authorization: Bearer $OLLAGRAPH_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"token":"string","new_password":"string"}'
POST/v1/auth/signup

Auth Signup

Body parameters

FieldTypeDescription
emailstringrequired
passwordstringrequired
namestringoptional

Example request

curl -X POST https://api.ollagraph.com/v1/auth/signup \
  -H "Authorization: Bearer $OLLAGRAPH_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"email":"[email protected]","password":"string"}'
GET/v1/auth/verify

Auth Verify Email

Email-verification link target. Flips the account to verified so its API key starts working.

Example request

curl https://api.ollagraph.com/v1/auth/verify
  -H "Authorization: Bearer $OLLAGRAPH_API_KEY"
POST/v1/auth/verify/resend

Auth Verify Resend

Re-send the email-verification link for an account that hasn't verified yet. Always returns success — it never reveals whether the email exists or is already verified. Throttled per-IP like signup to prevent email-bombing.

Body parameters

FieldTypeDescription
emailstringrequired

Example request

curl -X POST https://api.ollagraph.com/v1/auth/verify/resend \
  -H "Authorization: Bearer $OLLAGRAPH_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"email":"[email protected]"}'