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

# Quickstart

> First search in under a minute.

<Note>
  Lightdrift is in private beta. If you don't have an API key yet, sign up at [lightdrift.ai/sign-up](https://lightdrift.ai/sign-up) and create one in the dashboard.

  Default photo searches now use Voyage embeddings and caption reranking, without waiting for our legacy GPU service to warm up. All search modes use the Voyage index. See [Search](/guides/search) for modes and retry behavior.
</Note>

<Tip>
  Using an MCP client such as Claude Code, Cursor, or Claude? Skip the key: add `https://lightdrift.ai/mcp` and sign in when it asks. Per-client commands are on [Connect Images MCP](/guides/images-mcp).
</Tip>

<Steps>
  <Step title="Get an API key">
    Sign up at [lightdrift.ai/sign-up](https://lightdrift.ai/sign-up) and create a key in the dashboard. Pricing is per query — no seats, no minimums.
  </Step>

  <Step title="Make your first search">
    Pass your key in the `X-API-Key` header and describe what you need:

    <CodeGroup>
      ```bash cURL theme={null}
      curl -X POST https://api.lightdrift.ai/v1/search \
        -H "X-API-Key: $LIGHTDRIFT_API_KEY" \
        -H "Content-Type: application/json" \
        -d '{"query": "a spanish shawl nudibranch on a reef", "k": 5}'
      ```

      ```python Python theme={null}
      import requests

      r = requests.post(
          "https://api.lightdrift.ai/v1/search",
          headers={"X-API-Key": LIGHTDRIFT_API_KEY},
          json={"query": "a spanish shawl nudibranch on a reef", "k": 5},
      )
      for hit in r.json()["results"]:
          print(hit["title"], hit["file"], hit["rights"]["license"])
      ```

      ```javascript JavaScript theme={null}
      const r = await fetch("https://api.lightdrift.ai/v1/search", {
        method: "POST",
        headers: {
          "X-API-Key": process.env.LIGHTDRIFT_API_KEY,
          "Content-Type": "application/json",
        },
        body: JSON.stringify({ query: "a spanish shawl nudibranch on a reef", k: 5 }),
      });
      const { results } = await r.json();
      ```
    </CodeGroup>
  </Step>

  <Step title="Read the rights answer">
    Every result carries a `rights` object — license, permission flags, a ready-to-use attribution string, and how the file is delivered:

    ```json theme={null}
    {
      "license": "cc-by",
      "license_verbatim": "CC BY 4.0",
      "commercial": true,
      "attribution_required": true,
      "attribution": "\"Spanish shawl (Flabellina iodinea)\" by anudibranchmom, inat, CC BY",
      "provenance_url": "https://www.inaturalist.org/photos/41290763",
      "basis": "as-declared by source; verify for critical use"
    }
    ```

    See [Rights answers](/guides/rights) for the full field reference and the posture behind it.
  </Step>

  <Step title="Use the file">
    `file` is a tracked URL: a `GET` returns `302` to a signed download link valid for one hour, so follow redirects. `thumb` is the same with `?v=thumb` for a 512px preview. Both are tied to the `query_id` they came from.
  </Step>

  <Step title="Connect your coding agent (optional)">
    Working with Cursor, Claude Code, or another MCP client? Add this docs site as an MCP server so your agent can look up Lightdrift usage itself:

    ```bash theme={null}
    claude mcp add --transport http lightdrift-docs https://docs.lightdrift.ai/mcp
    ```

    See [Connect Docs MCP](/guides/docs-mcp) for setup in other clients and troubleshooting.
  </Step>
</Steps>

## Next

<CardGroup cols={2}>
  <Card title="Search guide" icon="magnifying-glass" href="/guides/search">
    Filters, similar-image expansion, file delivery, and the patterns that work — with real responses.
  </Card>

  <Card title="Use with agents" icon="robot" href="/guides/agents">
    Give your agent the whole engine as a tool.
  </Card>
</CardGroup>
