---
title: "API keys API"
description: "Administrative API for managing MapTiler Cloud API keys."
---

> For AI agents: a documentation index is available at [/llms.txt](https://docs.maptiler.com/llms.txt). Markdown versions of all pages are available by appending .md to any URL.

# API keys API

## API keys API reference

  Scalar API Reference

-   [
    
    Introduction
    
    ](#description/introduction)
-   [
    
    API keys
    
    ](#tag/api-keys)
    
    Close Group - API keys
    
    -   [
        
        List API keys belonging to account
        
        HTTP Method:  GET](#tag/api-keys/GET/api_keys)
    -   [
        
        Create new key
        
        HTTP Method:  POST](#tag/api-keys/POST/api_keys)
    -   [
        
        Get key
        
        HTTP Method:  GET](#tag/api-keys/GET/api_keys/{key_id})
    -   [
        
        Delete given key
        
        HTTP Method:  DEL](#tag/api-keys/DELETE/api_keys/{key_id})
    -   [
        
        Update given key
        
        HTTP Method:  POST](#tag/api-keys/POST/api_keys/{key_id}/change_settings)

[Powered by Scalar](https://www.scalar.com)

v1.0

OpenAPI 3.0.2

# MapTiler Service API

[Support](mailto:support@maptiler.com)

[](https://docs.maptiler.com/support/requests/)

[Terms of Service](https://www.maptiler.com/terms/)

Server

Server:https://service.maptiler.com/v1

MapTiler Service API

## 

AuthenticationRequired

Selected Auth Type: token

<table class="mb-0 grid min-h-8 auto-rows-auto" role="presentation" style="grid-template-columns:1fr;"><tbody><tr class="group contents"><td class="box-content min-h-8 min-w-8 border-l-0 border-t border-b-0 border-r flex text-base/5 last:border-r-0 group-last:border-b-transparent p-0 m-0 relative max-h-[auto] group-[.alert]:bg-b-alert group-[.error]:bg-b-danger" style="" aria-label="Your service token from the &quot;Credentials&quot; section of your MapTiler account. Example: &quot;Token YOUR_SERVICE_TOKEN&quot;"><div class="group/summary flex gap-0.5 flex-row items-baseline auth-description bg-b-1 text-c-2 min-w-0 flex-1 px-3 py-1.25" style=""><div class="markdown line-clamp-(--markdown-clamp) markdown-summary truncate" style="--markdown-clamp:1;" controlled="false" modelvalue="false" truncated="false" id="scalar-refs-0-8"><p>Your service token from the "Credentials" section of your MapTiler account. Example: "Token YOUR_SERVICE_TOKEN"</p></div></div></td></tr><tr class="group contents"><td class="box-content max-h-8 min-h-8 min-w-8 border-l-0 border-b-0 border-r text-base/5 last:border-r-0 group-last:border-b-transparent p-0 m-0 relative flex border-t group-[.alert]:bg-b-alert group-[.error]:bg-b-danger" style="" data-v-a6f4752a=""><div class="text-c-1 flex items-center pr-0 pl-3" for="scalar-refs-0-9" data-v-a6f4752a=""><label for="scalar-refs-0-9">Name </label>:</div><div class="relative flex min-w-0 flex-1" data-v-a6f4752a=""><div id="scalar-refs-0-9" class="text-c-1 disabled:text-c-2 peer w-full min-w-0 border-none -outline-offset-1 code-input-lite group/code-input-lite peer relative w-full leading-[1.44] -outline-offset-1 has-[:focus-visible]:rounded-[4px] has-[:focus-visible]:outline code-input-lite--empty" data-v-4dfd05a3=""><div aria-autocomplete="list" class="code-input-lite__editor" contenteditable="true" data-placeholder="api-key" role="combobox" spellcheck="false" data-v-4dfd05a3=""></div></div></div></td></tr><tr class="group contents"><td class="box-content max-h-8 min-h-8 min-w-8 border-l-0 border-t border-b-0 border-r text-base/5 last:border-r-0 group-last:border-b-transparent p-0 m-0 relative flex group-[.alert]:bg-b-alert group-[.error]:bg-b-danger" style="" data-v-a6f4752a=""><div class="text-c-1 flex items-center pr-0 pl-3" for="scalar-refs-0-10" data-v-a6f4752a=""><label for="scalar-refs-0-10">Value </label>:</div><div class="relative flex min-w-0 flex-1" data-v-a6f4752a=""><input placeholder="QUxMIFlPVVIgQkFTRSBBUkUgQkVMT05HIFRPIFVT" id="scalar-refs-0-10" autocomplete="off" class="text-c-1 disabled:text-c-2 peer w-full min-w-0 border-none px-2 py-1.25 -outline-offset-1 scalar-password-input" data-1p-ignore="" spellcheck="false" type="text" value="" data-v-a6f4752a=""></div><button aria-disabled="false" type="button" class="scalar-icon-button grid aspect-square cursor-pointer scalar-button-ghost bg-transparent text-c-2 active:text-c-1 hover:text-c-1 size-8 m-1 -outline-offset-2 rounded-lg -ml-.5 mr-1.25 h-6 w-6 self-center p-1.25" style="" data-testid="data-table-password-toggle" data-v-a6f4752a=""><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 256" fill="currentColor" width="1em" height="1em" aria-hidden="true" role="presentation" class="size-full" style=""><g><path d="M247.31,124.76c-.35-.79-8.82-19.58-27.65-38.41C194.57,61.26,162.88,48,128,48S61.43,61.26,36.34,86.35C17.51,105.18,9,124,8.69,124.76a8,8,0,0,0,0,6.5c.35.79,8.82,19.57,27.65,38.4C61.43,194.74,93.12,208,128,208s66.57-13.26,91.66-38.34c18.83-18.83,27.3-37.61,27.65-38.4A8,8,0,0,0,247.31,124.76ZM128,192c-30.78,0-57.67-11.19-79.93-33.25A133.47,133.47,0,0,1,25,128,133.33,133.33,0,0,1,48.07,97.25C70.33,75.19,97.22,64,128,64s57.67,11.19,79.93,33.25A133.46,133.46,0,0,1,231.05,128C223.84,141.46,192.43,192,128,192Zm0-112a48,48,0,1,0,48,48A48.05,48.05,0,0,0,128,80Zm0,80a32,32,0,1,1,32-32A32,32,0,0,1,128,160Z"></path></g></svg><span class="sr-only">Show Password</span></button></td></tr></tbody></table>

Client Libraries

Shell

Ruby

Node.js

PHP

Python

MoreSelect from all clients

Shell Curl

## API keys

​Copy link

API keys Operations

-   get/api\_keys
-   post/api\_keys
-   get/api\_keys/{key\_id}
-   delete/api\_keys/{key\_id}
-   post/api\_keys/{key\_id}/change\_settings

### List API keys belonging to account

​Copy link

Auth Required

Query Parameters

-   cursorCopy link to cursor
    
    Type: string • base64
    
    Page cursor
    
-   limitCopy link to limit
    
    Type: integer
    
    min:  
    
    10
    
    max:  
    
    100
    
    Default
    
    50
    
    Page limit
    

Responses

-   200
    
    application/json
    

Request Example for get/api\_keys

Shell Curl

```curl
curl https://service.maptiler.com/v1/api_keys
```

Copy

Copy

Test Request(get /api\_keys)

Status: 200

Show Schema 

```json
{
  "cursor": null,
  "total_count": 1,
  "items": [
    {
      "id": "123e4567-e89b-12d3-a456-426614174000",
      "token": "string",
      "name": "string",
      "description": null,
      "user_agent": null,
      "origins": [
        "string"
      ],
      "created": "2026-08-31T17:00:00.000Z",
      "changed": "2026-08-31T17:00:00.000Z"
    }
  ]
}
```

JSONCopy

JSONCopy

### Create new key

​Copy link

Auth Required

Body·APIKeySettings

application/json

-   descriptionCopy link to description
    
    Type: string | null
    
-   nameCopy link to name
    
    Type: string | null
    
    Will be generated automatically unless provided explicitly.
    
-   originsCopy link to origins
    
    Type: array string\[\]
    
    Specifies which HTTP origins are allowed to access the API.
    
    For example \[`mydomain.com`\] will ensure, that only requests coming from `mydomain.com` will be processed. Use `*.mydomain.com` to allow all subdomains.
    
    Ensure your application sends the `Origin` or `Referer` header; otherwise, requests are treated as unknown and will be rejected if any origin is specified.
    
    Use `?` placeholder to explicitly allow unknown origins.
    
-   user\_agentCopy link to user\_agent
    
    Type: string | null
    
    Processes only requests where the `User-Agent` HTTP header contains this exact, case-sensitive substring.
    
    Wildcards are not supported; only a single string is allowed.
    
    Useful for increasing security of your key used in custom mobile or desktop applications.
    
    Leave empty to allow requests from any user-agent.
    

Responses

-   200
    
    application/json
    

Request Example for post/api\_keys

Shell Curl

```curl
curl https://service.maptiler.com/v1/api_keys \
  --request POST \
  --header 'Content-Type: application/json' \
  --data '{
  "name": null,
  "description": null,
  "user_agent": null,
  "origins": [
    ""
  ]
}'
```

cURLCopy

cURLCopy

Test Request(post /api\_keys)

Status: 200

Show Schema 

```json
{
  "id": "123e4567-e89b-12d3-a456-426614174000",
  "token": "string",
  "name": "string",
  "description": null,
  "user_agent": null,
  "origins": [
    "string"
  ],
  "created": "2026-08-31T17:00:00.000Z",
  "changed": "2026-08-31T17:00:00.000Z"
}
```

JSONCopy

JSONCopy

### Get key

​Copy link

Auth Required

Path Parameters

-   key\_idCopy link to key\_id
    

Responses

-   200
    
    application/json
    

Request Example for get/api\_keys/_{key\_id}_

Shell Curl

```curl
curl 'https://service.maptiler.com/v1/api_keys/{key_id}'
```

Copy

Copy

Test Request(get /api\_keys/{key\_id})

Status: 200

Show Schema 

```json
{
  "id": "123e4567-e89b-12d3-a456-426614174000",
  "token": "string",
  "name": "string",
  "description": null,
  "user_agent": null,
  "origins": [
    "string"
  ],
  "created": "2026-08-31T17:00:00.000Z",
  "changed": "2026-08-31T17:00:00.000Z"
}
```

JSONCopy

JSONCopy

### Delete given key

​Copy link

Auth Required

Path Parameters

-   key\_idCopy link to key\_id
    

Responses

-   200
    
    Successfully deleted
    

Request Example for delete/api\_keys/_{key\_id}_

Shell Curl

```curl
curl 'https://service.maptiler.com/v1/api_keys/{key_id}' \
  --request DELETE
```

cURLCopy

cURLCopy

Test Request(delete /api\_keys/{key\_id})

Status: 200

No Body

Successfully deleted

### Update given key

​Copy link

Auth Required

Path Parameters

-   key\_idCopy link to key\_id
    

Body·APIKeySettings

application/json

-   descriptionCopy link to description
    
    Type: string | null
    
-   nameCopy link to name
    
    Type: string | null
    
    Will be generated automatically unless provided explicitly.
    
-   originsCopy link to origins
    
    Type: array string\[\]
    
    Specifies which HTTP origins are allowed to access the API.
    
    For example \[`mydomain.com`\] will ensure, that only requests coming from `mydomain.com` will be processed. Use `*.mydomain.com` to allow all subdomains.
    
    Ensure your application sends the `Origin` or `Referer` header; otherwise, requests are treated as unknown and will be rejected if any origin is specified.
    
    Use `?` placeholder to explicitly allow unknown origins.
    
-   user\_agentCopy link to user\_agent
    
    Type: string | null
    
    Processes only requests where the `User-Agent` HTTP header contains this exact, case-sensitive substring.
    
    Wildcards are not supported; only a single string is allowed.
    
    Useful for increasing security of your key used in custom mobile or desktop applications.
    
    Leave empty to allow requests from any user-agent.
    

Responses

-   200
    
    application/json
    

Request Example for post/api\_keys/_{key\_id}_/change\_settings

Shell Curl

```curl
curl 'https://service.maptiler.com/v1/api_keys/{key_id}/change_settings' \
  --request POST \
  --header 'Content-Type: application/json' \
  --data '{
  "name": null,
  "description": null,
  "user_agent": null,
  "origins": [
    ""
  ]
}'
```

cURLCopy

cURLCopy

Test Request(post /api\_keys/{key\_id}/change\_settings)

Status: 200

Show Schema 

```json
{
  "id": "123e4567-e89b-12d3-a456-426614174000",
  "token": "string",
  "name": "string",
  "description": null,
  "user_agent": null,
  "origins": [
    "string"
  ],
  "created": "2026-08-31T17:00:00.000Z",
  "changed": "2026-08-31T17:00:00.000Z"
}
```

JSONCopy

JSONCopy

![](https://docs.maptiler.com/assets/img/open-api.png)

Using the OpenAPI Specification?

Get the [openapi.yaml](https://docs.maptiler.com/_data/cloud/admin-api/openapi.yml)
