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

# Maps & Callouts API — GET /v1/maps endpoints

> Fetch all Valorant maps or retrieve a single map by UUID. Returns display name, real-world coordinates, minimap image assets, and named callout locations.

The Maps API gives you access to every playable and practice map in Valorant, including minimap images and normalized callout location data. You can retrieve the full list of maps or look up a specific map by its UUID. Each map object includes display assets, geographic coordinates, minimap scaling multipliers, and an array of named callout regions with their positions on the minimap.

<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/maps`        | Returns all maps             |
| GET    | `/v1/maps/{uuid}` | Returns a single map by UUID |

***

## GET /v1/maps

Returns an array of all Valorant maps, including playable and practice maps.

### 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 and descriptions. Example: `ja-JP`, `de-DE`.
</ParamField>

### Example request

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

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

### Response

```json theme={null}
{
  "status": 200,
  "data": [
    {
      "uuid": "224b0a95-48b9-f703-1bd8-67aca101a61f",
      "displayName": "アビス",
      "narrativeDescription": "",
      "tacticalDescription": "",
      "coordinates": "70° 50' AJ\" N, 9° 00' VX\" W",
      "displayIcon": "https://valmedia.teamfortuna.xyz/maps/224b0a95-48b9-f703-1bd8-67aca101a61f/displayicon.png",
      "listViewIcon": "https://valmedia.teamfortuna.xyz/maps/224b0a95-48b9-f703-1bd8-67aca101a61f/listviewicon.png",
      "listViewIconTall": null,
      "splash": "https://valmedia.teamfortuna.xyz/maps/224b0a95-48b9-f703-1bd8-67aca101a61f/levelsplashscreen.png",
      "stylizedBackgroundImage": "https://valmedia.teamfortuna.xyz/maps/224b0a95-48b9-f703-1bd8-67aca101a61f/stylizedbackgroundimage.png",
      "premierBackgroundImage": null,
      "assetPath": "ShooterGame/Content/Maps/Infinity/Infinity_PrimaryAsset",
      "mapUrl": "/Game/Maps/Infinity/Infinity",
      "xMultiplier": 0.000081,
      "xScalarToAdd": 0.5,
      "yMultiplier": -0.000081,
      "yScalarToAdd": 0.5,
      "callouts": null
    }
  ]
}
```

***

## GET /v1/maps/{uuid}

Returns a single map matching the provided UUID.

### Request parameters

<ParamField path="uuid" type="string" required>
  The UUID of the map 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 and descriptions.
</ParamField>

### Example request

```bash cURL theme={null}
curl --request GET \
  --url "https://astra.teamfortuna.xyz/v1/maps/7eaecc1b-4337-bbf6-6ab9-04b8f06b3319" \
  --header "User-Agent: MyApp/1.0 (+https://example.com)"
```

### Response

```json theme={null}
{
  "status": 200,
  "data": {
    "uuid": "7eaecc1b-4337-bbf6-6ab9-04b8f06b3319",
    "displayName": "Ascent",
    "narrativeDescription": "",
    "tacticalDescription": "",
    "coordinates": "45°26'BF'N,12°20'Q'E",
    "displayIcon": "https://valmedia.teamfortuna.xyz/maps/7eaecc1b-4337-bbf6-6ab9-04b8f06b3319/displayicon.png",
    "listViewIcon": "https://valmedia.teamfortuna.xyz/maps/7eaecc1b-4337-bbf6-6ab9-04b8f06b3319/listviewicon.png",
    "listViewIconTall": null,
    "splash": "https://valmedia.teamfortuna.xyz/maps/7eaecc1b-4337-bbf6-6ab9-04b8f06b3319/levelsplashscreen.png",
    "stylizedBackgroundImage": "https://valmedia.teamfortuna.xyz/maps/7eaecc1b-4337-bbf6-6ab9-04b8f06b3319/stylizedbackgroundimage.png",
    "premierBackgroundImage": null,
    "assetPath": "ShooterGame/Content/Maps/Ascent/Ascent_PrimaryAsset",
    "mapUrl": "/Game/Maps/Ascent/Ascent",
    "xMultiplier": 0.00007,
    "xScalarToAdd": 0.813895,
    "yMultiplier": -0.00007,
    "yScalarToAdd": 0.573242,
    "callouts": null
  }
}
```

***

## Response fields

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

<ResponseField name="displayName" type="string" required>
  The map's localized display name (e.g., `"Ascent"`).
</ResponseField>

<ResponseField name="narrativeDescription" type="string">
  Lore-flavored description. May be `null`.
</ResponseField>

<ResponseField name="tacticalDescription" type="string">
  Short tactical summary, typically indicating the number of bomb sites (e.g., `"2 Sites"`). May be `null`.
</ResponseField>

<ResponseField name="coordinates" type="string">
  Real-world geographic coordinates tied to the map's fictional setting. May be `null`.
</ResponseField>

<ResponseField name="displayIcon" type="string">
  URL to the map's primary display icon image.
</ResponseField>

<ResponseField name="listViewIcon" type="string">
  URL to the map icon used in list views.
</ResponseField>

<ResponseField name="splash" type="string">
  URL to the full-width splash art for the map.
</ResponseField>

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

<ResponseField name="mapUrl" type="string">
  Internal game path used to reference the map.
</ResponseField>

<ResponseField name="xMultiplier" type="number">
  Multiplier used to convert a world-space X coordinate to a normalized minimap X position.
</ResponseField>

<ResponseField name="yMultiplier" type="number">
  Multiplier used to convert a world-space Y coordinate to a normalized minimap Y position.
</ResponseField>

<ResponseField name="xScalarToAdd" type="number">
  Offset added after applying `xMultiplier` to produce the final normalized X coordinate.
</ResponseField>

<ResponseField name="yScalarToAdd" type="number">
  Offset added after applying `yMultiplier` to produce the final normalized Y coordinate.
</ResponseField>

<ResponseField name="callouts" type="object[]">
  Array of named map regions with their minimap positions.

  <Expandable title="callout properties">
    <ResponseField name="regionName" type="string">
      Full callout name (e.g., `"A Site"`, `"Mid Market"`).
    </ResponseField>

    <ResponseField name="superRegionName" type="string">
      Parent region label (e.g., `"A"`, `"Mid"`).
    </ResponseField>

    <ResponseField name="location" type="object">
      Normalized minimap coordinates.

      <Expandable title="location properties">
        <ResponseField name="x" type="number">
          Normalized X position on the minimap image (0.0–1.0).
        </ResponseField>

        <ResponseField name="y" type="number">
          Normalized Y position on the minimap image (0.0–1.0).
        </ResponseField>
      </Expandable>
    </ResponseField>
  </Expandable>
</ResponseField>

<Tip>
  To place a callout marker on a minimap image, multiply the normalized `x` and `y` values by your image's pixel width and height respectively.
</Tip>
