> ## Documentation Index
> Fetch the complete documentation index at: https://docs.tako.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Quickstart

export const WhyTakoCTA = ({description, href}) => <p className="mt-2 text-lg prose prose-gray dark:prose-invert [&>*]:[overflow-wrap:anywhere]">
    {description ? `${description} ` : null}<a href={href}>Why do developers use Tako? →</a>
  </p>;

<WhyTakoCTA description="Get a Tako API key and build with Tako's four core APIs — Agent, Answer, Search, and Contents — over real-time, source-grounded data." href="/documentation/getting-started/what-is-tako/overview" />

<Note>
  For AI agents: Use [llms.txt](https://docs.tako.com/llms.txt) for a full index of all documentation.
</Note>

## Installation

Tako ships official SDKs for **Python** and **TypeScript / JavaScript**. AI clients connect through the hosted **MCP** server — nothing to install, just the endpoint. Every endpoint is also a single `POST`, so any other language works over the [REST API](#make-your-first-request) directly.

<CodeGroup>
  ```bash Python theme={null}
  pip install tako-sdk
  ```

  ```bash TypeScript / JavaScript theme={null}
  npm install tako-sdk
  ```

  ```bash Vercel AI SDK theme={null}
  npm install @takoviz/ai-sdk ai @ai-sdk/openai
  ```

  ```bash MCP theme={null}
  https://mcp.tako.com/mcp
  ```
</CodeGroup>

For one-click MCP setup in Claude, ChatGPT, Cursor, and VS Code, see the [MCP server](/documentation/integrations/mcp-server) page.

## Get your API key

<Steps>
  <Step title="Sign up for free credits">
    New to Tako? [Sign up](https://tako.com) and get free credits to start building.
  </Step>

  <Step title="Create an API key">
    Create an API key from your [Tako console](https://tako.com/console/api-keys).
  </Step>

  <Step title="Store it as an environment variable">
    Store it as an environment variable — for example `TAKO_API_KEY` — rather than hardcoding it.
  </Step>
</Steps>

## Pick the right tool

Each API is a single call over the same curated, real-time data — here's what each one is for, and why it beats a generic search API. Expand a tool to see when to reach for it.

<AccordionGroup>
  <Accordion title="Agent — token-efficient deep research, grounded in accurate data" icon="robot">
    * **Rank a cohort.** *"Which of the 20 largest US semiconductor companies grew revenue fastest since 2015?"* — the Agent resolves the set, pulls each company's data, and ranks them in one long-running run you dispatch and poll.
    * **Background research job.** Kick off an overnight run that compiles a competitor's funding history, headcount, and recent filings into one cited brief, and read it when it finishes.

    [Learn more about **Agent** →](/documentation/integrating-tako/agent/overview)
  </Accordion>

  <Accordion title="Answer — one written, cited answer in a single call" icon="comment">
    * **Answer in a chat assistant.** A support bot hits *"What was NVIDIA's latest quarterly revenue?"* mid-conversation and gets back the written answer plus its sources in one call — no retrieval to wire up.
    * **Keep a page current.** A weekly market-recap page renders *"How did the S\&P 500 do this week?"* with the cards behind it, then re-runs each morning to keep the copy fresh.

    [Learn more about **Answer** →](/documentation/integrating-tako/answer/overview)
  </Accordion>

  <Accordion title="Search — fast structured knowledge cards, no LLM in the loop" icon="magnifying-glass">
    * **Mass-query for an agent.** Fan out Search calls to grab fresh data fast — pull this quarter's revenue for all 30 holdings in a portfolio at once, one call per ticker, with no LLM in the loop — then compute on the results.
    * **Embed a live chart.** A dashboard drops a live *"Gold price, last 5 years"* card into the page from a single query.

    [Learn more about **Search** →](/documentation/integrating-tako/search/overview)
  </Accordion>

  <Accordion title="Contents — the exact numbers behind an answer or search, as CSV" icon="table">
    * **Feed exact numbers to an agent.** After Search returns a card, the agent downloads its CSV and computes a 3-year growth rate on the real series instead of guessing from prose.
    * **Pull a series into a notebook.** An analyst pulls *"US CPI, year over year"* straight into a pandas dataframe or spreadsheet to chart it themselves.

    [Learn more about **Contents** →](/documentation/integrating-tako/contents/overview)
  </Accordion>
</AccordionGroup>

Already have your own data? **[Thin-Viz](/documentation/integrating-tako/chart-creation/overview)** turns it into interactive, embeddable Tako cards.

## Make your first request

Pick the use case closest to what you're building. Each is a single call over the same real-time data — the code and the live result below both change to match.

<Tabs>
  <Tab title="Stock prices">
    **Search** returns fast, structured knowledge cards for a query — no LLM in the loop. Ideal for pulling live prices you render or compute on yourself.

    <Accordion title="Code" defaultOpen={true}>
      <CodeGroup>
        ```bash cURL theme={null}
        curl -X POST https://tako.com/api/v3/search \
          -H "X-API-Key: $TAKO_API_KEY" \
          -H "Content-Type: application/json" \
          -d '{
            "query": "What are today'\''s top performing stocks?"
          }'
        ```

        ```python Python theme={null}
        import os
        from tako import Configuration, SearchRequest
        from tako.lib import Tako

        config = Configuration()
        config.api_key["apiKey"] = os.environ["TAKO_API_KEY"]
        client = Tako(config)

        results = client.search(SearchRequest(query="What are today's top performing stocks?"))
        for card in results.cards or []:
            print(card.title, card.webpage_url)
        ```

        ```typescript TypeScript theme={null}
        import { Tako } from "tako-sdk";

        const tako = new Tako({ apiKey: process.env.TAKO_API_KEY! });

        const results = await tako.search({ query: "What are today's top performing stocks?" });
        for (const card of results.cards ?? []) {
          console.log(card.title, card.webpage_url);
        }
        ```
      </CodeGroup>
    </Accordion>

    <Accordion title="Result" defaultOpen={true}>
      <p>A knowledge card — a full data series with its sources, ready to render or compute on.</p>

      <iframe width="100%" style={{backgroundColor: '#ffffff'}} src="https://tako.com/embed/Egb55l06wATm44FH0yQk/?dark_mode=false" scrolling="no" frameborder="0" className="dark:hidden" />

      <iframe width="100%" style={{backgroundColor: '#1A1D1F'}} src="https://tako.com/embed/Egb55l06wATm44FH0yQk/?dark_mode=true" scrolling="no" frameborder="0" className="hidden dark:block" />
    </Accordion>
  </Tab>

  <Tab title="Sports">
    **Answer** returns one written, source-attributed answer plus the Tako cards that back it — in a single call, no retrieval to wire up.

    <Accordion title="Code" defaultOpen={true}>
      <CodeGroup>
        ```bash cURL theme={null}
        curl -X POST https://tako.com/api/v1/answer \
          -H "X-API-Key: $TAKO_API_KEY" \
          -H "Content-Type: application/json" \
          -d '{
            "query": "How has Luka Dončić'\''s points per game trended this season?"
          }'
        ```

        ```python Python theme={null}
        import os
        from tako import Configuration, SearchRequest
        from tako.lib import Tako

        config = Configuration()
        config.api_key["apiKey"] = os.environ["TAKO_API_KEY"]
        client = Tako(config)

        response = client.answer(SearchRequest(query="How has Luka Dončić's points per game trended this season?"))
        print(response.answer)
        for card in response.cards or []:
            print(card.title, card.webpage_url)
        ```

        ```typescript TypeScript theme={null}
        import { Tako } from "tako-sdk";

        const tako = new Tako({ apiKey: process.env.TAKO_API_KEY! });

        const response = await tako.answer({ query: "How has Luka Dončić's points per game trended this season?" });
        console.log(response.answer);
        for (const card of response.cards ?? []) {
          console.log(card.title, card.webpage_url);
        }
        ```
      </CodeGroup>
    </Accordion>

    <Accordion title="Result" defaultOpen={true}>
      <p>
        <strong>Answer:</strong> Luka Dončić is averaging 33.5 points per game this season. His monthly PPG has fluctuated — 38.2 in October, 32.5 in November, 31.0 in December, 34.0 in January, 27.0 in February, and back up to 37.5 in March.
      </p>

      <iframe width="100%" style={{backgroundColor: '#ffffff'}} src="https://tako.com/embed/-Bau8k8h5Kzag3zivqMG/?dark_mode=false" scrolling="no" frameborder="0" className="dark:hidden" />

      <iframe width="100%" style={{backgroundColor: '#1A1D1F'}} src="https://tako.com/embed/-Bau8k8h5Kzag3zivqMG/?dark_mode=true" scrolling="no" frameborder="0" className="hidden dark:block" />
    </Accordion>
  </Tab>

  <Tab title="Research">
    **Agent** is an asynchronous deep-research agent for multi-step questions — resolving a cohort, then ranking it across many entities. Dispatch a run, then poll until it's done.

    <Accordion title="Code" defaultOpen={true}>
      <CodeGroup>
        ```bash cURL theme={null}
        # 1. Dispatch — returns 202 with {"run_id": "...", "status": "queued"}.
        curl -X POST https://tako.com/api/v1/agent/runs \
          -H "X-API-Key: $TAKO_API_KEY" \
          -H "Content-Type: application/json" \
          -d '{
            "query": "Which of the Magnificent Seven tech companies has grown revenue the fastest over the past five years?"
          }'

        # 2. Poll with the run_id until status is "completed" or "failed".
        curl https://tako.com/api/v1/agent/runs/RUN_ID \
          -H "X-API-Key: $TAKO_API_KEY"
        ```

        ```python Python theme={null}
        import os
        import time
        from tako import Configuration, AgentRunRequest
        from tako.lib import Tako

        config = Configuration()
        config.api_key["apiKey"] = os.environ["TAKO_API_KEY"]
        client = Tako(config)

        run = client.agent.run(
            AgentRunRequest(query="Which of the Magnificent Seven tech companies has grown revenue the fastest over the past five years?")
        )

        # Runs can take minutes — poll on a short interval until terminal.
        while run.status not in ("completed", "failed"):
            time.sleep(3)
            run = client.agent.get(run.run_id)

        print(run.result.answer)
        ```

        ```typescript TypeScript theme={null}
        import { Tako } from "tako-sdk";

        const tako = new Tako({ apiKey: process.env.TAKO_API_KEY! });

        let run = await tako.agent.run({
          query: "Which of the Magnificent Seven tech companies has grown revenue the fastest over the past five years?",
        });

        // Runs can take minutes — poll on a short interval until terminal.
        while (run.status !== "completed" && run.status !== "failed") {
          await new Promise((r) => setTimeout(r, 3000));
          run = await tako.agent.get(run.run_id);
        }

        console.log(run.result?.answer);
        ```
      </CodeGroup>
    </Accordion>

    <Accordion title="Result" defaultOpen={true}>
      <p>
        <strong>Answer:</strong> NVIDIA grew revenue the fastest over the past five years — from \$16.7B in 2020 to \$215.9B in 2025, a five-year CAGR of 66.9%. The rest of the Magnificent Seven trailed well behind: Tesla at 24.6%, Meta at 18.5%, Alphabet at 17.2%, Microsoft at 14.5%, Amazon at 13.2%, and Apple at 8.7%.
      </p>

      <iframe width="100%" style={{backgroundColor: '#ffffff'}} src="https://tako.com/embed/U_ahQOm3DZ4WJEH4SSDv/?dark_mode=false" scrolling="no" frameborder="0" className="dark:hidden" />

      <iframe width="100%" style={{backgroundColor: '#1A1D1F'}} src="https://tako.com/embed/U_ahQOm3DZ4WJEH4SSDv/?dark_mode=true" scrolling="no" frameborder="0" className="hidden dark:block" />
    </Accordion>
  </Tab>

  <Tab title="Build an agent">
    Prime an agent with **exact, source-grounded numbers**: **Search** finds the card, then **Contents** downloads the exact series behind it as CSV — so your agent computes on real values instead of prose.

    <Accordion title="Code" defaultOpen={true}>
      <CodeGroup>
        ```bash cURL theme={null}
        # 1. Search finds the card.
        curl -X POST https://tako.com/api/v3/search \
          -H "X-API-Key: $TAKO_API_KEY" \
          -H "Content-Type: application/json" \
          -d '{"query": "Palantir federal contract obligations"}'

        # 2. Contents downloads the exact numbers behind it (pass the card's webpage_url).
        curl -X POST https://tako.com/api/v1/contents \
          -H "X-API-Key: $TAKO_API_KEY" \
          -H "Content-Type: application/json" \
          -d '{
            "url": "https://tako.com/card/IbVGstkzEIUt8nwY4G_1/",
            "mode": "inline"
          }'
        ```

        ```python Python theme={null}
        import os
        from tako import Configuration, SearchRequest
        from tako.models.contents_request import ContentsRequest
        from tako.lib import Tako

        config = Configuration()
        config.api_key["apiKey"] = os.environ["TAKO_API_KEY"]
        client = Tako(config)

        # 1. Search finds the card.
        results = client.search(SearchRequest(query="Palantir federal contract obligations"))
        card = results.cards[0]

        # 2. Contents downloads the exact numbers behind it — feed the CSV to your agent.
        contents = client.contents(ContentsRequest(url=card.webpage_url, mode="inline"))
        print(contents.contents[0].data)
        ```

        ```typescript TypeScript theme={null}
        import { Tako } from "tako-sdk";

        const tako = new Tako({ apiKey: process.env.TAKO_API_KEY! });

        // 1. Search finds the card.
        const results = await tako.search({ query: "Palantir federal contract obligations" });
        const card = results.cards![0];

        // 2. Contents downloads the exact numbers behind it — feed the CSV to your agent.
        const contents = await tako.contents({ url: card.webpage_url, mode: "inline" });
        console.log(contents.contents[0].data);
        ```
      </CodeGroup>
    </Accordion>

    <Accordion title="Result" defaultOpen={true}>
      <p><strong>Search</strong> finds the card — Palantir's federal contract obligations by fiscal year:</p>

      <iframe width="100%" style={{backgroundColor: '#ffffff'}} src="https://tako.com/embed/IbVGstkzEIUt8nwY4G_1/?dark_mode=false" scrolling="no" frameborder="0" className="dark:hidden" />

      <iframe width="100%" style={{backgroundColor: '#1A1D1F'}} src="https://tako.com/embed/IbVGstkzEIUt8nwY4G_1/?dark_mode=true" scrolling="no" frameborder="0" className="hidden dark:block" />

      <p><strong>Contents</strong> hands your agent the exact series behind it, as CSV — ready to compute on:</p>

      ```csv theme={null}
      Timestamp,usaspending_sum_obligation - Palantir Technologies Inc. Federal Contract Obligations
      2008-10-01 00:00:00+00:00,135211.06
      2009-10-01 00:00:00+00:00,4378216.96
      2010-10-01 00:00:00+00:00,5801023.5
      ...
      2024-10-01 00:00:00+00:00,541197885.14
      2025-10-01 00:00:00+00:00,1020566208.97
      2026-10-01 00:00:00+00:00,713329284.7
      ```
    </Accordion>
  </Tab>
</Tabs>

## Next steps

<CardGroup cols={2}>
  <Card title="Developer Playground" href="https://tako.com/playground">
    No setup required. Try a simple query like “Nvidia earnings” or a long-form prompt to see what Tako returns.
  </Card>

  <Card title="What is Tako?" href="/documentation/getting-started/what-is-tako/overview">
    Learn more about Tako’s key concepts and functionality.
  </Card>
</CardGroup>
