{"uid":"cap_fR77735roA_GyKh6EVMgM","slug":"tako-contents-10755687","name":"Tako Contents","description":"Download the content behind a search result","url":"https://tako.com/api/mpp/v1/contents?utm_source=zero.xyz","method":"POST","headers":{},"bodySchema":{"type":"object","title":"ContentsRequest","required":["url"],"properties":{"url":{"type":"string","title":"Url","examples":["https://tako.com/card/abc123"],"description":"The result URL to fetch downloadable content for (a TakoCard.webpage_url or a WebResult.url). A Tako card URL yields a CSV of the card's data; any other URL yields the page's extracted text."},"mode":{"enum":["url","inline"],"type":"string","title":"ContentsDeliveryMode","description":"How contents reach the caller. URL returns a short-lived presigned file\ndownload; INLINE returns the content in the response body."},"premium":{"type":"boolean","title":"Premium","default":false,"description":"When true, reveal premium cells and bill them. A card's premium columns (see manifest[].premium_class) are withheld by default: a withheld cell reads [premium: withheld] in CSV and is null in JSON formats. This is the only way to receive their values. The export then adds export_pricing.premium_row_cpm_usd[class] per 1,000 rows that hold a value in a column of that class, on top of the standard row rate; premium_rows on the item reports the counts. The flag has no effect on a card without premium columns and on web URLs, and is rejected with content_format=card_json, which carries no premium plumbing.","x-tako-published-default":"False is off on the one endpoint that has it. Converts if a plan or a card type ever reveals premium cells without being asked."},"max_rows":{"anyOf":[{"type":"integer","minimum":1},{"type":"null"}],"title":"Max Rows","default":null,"examples":[100],"description":"Optional cap on the rows a Tako card export returns and is priced against. When omitted, it depends on mode: 'url' returns the whole card, up to the card's export_pricing.max_rows_ceiling (at most 100,000 rows), and 'inline' returns up to 2,000 rows. Tako clamps larger values to that ceiling. When a card holds more rows than the cap, csv, json_records, and json_compact keep the rows with the latest dates, counting back from the card's latest date even when that date is in the future, as on a forecast. A card without a date column keeps its first rows instead. Sports cards cut differently: a league schedule keeps the tab the card shows, then the tabs nearest to it, and a game, standings, or team stats card keeps an even share of each table. The kept rows stay in the card's own order. card_json cuts each card type its own way: a price or indicator series keeps its newest readings, a forecast or ranking keeps its first records, and those sports cards keep rows from the same tabs and tables as their csv. Every row returned bills at the per-1,000-row rate, on top of the flat per-export baseline. Tako never bills more rows than it returns, so a card holding fewer rows than this cap bills only what it holds. Every card format returns the rows up to this cap and bills them, including card_json. Web URLs ignore this field. A card export can hold up to 100,000 rows. Don't read a large export directly into a model's context: at about 15 tokens per row, 10,000 rows cost about 150,000 tokens. Write the export to a file, on disk or in memory, and have the agent parse it with code. Give the model only the rows or results it needs. To cap the export instead, set max_rows."},"max_chars":{"type":"integer","title":"Max Chars","default":1000000,"maximum":1000000,"minimum":1,"examples":[50000],"description":"Character cap on extracted web page text. Ignored for Tako card URLs (they use max_rows). Omit it and Tako returns the full page text, up to the maximum this field allows. To truncate, pass a smaller value.","x-tako-published-default":"The ceiling doubles as the default: omitting it means the whole page."},"highlights":{"anyOf":[{"type":"object","title":"ContentsHighlights","properties":{"query":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Query","default":null,"examples":["funded backlog fiscal 2027 guidance"],"description":"The question the passages should answer. Omit it to receive the page's leading passages."},"max_characters":{"type":"integer","title":"Max Characters","default":4000,"maximum":20000,"minimum":100,"description":"Total character budget for the returned passages.","x-tako-published-default":"4000 on the one endpoint that has it. Converts if a provider serving highlights needs a different budget."}},"description":"Return the passages of a web page instead of its full text.","additionalProperties":false},{"type":"null"}],"default":null,"description":"Return only the passages of a web page that match highlights.query, instead of its full text. The passages arrive in the same text payload, joined with ' … ', and max_chars doesn't apply. Tako card URLs reject it, and so do accounts whose web provider can't return highlights. It bills at the same flat rate as full text."},"quote_only":{"type":"boolean","title":"Quote Only","default":false,"description":"When true, return only the price of the export (cost + export_pricing) without fetching content or charging. The response item's payload and url fields are null, and the request is free. One exception: a card_json quote returns 'card_data_schema', the shape the export would deliver. Test 'content_format' for null to tell a quote from a delivery. `max_rows` shapes the quote. An omitted `max_rows` defaults the way a real export does: the whole card for mode 'url', and 2,000 rows for 'inline'. The quote reads `mode` only for that default. Every format prices a quote from `max_rows`, so a quote is instant and makes no call to a data provider. A quote is an upper bound on the charge: an export of a card with fewer rows than the cap bills less. For a card with data from a source priced per unit, the quote also covers the most that data can charge, which `export_pricing` reports as `variable_cost_max_usd`. A card_json export is truncated to `max_rows` like every other format, so the charge can never exceed the quote for the same cap. A card_json quote reports no `total_rows`, because it does not build the payload. The same export-safe gate applies, so an unexportable card still returns 403, and a card type with no card_json shape still returns 422.","x-tako-published-default":"False is off; the PAYG pre-gate reads it from the raw body for a reason unrelated to defaults (see api_metering.is_contents_quote_only)."},"content_format":{"enum":["csv","json_records","json_compact","card_json"],"type":"string","title":"ContentsFormat","description":"Serialization of tabular (Tako card) data. Web content is always raw text\nand carries no content format (content_format is null)."}},"description":"Request body for POST /api/v1/contents.\n\nThe caller passes the result URL it wants downloadable content for, and\nthe endpoint detects the right content from the URL itself. A Tako card\nURL resolves to the card's underlying data. Any other URL resolves to\nthe page's extracted full text. `mode` controls delivery: `url` returns a\npresigned download link, and `inline` returns the content in the\nresponse. `content_format` selects the card serialization\n(csv, json_records, json_compact, or card_json); web URLs ignore it\n(always text).","additionalProperties":false},"responseSchema":{"type":"object","title":"ContentsResponse","required":["request_id"],"properties":{"usage":{"anyOf":[{"type":"object","title":"Usage","required":["total_cost_usd"],"properties":{"data":{"anyOf":[{"type":"object","title":"UsageData","required":["cost_usd","datasets"],"properties":{"cost_usd":{"type":"number","title":"Cost Usd","description":"USD cost of the inline data delivered in the response."},"datasets":{"type":"integer","title":"Datasets","description":"Number of billed datasets or content items included in the response."},"data_points":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Data Points","default":null,"description":"Number of billed quantitative data points included in the response."}},"description":"The cost and quantity of data delivered in the response.\n\n`datasets` counts billed datasets or content items. `data_points` counts\nbilled quantitative values in generated answer output."},{"type":"null"}],"default":null,"description":"Inline-data cost breakdown. Present only when the surface emitted billable inline data."},"compute":{"anyOf":[{"type":"object","title":"UsageCompute","required":["cost_usd"],"properties":{"cost_usd":{"type":"number","title":"Cost Usd","description":"USD cost of running the operation."}},"description":"The cost of running the operation. Absent on surfaces with no compute\nstep (contents)."},{"type":"null"}],"default":null,"description":"Compute cost breakdown. Present only on surfaces with a compute step (absent for contents)."},"variable_cost":{"anyOf":[{"type":"object","title":"UsageVariableCost","required":["cost_usd"],"properties":{"cost_usd":{"type":"number","title":"Cost Usd","description":"USD cost of the variable-cost charge."}},"description":"The variable-cost charge: the per-unit minimum of a variable-cost source\nthe response served, above the response's own price."},{"type":"null"}],"default":null,"description":"Variable-cost charge. Present only when the data a request or agent run served had a per-unit minimum above its own price: on a search, answer or contents request that set variable_cost, and on an agent run once it completes."},"total_cost_usd":{"type":"number","title":"Total Cost Usd","description":"Total quoted USD cost of this request: the sum of the components present."}},"description":"Usage for one metered request. `total_cost_usd` is always present (the\ntotal quoted charge). `compute` and `data` are the additive breakdown;\neach appears only where it applies. total_cost_usd always equals the sum\nof the components that appear."},{"type":"null"}],"default":null},"contents":{"type":"array","items":{"type":"object","title":"ContentItem","required":["source_url"],"properties":{"url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Url","default":null,"description":"Presigned download URL for the content, returned in 'url' delivery mode. Null for inline delivery and for quotes; pair with expires_at."},"cost":{"type":"number","title":"Cost","default":0,"description":"Price of this item in USD. On a /contents response this is the amount actually billed. On a quote_only response it is a prospective /contents export price, because Tako fetched nothing and billed nothing. On a search or answer downloadable card it is also a prospective price, unless Tako inlined rows for the card; then it is the amount this response billed for the card. Use export_pricing on its own to price a /contents export of the same card. Do not add this value to that result: they are two prices for the same rows, not two charges."},"data":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Data","default":null,"description":"Inline payload as text: card data serialized to CSV, or a web page's extracted text. Set only for the 'csv' card format and for web text; null otherwise. A card export can hold up to 100,000 rows. Don't read a large export directly into a model's context: at about 15 tokens per row, 10,000 rows cost about 150,000 tokens. Write the export to a file, on disk or in memory, and have the agent parse it with code. Give the model only the rows or results it needs. To cap the export instead, set max_rows."},"dataset":{"anyOf":[{"type":"object","title":"TakoDataset","required":["columns","rows","total_rows","truncated","ref","sources"],"properties":{"ref":{"type":"string","title":"Ref","description":"Source URL the dataset was derived from (e.g. the Tako card URL)."},"rows":{"type":"array","items":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"},{"type":"integer"},{"type":"boolean"},{"type":"null"}]}},"title":"Rows","description":"Row data as positional cell arrays aligned to `columns` order. Cells are string/number/boolean/null; nulls are preserved, never coerced."},"columns":{"type":"array","items":{"$ref":"#/components/schemas/TakoDatasetColumn"},"title":"Columns","description":"Ordered column headers (name + type), one per position in every row."},"sources":{"type":"array","items":{"$ref":"#/components/schemas/TakoDatasetSource"},"title":"Sources","description":"Provenance for the dataset: the sources the rows were drawn from."},"truncated":{"type":"boolean","title":"Truncated","description":"True when `rows` was capped and total_rows exceeds the number returned."},"provenance":{"enum":["query","web_extraction"],"type":"string","title":"Provenance","default":"query","description":"How the rows were produced: 'query' (Tako data) or 'web_extraction'."},"total_rows":{"type":"integer","title":"Total Rows","description":"True total number of rows in the underlying data, before any truncation."},"redacted_cells":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"integer"}}},{"type":"null"}],"title":"Redacted Cells","default":null,"description":"Column name to the 0-based positions in `rows` whose premium value was withheld; those cells are null. Set on a structured-output dataset slot when a premium cell was withheld, and null otherwise. An inline /contents dataset reports this on the content item instead."}},"description":"The dataset-slot envelope: exact retrieved rows as positional arrays\nin `columns` order. The rows come directly from the data source; the LLM\nnever transcribes them."},{"type":"null"}],"default":null,"description":"Inline card data as a compact TakoDataset (typed column headers plus positional row arrays). Set only when content_format is 'json_compact'. A card export can hold up to 100,000 rows. Don't read a large export directly into a model's context: at about 15 tokens per row, 10,000 rows cost about 150,000 tokens. Write the export to a file, on disk or in memory, and have the agent parse it with code. Give the model only the rows or results it needs. To cap the export instead, set max_rows."},"premium":{"type":"boolean","title":"Premium","default":false,"description":"True when this item's premium cells are revealed: a /contents response to premium=true. False on every search and answer card and on a /contents response without the flag. There, a withheld premium cell reads [premium: withheld] in CSV and is null in JSON formats, and redacted_cells says which rows held a value."},"records":{"anyOf":[{"type":"array","items":{"type":"object","additionalProperties":{"anyOf":[{"type":"string"},{"type":"number"},{"type":"integer"},{"type":"boolean"},{"type":"null"}]}}},{"type":"null"}],"title":"Records","default":null,"description":"Inline card data as verbose JSON: a list of row objects keyed by column name. Set only when content_format is 'json_records'. A card export can hold up to 100,000 rows. Don't read a large export directly into a model's context: at about 15 tokens per row, 10,000 rows cost about 150,000 tokens. Write the export to a file, on disk or in memory, and have the agent parse it with code. Give the model only the rows or results it needs. To cap the export instead, set max_rows."},"manifest":{"anyOf":[{"type":"array","items":{"type":"object","title":"ColumnDescriptor","properties":{"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name","default":null,"description":"The column header as exported. This is the CSV header, the json_records key, and the dataset column label for this column."},"unit":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Unit","default":null,"description":"The unit of every value in the column, for example 'USD'."},"dtype":{"anyOf":[{"$ref":"#/components/schemas/TakoDatasetColumnType"},{"type":"null"}],"default":null,"description":"The data type of the column, inferred from the exported values."},"entity":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Entity","default":null,"description":"What the column is measured FOR: the resolved values of every dimension the series is filtered to, joined with an em dash — for example 'Austin, TX — Condo'. A card filtered on one dimension reports that one value. This field reports resolved display values only and never an internal identifier."},"metric":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Metric","default":null,"description":"What the column measures, for example 'Median Sales Price'."},"premium_class":{"anyOf":[{"$ref":"#/components/schemas/PremiumClass"},{"type":"null"}],"default":null,"description":"Set when the column is premium: 'company_record' or 'person_contact'. Unless the export passed premium=true, a cell that held a value reads [premium: withheld] in CSV and is null in JSON formats, so a CSV reader can't parse this column as its dtype; the item's redacted_cells says which rows held a value. Null for every other column."}},"description":"Structured description of one exported value column.\n\nProducers set the semantic parts they know (``metric``, ``entity``,\n``unit``). ``name`` and ``dtype`` are filled centrally: ``name`` is the\nrendered canonical header (set by ``apply_descriptor_names``), and ``dtype``\nis inferred from the real column data in ``finalize_export_frame``. A\nproducer-set ``dtype`` would drift from the cells, and a producer cannot know\nthe disambiguated ``name`` before the whole frame is rendered.\n\nIn the exported manifest ``name`` equals the column's actual header, and the\nmanifest is positionally aligned with the exported columns (manifest entry\n``i`` describes column ``i``)."}},{"type":"null"}],"title":"Manifest","default":null,"description":"Per-column metadata, one entry per exported column, in column order: entry i describes column i (CSV header i, json_records key i, or dataset.columns[i]). Each entry carries name (the column header), dtype, unit, metric, entity, and premium_class. On an agent run card, it's set wherever total_rows is. Null for web text and for other quotes that carry no tabular columns."},"card_data":{"anyOf":[{"type":"object","additionalProperties":true},{"type":"null"}],"title":"Card Data","default":null,"description":"Inline card data as a card-type-specific JSON object. The 'card_type' field inside the object names its shape. Set only when content_format is 'card_json'. Tako truncates the record rows in the object to 'max_rows', the same cap every other format takes, and bills the rows it returns. A card whose record array is unbounded caps that array at the platform export ceiling and reports 'truncated': true. The payload then also carries the true count for its record array. Card types without a card_json shape return 422 on /contents and fall back to 'json_compact' on search and answer include_contents. A card export can hold up to 100,000 rows. Don't read a large export directly into a model's context: at about 15 tokens per row, 10,000 rows cost about 150,000 tokens. Write the export to a file, on disk or in memory, and have the agent parse it with code. Give the model only the rows or results it needs. To cap the export instead, set max_rows."},"truncated":{"type":"boolean","title":"Truncated","default":false,"description":"True when the card has more rows than Tako returned. Tako caps a card at the request max_rows or at the card's max_rows_ceiling (at most 100,000), and then total_rows is larger than the rows returned. It's also true when the card itself lists a capped slice of a larger set; then total_matching gives the set's size when Tako counts it. An inline /contents export that omits max_rows returns up to 2,000 rows. On a search or answer response, all cards share a budget of 2,000 billable rows and a budget of 20,000 inline rows, both spent in card order, so a later card can return fewer rows than max_rows asked for. A card the billable budget can no longer pay for still returns a small preview. A card that arrives after the inline budget runs out returns no inline rows, and its export_pricing still prices a /contents export of them."},"expires_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Expires At","default":null,"description":"ISO-8601 timestamp after which the presigned url stops working. Null whenever url is null."},"source_url":{"type":"string","title":"Source Url","description":"The originating result URL from the request."},"total_rows":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Total Rows","default":null,"description":"Total number of rows in the card's data, independent of how many rows were returned. Compare with the rows returned to tell whether a larger max_rows returns more. A card that lists a capped slice of a larger set, such as the 30 soonest-closing of 330 open solicitations, has only that slice as its data, so total_rows is 30 and total_matching gives the set's size. On an agent run card, it's set for a card whose rows are stored with the card, such as a people list, and null for other agent run cards. Null for web text."},"premium_rows":{"anyOf":[{"type":"object","additionalProperties":{"type":"integer"}},{"type":"null"}],"title":"Premium Rows","default":null,"description":"Per premium class ('company_record', 'person_contact'), the number of delivered rows with at least one non-null cell in a column of that class, whether revealed or withheld. Multiply by export_pricing.premium_row_cpm_usd[class] / 1000 to price the premium part of an export before asking for it. A row with cells of two classes counts once in each. Empty for a card with no premium columns; null for web text. On an agent run card, it counts every row of the card, so a premium=true export of all total_rows rows bills exactly these rows when total_rows is within max_rows_ceiling. It's set wherever total_rows is."},"content_format":{"anyOf":[{"enum":["csv","json_records","json_compact","card_json"],"type":"string","title":"ContentsFormat","description":"Serialization of tabular (Tako card) data. Web content is always raw text\nand carries no content format (content_format is null)."},{"type":"null"}],"default":null,"description":"Serialization of the returned card data: 'csv', 'json_records', 'json_compact', or 'card_json'. Null for web text (always returned as raw text) and for a quote-only response (nothing was serialized)."},"export_pricing":{"anyOf":[{"type":"object","title":"ExportPricing","required":["baseline_usd","row_cpm_usd","max_rows_ceiling"],"properties":{"free_rows":{"type":"integer","title":"Free Rows","default":0,"deprecated":true,"description":"Deprecated and always 0. Row allowances are gone: an account that pays nothing per row now reports row_cpm_usd of 0 instead, which the cost formula already accounts for. Stop reading this field; it will be removed."},"row_cpm_usd":{"type":"number","title":"Row Cpm Usd","description":"USD charged per 1,000 rows delivered. Card-level rate; use this value rather than deriving one from the card's sources. It is the sum of the rates of the card's separately priced data feeds, or the standard rate once for a card with none. Credited producers and cited web pages never add to it. This is 0 if your account's row charges are waived, in which case an export costs baseline_usd whatever its size."},"baseline_usd":{"type":"number","title":"Baseline Usd","description":"Flat USD charged once per card export, independent of row count."},"max_rows_ceiling":{"type":"integer","title":"Max Rows Ceiling","description":"Hard cap on rows a single export can return and bill; a larger requested max_rows is clamped to this. No format bills more than the clamped max_rows, and none bills more rows than it returns. Every format obeys this ceiling, including card_json."},"premium_row_cpm_usd":{"type":"object","title":"Premium Row Cpm Usd","description":"USD charged per 1,000 premium rows, keyed by premium class ('company_record', 'person_contact'), added on top of row_cpm_usd when a /contents export passes premium=true. A premium row is a delivered row with at least one non-null cell in a column of that class; the item's premium_rows reports the count per class. Empty when the card has no premium columns. Not affected by a row-charge waiver.","additionalProperties":{"type":"number"}},"variable_cost_max_usd":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Variable Cost Max Usd","default":null,"description":"Set only for a card with data from a source priced per unit: the most the source's minimum charge for an export of this card can be. An export charges whichever is larger, its own price or that minimum, and the quoted cost already accounts for it. The minimum is known only after the export, so the actual charge can be lower. The export's usage.variable_cost reports a different amount: only what the export charged above its own price."}},"description":"Card-CSV export pricing RATE for the /contents endpoint, published so a\ncaller can compute an export's cost before fetching. A /contents export's\nown price = baseline_usd + row_cpm_usd * rows / 1000 + sum over classes c of\npremium_row_cpm_usd[c] * premium_rows[c] / 1000, rows <= max_rows_ceiling.\nFor a card with data from a source priced per unit, the export charges the\nlarger of its own price and that source's minimum, and\nvariable_cost_max_usd is the most that minimum can be.\n\nrow_cpm_usd is the card-level rate and is authoritative: don't derive it\nfrom the card's listed sources. It is the sum of the rates of the card's\nseparately priced data feeds. A card with no separately priced feed bills\nthe standard rate once, however many sources it lists. An organization the\ncard credits only as the producer of a redistributed number, and a web page\nit cites, never adds to the rate. There is no per-source breakdown. It is\nper-CALLER: an account whose row charges are waived sees 0 here, and the\nsame formula then yields the baseline alone, which is exactly what that\naccount is billed."},{"type":"null"}],"default":null,"description":"Rate card for a downloadable card CSV, so a caller can compute a full export's cost before fetching. Null for web text and other non-downloadable content."},"redacted_cells":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"integer"}}},{"type":"null"}],"title":"Redacted Cells","default":null,"description":"Column header to the 0-based positions, among the delivered rows, whose premium value was withheld. Present only when a premium cell was withheld; null when premium=true, when nothing was withheld, and for web text. Positions index the delivered rows: CSV data rows in order, json_records entries, or dataset.rows. In CSV, the same cells read [premium: withheld]; a premium cell with no value is blank."},"total_matching":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Total Matching","default":null,"description":"Size of the whole set behind a card that lists a capped slice of it, such as 330 for a card listing the 30 soonest-closing of 330 open solicitations. It's the count the card's description states, and it's the same on every content format. A larger max_rows doesn't return more of that set. Tako reports it for the cards that list such a slice: open solicitations, international tenders, a federal agency's contracts, and a company's news. Null when the card's rows are the whole set, when Tako doesn't count the set (truncated is still true), and for web text."},"card_data_schema":{"anyOf":[{"type":"object","additionalProperties":true},{"type":"null"}],"title":"Card Data Schema","default":null,"description":"JSON Schema for the object in 'card_data'. Read it to learn the shape of the payload without parsing the payload. Tako sets this whenever content_format is 'card_json'. It is also set in 'url' delivery mode and on a Contents quote, where 'card_data' is null and the shape is all Tako returns. A search or answer card that you did not ask to inline carries a price but no schema. The 'title' field and the 'card_type' default inside the schema name the shape. The schema describes the payload type, so 'card_data' can omit a field the schema declares: Tako drops a measure the provider did not supply. Null for every other content_format and for web text."}},"description":"A single downloadable artifact.\n\nIt inherits `content_format`, `cost`, the payload fields (`data`,\n`records`, `dataset`, `total_rows`, `truncated`), and the presigned `url`\nand `expires_at` from ResultContent. URL mode populates `url` and\n`expires_at`. INLINE mode populates one of the payload fields and leaves\n`url` and `expires_at` null. A `quote_only` request yields a third shape:\n`cost` (plus `export_pricing` for a card) with every payload and url\nfield null and `content_format` null — the price of the export, with\nnothing fetched or charged.\n\n`card_data_schema` is the one field that does NOT follow that rule: a\ncard_json quote and a card_json `url` delivery both return it beside a null\n`card_data`, because the shape is what those two shapes have to offer. Test\n`content_format` for null to tell a quote from a delivery; a null payload\nfield cannot do it."},"title":"Contents","description":"Downloadable artifacts for the requested URL."},"request_id":{"type":"string","title":"Request Id","description":"Unique identifier for this request."}},"description":"Response for POST /api/v1/contents.\n\n`contents` is a list so that the contract stays stable if a single result\never yields multiple artifacts. Today it always carries exactly one\nitem."},"example":null,"exampleRequest":null,"tags":["data","visualization","charts","research","search","answers","agents","reports","datasets","analytics","ai"],"displayCostAmount":"0.002","displayCostAsset":"USDC","priceDynamic":false,"priceHint":null,"priceStatus":"priced","priceSource":"registry","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.002/call","primary":{"kind":"static","protocol":"mpp","network":"tempo","amountUsd":"0.002","per":"call","confidence":"exact"},"accepted":[{"kind":"static","protocol":"mpp","network":"tempo","amountUsd":"0.002","per":"call","confidence":"exact"}]},"paymentMethods":[{"uid":"pm_tZeLj3b3_KJp7K-6NF5FF","protocol":"mpp","methodType":"crypto","chain":"tempo","mode":"charge","costAmount":"0.002","costPer":"request","priority":0,"asset":"0x20c000000000000000000000b9537d11c60e8b50","unit":"request","depositMicros":null,"planRef":null}],"brandName":"Tako","brandSlug":"tako","brandBaseUrl":"https://tako.com","brandDocsUrl":"https://tako.com","whatItDoes":"Downloads the raw content (CSV data or extracted text) behind a Tako search result URL","exampleAgentPrompt":"Grab the CSV data behind this Tako card result — https://tako.com/card/abc123 — and return it inline so I can analyze the numbers directly.","exampleUseCases":[{"title":"Export chart data for offline analysis","prompt":"I found this Tako card with GDP trend data — https://tako.com/card/xyz789 — can you download the underlying CSV so I can load it into my spreadsheet? Just give me the first 500 rows inline."},{"title":"Extract text from web search result","prompt":"Take this web result URL from my Tako search — https://example.com/report/2024-economic-outlook — and pull out the full page text so I can read the key points."},{"title":"Research agent pulling dataset for report","prompt":"I'm building a report and need the raw dataset from this Tako card — https://tako.com/card/def456 — fetch it as a presigned download URL so I can pass it along to my pipeline."}],"resultDescription":"Returns a ContentsResponse containing one or more content items: for Tako card URLs, a CSV of the card's data rows (up to 2,000 rows by default, billed per 1,000 rows); for web URLs, the extracted plain text of the page. Content is delivered either as a short-lived presigned download URL or inline in the response body, depending on the requested mode. The response also includes a usage breakdown showing total cost in USD, number of datasets, and optionally data point counts.","failureModes":["Invalid or non-existent URL returns an error — the URL must be a valid TakoCard.webpage_url or WebResult.url","Requesting premium=true with content_format=card_json is rejected — premium plumbing is not supported in that format","max_rows values exceeding 2,000 are clamped silently by the system","Presigned download URLs are short-lived and will expire if not fetched promptly","Network or upstream errors may result in empty or partial content responses"],"whenToPreferThis":"Use this endpoint when you have already obtained a result URL from Tako Search or Answer and need to retrieve the underlying raw data or text content behind it. It is the right choice when you want a downloadable CSV from a Tako data card for quantitative analysis, or when you need the extracted text of a web page from a Tako search result. Prefer this over re-searching when you already have the specific card or web URL.","instructions":null,"reviewSummary":null,"reviewSummaryHighlights":null,"reviewSummaryConcerns":null,"reviewSummaryGeneratedAt":null,"activationCount":0,"lastUsedAt":null,"lastSuccessfullyRanAt":null,"lastHealthCheckAt":"2026-10-11T00:39:45.752Z","isFirstParty":false,"canonicalSlug":"tako-contents-10755687"}