Open Application Platform Docs

Map tiles (beta)

Map keys and short-lived tokens for your own apps and pages; tiles are billed per thousand.

map.tiles Beta tile_1k

sMap SDKs

Tiles are read by the sMap SDKs with a map key or a map token. Installation, map keys and an example for each platform:

sMap · sMap integration · SDK downloads

How to call it

REST

POST /v1/map/token

GraphQL

query openMapToken

MCP

open_map_token

Issue a short-lived map token for your own apps and pages (map tiles). Give ttl_seconds from 60 to 86400 (default 3600). The answer has the token, when it expires and the map service address. The call itself bills nothing; tiles loaded with the token are billed per thousand.

Request schema

Generated from the same validation rules the endpoint runs, so a field cannot be documented without being validated.

POST /v1/map/token

{
    "type": "object",
    "properties": {
        "ttl_seconds": {
            "type": [
                "integer",
                "null"
            ],
            "minimum": 60,
            "maximum": 86400
        }
    },
    "additionalProperties": false
}

Request example

{
    "ttl_seconds": 3600
}

Response

What a successful call returns: the schema of `data` and `meta`, with a description of each field, followed by an example response from a real call.

POST /v1/map/token

Response schema

{
    "description": "A short-lived token for your apps and pages to load map tiles with. The call bills nothing; the tiles are billed per thousand.",
    "data": {
        "type": "object",
        "properties": {
            "token": {
                "type": "string",
                "description": "The token. Send it as `Authorization: Bearer <token>` or give it to the map SDK as its token."
            },
            "expires_at": {
                "type": "string",
                "format": "date-time",
                "description": "When the token stops working (UTC)."
            },
            "base_url": {
                "type": "string",
                "description": "The map service address the token is for."
            },
            "subject": {
                "type": "string",
                "description": "Whom the tiles loaded with the token are counted for: `open:` and your account number."
            }
        },
        "required": [
            "token",
            "expires_at",
            "base_url",
            "subject"
        ]
    },
    "meta": {
        "type": "object",
        "properties": {
            "ttl_seconds": {
                "type": "integer",
                "description": "How long the token is valid, in seconds."
            }
        }
    }
}

Response example

{
    "request_id": "req_01k8zr4n6p8q0s2u4w6y8a0c3e",
    "capability": "map.tiles",
    "billing": {
        "unit": "tile_1k",
        "quantity": 0,
        "counted": true
    },
    "data": {
        "token": "sm1.eyJzdWIiOiJvcGVuOjQyMTciLCJleHAiOjE3OTMxMjQ4MDB9.Q2v8m1Xb3dKp7Rz0Yt5Wn9Lc4Hs6Fg2Ja8Ue1Oi3Pk",
        "expires_at": "2026-10-27T15:00:00Z",
        "base_url": "https://maps.example.com",
        "subject": "open:4217"
    },
    "meta": {
        "ttl_seconds": 3600
    }
}

What it costs

Thousands of map tiles, charged fractionally.

Every billable response carries a billing block with the unit, the quantity and how the quantity was derived.

Errors it can return

Status Code Description
401 TOKEN_INVALID Unknown or revoked API token.
401 TOKEN_MISSING No API token. Send Authorization: Bearer <your token>.
402 QUOTA_EXHAUSTED The included allowance for this capability is used up for the current period.
403 CAPABILITY_NOT_ENABLED This capability is not enabled for your account. See :doc to enable it.
403 CAPABILITY_NOT_GRANTED_TO_KEY Your account has this capability, but this API key was not granted it.
403 OPEN_API_DISABLED Open Platform access is not enabled for this account.
413 REQUEST_TOO_LARGE The request body is too large. Upload large payloads as a reusable resource instead.
422 VALIDATION_FAILED The request failed validation. See details.
429 RATE_LIMITED Too many requests. Please retry after the indicated delay.
500 INTERNAL_ERROR An unexpected error occurred. Quote the request_id when contacting support.
502 ENGINE_UNAVAILABLE The routing engine is temporarily unreachable. Please retry.