Get started

Rate limits

Markdown
LimitValue
Requests per key300 per minute
Requests per creator, all keys together5,000 per hour
Photo uploads per key60 per minute; a batch counts each file
Link checks per guide12 check_links calls per hour
JSON body or MCP message2 MB
Photo6 MB and 6,000 px per side
Batch upload10 files and 19 MB per request
Spots per upsert_spots call25

Lists inside a row have their own caps (12 links, 30 fees, 20 restrictions per spot and so on); the field reference states each one.

When you hit a limit

A request over a limit answers 429 rate_limited with a Retry-After header (seconds) and retryAfterMs in the error body. Wait that long, then continue.

Over MCP, the request limits refuse the HTTP request itself: status 429, the same Retry-After header, and a JSON-RPC error -32000 whose data.code is rate_limited. The per-guide link check limit comes back as a tool error instead (Error rate_limited: ...); wait a few minutes before calling check_links again.

  • Never retry in a tight loop; the wait only grows.
  • Batch writes: upsert_spots takes 25 spots, upload_media_batch takes 10 photos.
  • Read once, then write: a guide's spots, chapters and places each come back from one list call.
  • Resize photos to 2,048 px and compress them before uploading; the server does the rest.