One-call signup: issues a provisional key and emails a magic verification link.
Request
- Base URL: https://api.mapmap.ai
- URL: https://api.mapmap.ai/v1/keys
- Auth: none declared
Request body
Origins this key may be called from, e.g. ["https://app.example.com", "https://*.staging.example.com"]. At most 20; each is scheme://host[:port] with no path, and a wildcard may only stand for a single subdomain label. Omit for an unrestricted key, the default, and what a server-to-server integration wants.
Email-less issuance only: an opaque, stable id for the app install (the apps' install id). Never stored as sent; only its hash is used, as a per-install daily issuance budget beside the per-IP one. At most 128 characters. Optional, and ignored when an email is given.
Email address; becomes the (lowercased) identity of the key. Optional ONLY for the MapMap apps' own labels ([identity::EMAIL_OPTIONAL_LABELS]), which then get an email-less anonymous key; every other caller must send one.
Optional human-readable label for this key (shown on the account page, e.g. "nightly-dispatch-agent"). Defaults to the email.
"full" (the default) or "maps". A maps key may draw tiles, read styles/fonts/sprites, geocode and read its own status, and nothing else.
Optional channel tag naming where this signup came from ("chatgpt", "agent-recipe", "cursor" …). Lowercased and restricted to [a-z0-9._-], at most 40 characters; anything else is dropped, never rejected, attribution must not break signups.
Response
Provisional key issued; the key field is shown once only
The canonical origin allow-list stored for this key, echoed back so the caller can see exactly what was accepted (ports and case are normalised, duplicates dropped). Absent on unrestricted keys.
Call allowance: in total until verified for a provisional key, per calendar month for anonymous and verified keys.
Zero-authority claim pointer for the HUMAN behind this agent: the page shows a masked email and offers to send a sign-in link. Safe to print in chat or logs; it grants nothing by itself. Present only when the deployment has a console (SN_CONSOLE_URL).
Sentence for the agent to show its human verbatim (contains the claim URL, never the key). Present only alongside claim_url.
Hours until the provisional key expires unverified; 0 for keys that do not expire.
The full API key (snk_…). Shown once, never again.
Key id (UUID), for /v1/keys/self correlation and admin ops.
"maps" when the key was minted map-scoped; absent for the full surface.
provisional at an ordinary issuance; anonymous for an email-less app key; verified for the store-review identity.
Terms-of-service URL that was accepted.
What happens next.
Changes
No recorded changes to this operation across all 1 revision of this API.