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

# Premier — GET /v1/premier endpoints

> Fetch Valorant Premier conferences and team logos. Conferences are the regional groupings competing teams are placed into; team logos are the icon set teams can pick from.

Premier is Valorant's competitive ladder. Teams are bucketed into regional **conferences** and pick a **team logo** from a curated icon set. Use these endpoints to render conference standings, build a team-creation flow, or display a team's chosen logo alongside its name.

<Tip>
  Both sub-resources support the standard `language` query parameter for localized display names. The conference `key` is a stable identifier (e.g. `na-east`) that will not change across patches — prefer it over `displayName` for keys in your data store.
</Tip>

***

## GET /v1/premier/conferences

Retrieve every Premier conference.

### Query parameters

<ParamField query="language" type="string" default="en-US">
  The locale used for `displayName`. Accepts any Valorant-supported locale, for example `en-US`, `de-DE`, `ja-JP`, or `zh-TW`.
</ParamField>

### Example request

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

  ```bash With language theme={null}
  curl --request GET \
    --url "https://astra.teamfortuna.xyz/v1/premier/conferences?language=de-DE" \
    --header "User-Agent: MyApp/1.0 (+https://example.com)"
  ```
</CodeGroup>

### Response

<ResponseField name="status" type="number" required>
  HTTP status code of the response. `200` indicates success.
</ResponseField>

<ResponseField name="data" type="object[]" required>
  Array of conference objects.

  <Expandable title="data[] properties">
    <ResponseField name="uuid" type="string" required>
      Unique identifier for this conference.
    </ResponseField>

    <ResponseField name="displayName" type="string" required>
      Localized display name of the conference (e.g. `"NA East"`).
    </ResponseField>

    <ResponseField name="key" type="string" required>
      Stable internal key for the conference (e.g. `"na-east"`). Use this for joins instead of `displayName`.
    </ResponseField>

    <ResponseField name="icon" type="string | null">
      URL to the conference icon image. `null` when no icon was extracted.
    </ResponseField>

    <ResponseField name="isSuper" type="boolean" required>
      Whether this conference is a "super" conference (a top-tier grouping that contains other conferences). Defaults to `false`.
    </ResponseField>

    <ResponseField name="assetPath" type="string" required>
      Internal Unreal Engine asset path for this conference.
    </ResponseField>
  </Expandable>
</ResponseField>

### Example response

```json theme={null}
{
  "status": 200,
  "data": [
    {
      "uuid": "1f1d7b1c-2c2a-4d8f-8e0b-3c4d5e6f7a80",
      "displayName": "NA East",
      "key": "na-east",
      "icon": "https://valmedia.teamfortuna.xyz/premier-conferences/1f1d7b1c-2c2a-4d8f-8e0b-3c4d5e6f7a80/icon.png",
      "isSuper": false,
      "assetPath": "ShooterGame/Content/Premier/Conferences/NA_East_PrimaryAsset"
    }
  ]
}
```

***

## GET /v1/premier/conferences/{uuid}

Retrieve a single conference by UUID.

### Path parameters

<ParamField path="uuid" type="string" required>
  UUID of the conference.
</ParamField>

### Query parameters

<ParamField query="language" type="string" default="en-US">
  The locale used for `displayName`.
</ParamField>

### Example request

```bash theme={null}
curl --request GET \
  --url "https://astra.teamfortuna.xyz/v1/premier/conferences/1f1d7b1c-2c2a-4d8f-8e0b-3c4d5e6f7a80" \
  --header "User-Agent: MyApp/1.0 (+https://example.com)"
```

### Response

The response body has the same shape as a single entry in the list endpoint above, wrapped in `{ "status": 200, "data": { ... } }`. Returns `404` when no conference with the given UUID exists.

***

## GET /v1/premier/logos

Retrieve every Premier team logo.

### Query parameters

<ParamField query="language" type="string" default="en-US">
  The locale used for `displayName`. Accepts any Valorant-supported locale.
</ParamField>

### Example request

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

  ```bash With language theme={null}
  curl --request GET \
    --url "https://astra.teamfortuna.xyz/v1/premier/logos?language=ja-JP" \
    --header "User-Agent: MyApp/1.0 (+https://example.com)"
  ```
</CodeGroup>

### Response

<ResponseField name="status" type="number" required>
  HTTP status code of the response. `200` indicates success.
</ResponseField>

<ResponseField name="data" type="object[]" required>
  Array of team logo objects.

  <Expandable title="data[] properties">
    <ResponseField name="uuid" type="string" required>
      Unique identifier for this logo.
    </ResponseField>

    <ResponseField name="displayName" type="string" required>
      Localized display name of the logo.
    </ResponseField>

    <ResponseField name="iconName" type="string | null">
      Internal icon identifier used by the game client.
    </ResponseField>

    <ResponseField name="displayIcon" type="string | null">
      URL to the logo image.
    </ResponseField>

    <ResponseField name="assetPath" type="string" required>
      Internal Unreal Engine asset path for this logo.
    </ResponseField>
  </Expandable>
</ResponseField>

### Example response

```json theme={null}
{
  "status": 200,
  "data": [
    {
      "uuid": "a8b9c0d1-e2f3-4a5b-6c7d-8e9f0a1b2c3d",
      "displayName": "Aegis",
      "iconName": "TX_TeamLogo_Aegis",
      "displayIcon": "https://valmedia.teamfortuna.xyz/premier-team-logos/a8b9c0d1-e2f3-4a5b-6c7d-8e9f0a1b2c3d/displayicon.png",
      "assetPath": "ShooterGame/Content/Premier/TeamLogos/Aegis_PrimaryAsset"
    }
  ]
}
```

***

## GET /v1/premier/logos/{uuid}

Retrieve a single team logo by UUID.

### Path parameters

<ParamField path="uuid" type="string" required>
  UUID of the logo.
</ParamField>

### Query parameters

<ParamField query="language" type="string" default="en-US">
  The locale used for `displayName`.
</ParamField>

### Example request

```bash theme={null}
curl --request GET \
  --url "https://astra.teamfortuna.xyz/v1/premier/logos/a8b9c0d1-e2f3-4a5b-6c7d-8e9f0a1b2c3d" \
  --header "User-Agent: MyApp/1.0 (+https://example.com)"
```

### Response

The response body has the same shape as a single entry in the list endpoint above, wrapped in `{ "status": 200, "data": { ... } }`. Returns `404` when no logo with the given UUID exists.

***

## Recoloring a logo

The `displayIcon` returned by `/v1/premier/logos` is a base PNG painted with marker colors that map to the team's customization slots. Substitute each marker with the team's chosen color to render the customized logo.

| Marker color | Meaning                               |
| ------------ | ------------------------------------- |
| Black        | Do not replace — keep as-is in output |
| Blue         | Outline                               |
| Red          | Primary color                         |
| Green        | Secondary color                       |

The team customization payload uses Unreal Engine's normalized color format (`(R=…,G=…,B=…,A=…)` with each channel in `[0, 1]`). Convert it to 8-bit RGB before substituting, or pass plain RGB tuples directly.

<Tip>
  When matching marker pixels, allow a tolerance band rather than an exact equality check. Anti-aliased edges sit between the marker color and the surrounding pixels — a band that's too tight leaves colored fringes, one that's too loose recolors detail you wanted to keep.
</Tip>
