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

# Quickstart

> Getting started with Seltz Fetch

Fetch turns a URL into LLM-ready Markdown. Send up to 20 in one call; they are
fetched concurrently, so a batch takes about as long as its slowest page.

<CodeGroup>
  ```python Python theme={null}
  from seltz import FetchStatus, Seltz

  client = Seltz(api_key="your-api-key")

  response = client.fetch(["https://example.com/"])

  for result in response.results:
      if result.status == FetchStatus.FETCH_STATUS_OK:
          print(result.markdown)
  ```

  ```typescript TypeScript theme={null}
  import { FetchStatus, Seltz } from "seltz";

  const client = new Seltz({ apiKey: "your-api-key" });

  const response = await client.fetch({ urls: ["https://example.com/"] });

  for (const result of response.results) {
    if (result.status === FetchStatus.OK) {
      console.log(result.markdown);
    }
  }
  ```

  ```bash cURL theme={null}
  curl -X POST https://api.seltz.ai/v1/fetch \
    -H "x-api-key: $SELTZ_API_KEY" \
    -H "Content-Type: application/json" \
    -d '{"urls": ["https://example.com/"]}'
  ```
</CodeGroup>

That is a complete request. `tier` selects the price and resolves to `"pro"`
when omitted, so there is nothing else to send.

The response holds one result per requested URL, in the order requested. A page
that could not be fetched is still in there, with `status = "error"` — see
[Handle errors](/fetch/guides/handle-errors).

Give each URL a shorter budget with `timeout_ms`. It applies **per URL**, not
to the batch.

<CodeGroup>
  ```python Python theme={null}
  response = client.fetch(
      ["https://example.com/", "https://example.org/"],
      timeout_ms=15000,
  )

  for result in response.results:
      print(result.requested_url, result.final_url, result.http_status_code)
  ```

  ```typescript TypeScript theme={null}
  const response = await client.fetch({
    urls: ["https://example.com/", "https://example.org/"],
    timeoutMs: 15000,
  });

  for (const result of response.results) {
    console.log(result.requestedUrl, result.finalUrl, result.httpStatusCode);
  }
  ```

  ```bash cURL theme={null}
  curl -X POST https://api.seltz.ai/v1/fetch \
    -H "x-api-key: $SELTZ_API_KEY" \
    -H "Content-Type: application/json" \
    -d '{
      "urls": ["https://example.com/", "https://example.org/"],
      "timeout_ms": 15000
    }'
  ```
</CodeGroup>

## Next steps

To learn more about Seltz Fetch, check out the following topics:

* [Concepts](/fetch/concepts) — Requests, results and formats
* [Handle errors](/fetch/guides/handle-errors) — Telling a rejected request from a failed page
* [Reference](/fetch/reference) — Endpoint, SDK methods, limits and errors
