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

# Spine API

> The highest-quality research API. #1 on GAIA Level 3 — agent-grade research delivered as polished artifacts via a single API call.

# The highest-quality research, delivered

Spine produces research that beats Perplexity, You.com, Claude, and Manus AI on hard, multi-hop tasks — [#1 on GAIA Level 3 and Google Deep Research](https://www.getspine.ai/blog/spine-swarm-hits-1-on-gaia-level-3-and-google-deep). One API call runs a multi-agent swarm and returns verified findings as ready-to-ship `.docx`, `.xlsx`, `.pptx`, `.html`, and `.png` artifacts.

Every run is **fully auditable**: inspect the agent DAG, the task tree, and every intermediary block via the API — or open the same run in a visual canvas to see exactly what each agent did, step by step.

<CardGroup cols={2}>
  <Card title="Highest-quality research" icon="trophy" href="https://www.getspine.ai/blog/spine-swarm-hits-1-on-gaia-level-3-and-google-deep">
    \#1 on GAIA Level 3. Every claim verified with citations.
  </Card>

  <Card title="Fully auditable" icon="magnifying-glass" href="/api-reference/concepts/polling-and-status#canvas-introspection">
    Inspect the agent DAG and every intermediate block — via API or a visual canvas.
  </Card>

  <Card title="Async by design" icon="bolt" href="/api-reference/concepts/polling-and-status">
    One `POST`, a multi-agent DAG runs for 10–20 min (up to 2 hr).
  </Card>

  <Card title="Drop into any agent" icon="plug" href="/api-reference/for-agents">
    Skills and configs for Claude Code, Cursor, Codex, OpenClaw, and web builders.
  </Card>
</CardGroup>

<Card title="Try it free" icon="credit-card" href="https://platform.getspine.ai" horizontal>
  Get **\$5 of free credits** when you sign up — enough to run several research
  jobs end-to-end. No subscription, simple pay-as-you-go pricing: **\$1 = 1,000
  credits**. Add a card when you're ready for more.
</Card>

## Hello world

<CodeGroup>
  ```bash curl theme={"theme":{"light":"github-light","dark":"tokyo-night"}}
  curl -X POST https://api.getspine.ai/v1/run \
    -H "X-API-KEY: sk_spine_..." \
    -F "prompt=Summarize this sales data" \
    -F "template=memo" \
    -F "files=@sales-data.csv;type=text/csv"
  ```

  ```python Python theme={"theme":{"light":"github-light","dark":"tokyo-night"}}
  import requests

  r = requests.post(
      "https://api.getspine.ai/v1/run",
      headers={"X-API-KEY": "sk_spine_..."},
      data={"prompt": "Summarize this sales data", "template": "memo"},
      files={"files": ("sales-data.csv", open("sales-data.csv", "rb"), "text/csv")},
  )
  run_id = r.json()["data"]["run_id"]
  print(run_id)
  ```

  ```javascript Node theme={"theme":{"light":"github-light","dark":"tokyo-night"}}
  import fs from "node:fs";

  const form = new FormData();
  form.set("prompt", "Summarize this sales data");
  form.set("template", "memo");
  form.append(
    "files",
    new Blob([fs.readFileSync("sales-data.csv")]),
    "sales-data.csv",
  );

  const res = await fetch("https://api.getspine.ai/v1/run", {
    method: "POST",
    headers: { "X-API-KEY": "sk_spine_..." },
    body: form,
  });
  const { data } = await res.json();
  console.log(data.run_id);
  ```
</CodeGroup>

You'll get back a `run_id`. **For apps, webhooks are the preferred approach** — register a URL in the developer portal and Spine will POST results to you when the run finishes. See [Webhooks](/api-reference/concepts/webhooks). Polling remains available if you prefer: poll [`GET /v1/run/{run_id}`](/api-reference/endpoints/get-run) every 15–30 seconds until `status` becomes `completed` — then read `result.final_output` and download everything in `result.artifacts`.

## Start here

<CardGroup cols={3}>
  <Card title="Quickstart" icon="rocket" href="/api-reference/quickstart">
    Your first request end-to-end.
  </Card>

  <Card title="Authentication" icon="key" href="/api-reference/authentication">
    API keys, rotation, best practices.
  </Card>

  <Card title="Templates" icon="layer-group" href="/api-reference/concepts/templates">
    Pre-built block configurations for common workflows.
  </Card>
</CardGroup>

## Concepts

<CardGroup cols={2}>
  <Card title="Canvases and runs" icon="diagram-project" href="/api-reference/concepts/canvases-and-runs">
    How runs, canvases, blocks, and tasks fit together.
  </Card>

  <Card title="Block types" icon="cubes" href="/api-reference/concepts/block-types">
    Every block type agents can create, with links to the visual app docs.
  </Card>

  <Card title="Agent instructions" icon="wand-magic-sparkles" href="/api-reference/concepts/agent-instructions">
    Shape tone, rigor, audience, scope across all agent layers.
  </Card>

  <Card title="File uploads" icon="paperclip" href="/api-reference/concepts/file-uploads">
    Attach documents and images as agent context.
  </Card>
</CardGroup>

## Endpoints

Five endpoints. All return `{ success, data }` JSON envelopes; errors return `{ success: false, error }` with an HTTP status — see [Errors](/api-reference/errors).

| Method | Path                                                                          | Purpose                             |
| ------ | ----------------------------------------------------------------------------- | ----------------------------------- |
| `POST` | [`/v1/run`](/api-reference/endpoints/create-run)                              | Create an async canvas run          |
| `GET`  | [`/v1/run/{run_id}`](/api-reference/endpoints/get-run)                        | Poll a run for progress and results |
| `GET`  | [`/v1/canvas/{canvas_id}/dag`](/api-reference/endpoints/get-canvas-dag)       | Fetch the canvas block graph        |
| `GET`  | [`/v1/canvas/{canvas_id}/tasks`](/api-reference/endpoints/get-canvas-tasks)   | Fetch the task hierarchy            |
| `GET`  | [`/v1/canvas/{canvas_id}/tasks/{task_id}`](/api-reference/endpoints/get-task) | Fetch a single task                 |

## Want the visual app instead?

Spine Canvas is our hands-on product — a visual multi-agent workspace with its own subscription plans (separate from API credits).

<CardGroup cols={2}>
  <Card title="Spine Canvas docs" icon="window" href="/app/what-is-spine">
    Using Spine Canvas in the browser — blocks, canvases, integrations, agents.
  </Card>

  <Card title="Canvas pricing" icon="users" href="/app/team/pricing">
    Subscription plans and team billing for the visual app.
  </Card>
</CardGroup>
