{"uid":"cap_vFoqtATURJJBMMcP9dBRZ","slug":"orthogonal-riveter-structured-data-extraction-enrichment-aea42097","name":"Orthogonal Riveter – Structured Data Extraction & Enrichment","description":"Copy link Define the structure of your output directly in the API request. This endpoint allows you to define both your input data and output configuration in a single request.","url":"https://x402.orthogonal.com/riveter/v1/run","method":"POST","headers":{},"bodySchema":{"type":"object","properties":{"input":{"type":"object","description":"The input object contains your source data:  Keys are column/attribute names Values are arrays of strings (all arrays must be the same length) Maximum 1000 rows per request Example: {\"company\":[\"Stripe\",\"Ramp\"],\"domain\":[\"stripe.com\",\"ramp.com\"]} (every value array must be the same length)."},"output":{"type":"object","description":"The output object defines what data you want to extract:  Keys are the names of attributes you want to extract Each attribute requires: prompt: Instructions for finding/extracting this data contexts: Array of input or other output attribute names this depends on. Optional Output Configuration Each output attribute can optionally include:  format: Data type ('number', 'json', 'url', 'text', 'email', 'tag', 'date', 'boolean') format_details: Format-specific configuration (varies by format type). For json format, you can provide either a description (string) or a schema (JSON Schema object) or both. tools: Array of tools to use (['web_search', 'web_scrape', 'query_pdf', 'query_image']) max_tool_calls: Number of tool calls allowed (0-10) run_when: When to run this extraction ('always', 'any_filled', 'all_filled') Example: {\"ceo_name\":{\"prompt\":\"Find the company's CEO\",\"contexts\":[\"company\"],\"format\":\"text\"}}."}}},"responseSchema":null,"example":null,"exampleRequest":null,"tags":["x402"],"displayCostAmount":"0.004","displayCostAsset":"USDC","priceDynamic":false,"priceHint":null,"priceStatus":"priced","priceSource":"probe","requiresHandshake":false,"reviewCount":0,"rating":{"score":"0.00","successRate":"0.00","reviews":0,"stars":null,"state":"unrated"},"availabilityStatus":"unknown","priceObserved":null,"sessionDeposit":null,"pricing":{"kind":"static","summary":"$0.004/call","primary":{"kind":"static","protocol":"x402","network":"base","amountUsd":"0.004","per":"call","confidence":"exact"},"accepted":[{"kind":"static","protocol":"x402","network":"base","amountUsd":"0.004","per":"call","confidence":"exact"}]},"paymentMethods":[{"uid":"pm_BMK9QGPOG4vYu6YxVnAkW","protocol":"x402","methodType":"crypto","chain":"base","mode":"charge","costAmount":"0.004","costPer":"request","priority":0,"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","unit":"request","depositMicros":null,"planRef":null}],"brandName":null,"brandSlug":null,"brandBaseUrl":null,"brandDocsUrl":null,"whatItDoes":"Runs batch AI-powered data extraction and enrichment over tabular input rows, with a fully user-defined output schema specifying what to extract, how to format it, and which tools to use.","exampleAgentPrompt":"I have a list of companies — Stripe, Ramp, and Brex — and I want to enrich them with their CEO name and headquarters city. Use web search to find the data and return it as text fields.","exampleUseCases":[{"title":"Lead list enrichment for sales","prompt":"I have a list of companies and their domains — like Notion (notion.so) and Linear (linear.app) — can you enrich each one with the CEO name, employee count, and a short company description? Use web search to find the info."},{"title":"Competitor pricing intelligence","prompt":"Here are five SaaS competitor URLs: figma.com, canva.com, sketch.com, adobe.com, affinity.serif.com. For each one, find their entry-level monthly pricing plan using web scraping and return it as a number."},{"title":"Contact info extraction from domains","prompt":"I have a list of startup domains — acme.io, widget.co, sprocket.ai — and I need to extract a public contact email address and LinkedIn company page URL for each one. Use web scrape and web search tools."}],"resultDescription":"Returns the enriched output rows with values for each defined output attribute, formatted according to the specified type (text, number, boolean, url, email, json, date, tag). Each row corresponds to a row in the input data, and each column corresponds to a user-defined output attribute key.","failureModes":["Input arrays of unequal length return a validation error","More than 1000 rows per request will be rejected","Missing required 'prompt' or 'contexts' fields in output config cause extraction to fail","Web search or scrape tools may return empty results if the target page is unavailable","max_tool_calls set to 0 disables external lookups, limiting extraction to reasoning only","Ambiguous or underspecified prompts may yield low-quality or hallucinated results","Payment failure or insufficient USDC balance blocks the request"],"whenToPreferThis":"Choose this endpoint when you need to enrich or extract structured data across multiple rows in a single request with flexible, user-defined output schemas. It excels over single-lookup APIs when you have batch data (e.g., a CSV of companies, domains, or names) and want to define arbitrary output fields with custom prompts and tool access (web search, scraping). Prefer it over static databases when you need fresh, web-sourced enrichment for any attribute you can describe in natural language.","instructions":null,"reviewSummary":null,"reviewSummaryHighlights":null,"reviewSummaryConcerns":null,"reviewSummaryGeneratedAt":null,"activationCount":0,"lastUsedAt":null,"lastSuccessfullyRanAt":null,"lastHealthCheckAt":"2026-09-13T07:02:07.404Z","isFirstParty":false}