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

# Quickstart: make your first Astra API call

> Learn how to make your first Astra API call, set the required User-Agent header, and fetch Valorant game data in under 5 minutes.

This guide walks you through making your first requests to the Astra API. You will set the required `User-Agent` header, retrieve the current game version, and list all agents — giving you the foundation to explore any other endpoint in the API.

<Steps>
  <Step title="Set your User-Agent">
    Every request to Astra must include a `User-Agent` header. Requests without it — or with an empty value — will receive a `403 Forbidden` response.

    The header must follow this format:

    ```
    {AppName}/{Version} (+{URL})
    ```

    * **AppName** — alphanumeric characters and hyphens only, case-insensitive (e.g. `my-app`, `ValorantTracker`)
    * **Version** — semver recommended (e.g. `1.0`, `1.2.3`)
    * **URL** — optional info page for your application

    Example header value:

    ```
    my-app/1.0.0 (+https://example.com)
    ```

    To pass this header with curl, use the `-H` flag:

    ```bash theme={null}
    curl -H "User-Agent: my-app/1.0.0 (+https://example.com)" \
      https://astra.teamfortuna.xyz/v1/version
    ```
  </Step>

  <Step title="Fetch the game version">
    The `/v1/version` endpoint returns metadata about the current Valorant build. It is a good first call to verify your setup is working.

    ```bash theme={null}
    curl -H "User-Agent: my-app/1.0.0 (+https://example.com)" \
      https://astra.teamfortuna.xyz/v1/version
    ```

    Example response:

    ```json theme={null}
    {
      "status": 200,
      "data": {
        "manifestId": "...",
        "branch": "release-X.XX",
        "version": "XX.XX.XX.XXXXX",
        "buildVersion": "XX",
        "engineVersion": "4.XX.X-...",
        "riotClientVersion": "release-XX.XX.XX.XXXX",
        "riotClientBuild": "XXXX...",
        "buildDate": "20XX-XX-XX"
      }
    }
    ```

    A `status` of `200` in the response body confirms the request succeeded. All Astra responses wrap their payload in a `data` field alongside this status code.
  </Step>

  <Step title="List all agents">
    The `/v1/agents` endpoint returns an array of all playable agents. You can pass a `language` query parameter to receive display text in your preferred locale.

    ```bash theme={null}
    curl -H "User-Agent: my-app/1.0.0 (+https://example.com)" \
      "https://astra.teamfortuna.xyz/v1/agents?language=en-US"
    ```

    Example response:

    ```json theme={null}
    {
      "status": 200,
      "data": [
        {
          "uuid": "e370fa57-4757-3604-3648-499e1f642d3f",
          "displayName": "Gekko",
          "description": "Gekko the Angeleno leads a tight-knit crew of calamitous creatures...",
          "role": {
            "uuid": "1b47567f-8f7b-444b-aae3-b0c634622d10",
            "displayName": "Initiator",
            "description": "Initiators challenge angles by setting up their team to push forward."
          }
        }
      ]
    }
    ```

    Each agent object in the `data` array includes a `uuid`, `displayName`, `description`, and a nested `role` object. The full response also includes ability details, portrait image URLs, and more.
  </Step>

  <Step title="Fetch a single resource by UUID">
    Once you have a UUID from a list endpoint, you can fetch that specific resource directly. Append the UUID to the endpoint path:

    ```bash theme={null}
    curl -H "User-Agent: my-app/1.0.0 (+https://example.com)" \
      https://astra.teamfortuna.xyz/v1/agents/e370fa57-4757-3604-3648-499e1f642d3f
    ```

    This pattern applies across the API — list endpoints return arrays with UUIDs, and individual endpoints accept a UUID in the path to return a single item. Use this to avoid fetching entire collections when you only need one record.
  </Step>
</Steps>

<Tip>
  Pass `?language=all` to receive localized display text for all supported languages at once. This is useful when you want to store or serve data in multiple locales without making separate requests per language.
</Tip>

## Next steps

<CardGroup cols={2}>
  <Card title="User-Agent header" icon="shield" href="/authentication">
    Learn more about the User-Agent format rules and how to handle 403 responses.
  </Card>

  <Card title="Localization" icon="globe" href="/concepts/localization">
    Understand how to use the language parameter and work with the all locale.
  </Card>

  <Card title="Agents reference" icon="user" href="/api-reference/agents">
    Explore every field returned by the agents endpoints.
  </Card>
</CardGroup>
