> ## 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.

# Contracts API — GET /v1/contracts endpoints

> Fetch all Valorant contracts or retrieve a single contract by UUID. Contracts define agent unlock progression and battle pass reward tracks.

The Contracts API exposes the progression systems that reward players for earning XP in Valorant. This includes agent contracts — which unlock agent-specific sprays, player cards, and titles as you play — and the seasonal battle pass, which provides a time-limited reward track of cosmetics and currency. Each contract response includes the full chapter and level structure with rewards and XP costs.

<Note>
  The `User-Agent` header is required for all requests. Use the format `AppName/Version (+URL)` — for example, `MyApp/1.0 (+https://example.com)`.
</Note>

## Endpoints

| Method | Path                   | Description                       |
| ------ | ---------------------- | --------------------------------- |
| GET    | `/v1/contracts`        | Returns all contracts             |
| GET    | `/v1/contracts/{uuid}` | Returns a single contract by UUID |

***

## GET /v1/contracts

Returns an array of all Valorant contracts, including agent contracts and battle passes.

### Request parameters

<ParamField header="User-Agent" type="string" required>
  Identifies your application. Format: `AppName/Version (+URL)`.
</ParamField>

<ParamField query="language" type="string" default="en-US">
  Locale for localized display names. Example: `ar-AE`, `tr-TR`.
</ParamField>

### Example request

<CodeGroup>
  ```bash cURL theme={null}
  curl --request GET \
    --url "https://astra.teamfortuna.xyz/v1/contracts" \
    --header "User-Agent: MyApp/1.0 (+https://example.com)"
  ```

  ```bash cURL with language theme={null}
  curl --request GET \
    --url "https://astra.teamfortuna.xyz/v1/contracts?language=tr-TR" \
    --header "User-Agent: MyApp/1.0 (+https://example.com)"
  ```
</CodeGroup>

### Response

```json theme={null}
{
  "status": 200,
  "data": [
    {
      "uuid": "64314233-457b-c490-8781-14b51bc57999",
      "displayName": "2022 Anımsama Bileti",
      "displayIcon": null,
      "shipIt": false,
      "useLevelVPCostOverride": false,
      "levelVPCostOverride": 0,
      "freeRewardScheduleUuid": null,
      "content": {
        "relationType": null,
        "relationUuid": null,
        "chapters": [
          {
            "isEpilogue": false,
            "levels": [
              {
                "isPurchasableWithVP": false,
                "isPurchasableWithDough": false,
                "reward": {
                  "type": "UObject",
                  "uuid": "4b00c963-4ff3-d147-f8ab-92b31a88c8a2",
                  "amount": 1,
                  "isHighlighted": false
                }
              }
            ],
            "freeRewards": null
          }
        ],
        "premiumRewardScheduleUuid": null,
        "premiumVPCost": 0
      },
      "assetPath": "ShooterGame/Content/Contracts/Events/Ep5_Act3_Recall_EventPass/Contract_Event_Recall_EventPass_DataAssetV2"
    }
  ]
}
```

***

## GET /v1/contracts/{uuid}

Returns a single contract matching the provided UUID.

### Request parameters

<ParamField path="uuid" type="string" required>
  The UUID of the contract to retrieve.
</ParamField>

<ParamField header="User-Agent" type="string" required>
  Identifies your application. Format: `AppName/Version (+URL)`.
</ParamField>

<ParamField query="language" type="string" default="en-US">
  Locale for localized display names.
</ParamField>

### Example request

```bash cURL theme={null}
curl --request GET \
  --url "https://astra.teamfortuna.xyz/v1/contracts/a09dc0e0-4b06-5e5c-0eb4-979e1c8ddf35" \
  --header "User-Agent: MyApp/1.0 (+https://example.com)"
```

***

## Response fields

<ResponseField name="uuid" type="string" required>
  Unique identifier for the contract.
</ResponseField>

<ResponseField name="displayName" type="string" required>
  Localized name of the contract (e.g., `"Gekko Contract"`, `"Ignition: Act I"`).
</ResponseField>

<ResponseField name="displayIcon" type="string">
  URL to the contract's display icon. May be `null` for agent contracts.
</ResponseField>

<ResponseField name="shipIt" type="boolean">
  When `true`, the contract is actively surfaced to players in-game.
</ResponseField>

<ResponseField name="useLevelVPCostOverride" type="boolean">
  Whether the contract uses a VP cost override at the level tier instead of the default.
</ResponseField>

<ResponseField name="levelVPCostOverride" type="number">
  VP cost override value applied when `useLevelVPCostOverride` is `true`.
</ResponseField>

<ResponseField name="freeRewardScheduleUuid" type="string">
  UUID referencing the free reward schedule associated with this contract. May be `null`.
</ResponseField>

<ResponseField name="content" type="object">
  The full progression structure of the contract.

  <Expandable title="content properties">
    <ResponseField name="relationType" type="string">
      The type of entity the contract is associated with. Common values: `"Agent"`, `"Season"`.
    </ResponseField>

    <ResponseField name="relationUuid" type="string">
      UUID of the related entity (e.g., the agent UUID for an agent contract).
    </ResponseField>

    <ResponseField name="chapters" type="object[]">
      Ordered list of contract chapters. Each chapter contains one or more reward levels.

      <Expandable title="chapter properties">
        <ResponseField name="isEpilogue" type="boolean">
          Whether this chapter is an epilogue (bonus rewards beyond the main track).
        </ResponseField>

        <ResponseField name="levels" type="object[]">
          Ordered reward levels within the chapter.

          <Expandable title="level properties">
            <ResponseField name="reward" type="object">
              The reward granted upon completing this level.

              <Expandable title="reward properties">
                <ResponseField name="type" type="string">
                  Reward item type (e.g., `"EquippableSkinLevel"`, `"Currency"`, `"Title"`).
                </ResponseField>

                <ResponseField name="uuid" type="string">
                  UUID of the reward item.
                </ResponseField>

                <ResponseField name="amount" type="number">
                  Quantity of the reward granted.
                </ResponseField>

                <ResponseField name="isHighlighted" type="boolean">
                  Whether this reward is highlighted as a featured milestone.
                </ResponseField>
              </Expandable>
            </ResponseField>

            <ResponseField name="xp" type="number">
              XP required to unlock this level.
            </ResponseField>

            <ResponseField name="vpCost" type="number">
              VP cost to directly purchase this level, bypassing XP requirements.
            </ResponseField>

            <ResponseField name="isPurchasableWithVP" type="boolean">
              Whether this level can be unlocked by spending VP.
            </ResponseField>

            <ResponseField name="isPurchasableWithDough" type="boolean">
              Whether this level can be unlocked with Kingdom Credits (Dough).
            </ResponseField>
          </Expandable>
        </ResponseField>

        <ResponseField name="freeRewards" type="object[]">
          Free rewards included at this chapter tier. `null` if no free rewards exist.
        </ResponseField>
      </Expandable>
    </ResponseField>

    <ResponseField name="premiumRewardScheduleUuid" type="string">
      UUID referencing a premium reward schedule (e.g., for battle pass premium track). May be `null`.
    </ResponseField>

    <ResponseField name="premiumVPCost" type="number">
      VP cost to unlock the premium track for this contract. `0` if no premium track exists.
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="assetPath" type="string">
  Internal Unreal Engine asset path.
</ResponseField>

<Tip>
  Use `content.relationType` and `content.relationUuid` to link a contract back to its associated agent or season using the Agents or Seasons API.
</Tip>
