Skip to main content
This page is a complete, self-contained reference for building against Tako Contents — the endpoint that downloads the structured data behind a Search or Answer result. Every example runs after you supply an API key, every parameter is grounded in the live API, and the common mistakes are called out explicitly. For the auto-generated schema, see the Contents API reference; for a narrative introduction, see the Overview.

What Contents does

POST https://tako.com/api/v1/contents takes a result url and returns the full content behind that result — one of two forms, depending on what the URL points to: a structured-data CSV export of a Tako card’s underlying data, or the full extracted text of any other web page. You don’t pass a format — Tako detects the right content from the URL and the response reports what it produced. Reach for it when you’ve already found the right result with Search or Answer and you want the content itself, fast, in a form you can parse and feed to a model. The CSV is the Tako card’s data and the extracted text is the web page — there’s no synthesis and nothing to re-derive — which makes Contents well suited to agentic loops that need precise, source-grounded inputs quickly.
  • Base URL: https://tako.com/api/
  • Auth: send your API key in the X-API-Key request header (not a bearer token). Create a key in the Tako console.
  • Prerequisite: a result is downloadable only when it carries a content descriptor in the Search/Answer response. Use that result’s URL here — a card’s webpage_url or a web result’s url. If a result has no content descriptor, its data isn’t exportable — don’t call Contents on it; the endpoint will refuse it (see Errors).

Minimal working example

This downloads the data behind a Tako card. The default url mode returns a short-lived presigned link; fetch that link to get the CSV.
cURL
Response

Request parameters

The body is a ContentsRequest. Only url is required.

Delivery modes

mode controls how the content comes back:
inline mode

Give a large export to an agent

A model reads every row you pass it as tokens, so keep the export out of the model’s context. Write the export to a file, on disk or in memory, and give your agent a code tool that parses it. The tool returns only what the model needs, such as the latest 12 rows or a computed growth rate.
On disk, point the agent’s code tool at card.csv. In memory, have your tool functions read df. Either way, the model sees the tool’s result, not the rows. The download url is short-lived, so fetch it before expires_at.

What a response looks like

A 200 returns a ContentsResponse. contents is a list (today it always carries exactly one item, so the contract stays stable if a result ever yields multiple artifacts). Each ContentItem carries:

The CSV behind a Tako card

For a Tako card, the CSV has a header row naming each series exactly as the card sources it, then one row per data point. A time-series card is keyed by an ISO‑8601 Timestamp (with timezone offset), one column per series:
…one row per fiscal year through the latest data point. The header is self-describing, so the values are ready to compute on and to attribute back to the card.

Which rows a capped export keeps

When a card holds more rows than max_rows or the 100,000-row ceiling, Contents returns part of it. Which part depends on the format. csv, json_records, and json_compact:
  • A card with a date column keeps the rows with the latest dates. Contents counts back from the latest date in the card’s data, not from today. On a card with future rows, such as a season schedule or a weather forecast, a capped export keeps the far end of the future and drops the dates nearest today.
  • A card without a date column, such as a ranking or a comparison table, keeps its first rows.
  • Either way, the rows stay in the card’s own order. A card that shows newest first exports newest first.
card_json cuts each card type its own way. A price or indicator series keeps its newest readings. A forecast, a schedule, or a ranking keeps its first records. So a capped schedule card can return its latest games as csv and its earliest games as card_json. To get a specific stretch of a large card, don’t rely on the cap. Check truncated and total_rows, and raise max_rows until truncated is false, or use a card that covers a narrower range.

When to use Contents

Contents fetches the full content behind a result you already have from Search or Answer — a structured-data CSV export of a Tako card’s underlying series, or the full extracted text of any other web page. Reach for it when:
  • You’ve already found the result and want the content itself, not prose. There’s no synthesis and nothing to re-derive — the CSV is the card’s data, and the extracted text is the page, ready to use directly.
  • It’s a second step, not a search. Contents operates on a URL you already have: find the result with Search or Answer first, then fetch what’s behind it.
  • You’re building agentic apps that need precise, source-grounded inputs fast. Pull the exact numbers behind a card, or the full clean text behind a web result, and act on real content instead of scraping it yourself.
Search and Answer find the result; Contents fetches the content behind it. To skip the second call, inline the content directly in a Search/Answer response with the per-source include_contents setting.

Common mistakes

Avoid these — they are the patterns coding agents most often get wrong.

Errors

Failures return a BaseAPIError body: { "error_message": "...", "error_type": "..." }.