Build around your next ticket.

Search events, watch availability and manage your alerts from an app or an AI client. REST and MCP use the same account, permissions and watch limits.

The API never buys tickets. Nothing here can add to a basket.

Authentication and scopes

Create a named API key in Settings → Developer access. Copy it when it appears: the full key is shown once. Send it in the Authorization: Bearer <your key> header. Session cookies do not authenticate API or MCP requests. Never put a key in a URL.

Read only keys can search, inspect availability, read your watches and channels, and resolve seller URLs. Resolving can add catalogue data but changes no user state. Read and write keys can also create, edit, pause, resume and cancel watches and request support for new events.

Use a separate key for each client. You can have ten live keys. Revoke a key in settings to stop access immediately.

curl -H "Authorization: Bearer <your key>" https://ticket.watch/api/v1/watches

Rate limits

Each key gets 120 reads, 30 writes and 10 URL resolutions per minute, shared between REST and MCP. A refusal returns status 429 with a Retry-After header; MCP tools report the same retry guidance.

Watch prices use pounds on input and output. Listing observations use pence. Failed checks never mean sold out: listings with no successful observation have latest: null. foundAt is currently null because a found timestamp is not stored. Watch lists include active, paused and found watches by default; use include_ended=true to include cancelled and expired watches.

REST endpoints

JSON requests and responses under /api/v1. Download the OpenAPI 3.1 document for schemas, parameters and response definitions. API discovery and this document are public.

Method / endpointPurpose
GET/api/v1/eventsSearch events to watch for ticket alerts.
GET/api/v1/events/{slug}Read event details and successful availability observations.
GET/api/v1/productions/{slug}Read a production and its upcoming performances.
POST/api/v1/resolveResolve a seller URL; may add catalogue data, never user state. Read scope suffices.
GET/api/v1/watchesList the caller's watches.
POST/api/v1/watchesCreate a ticket availability watch, or update an existing watch for the same target and quantity.
GET/api/v1/watches/{id}Read one owned watch.
PATCH/api/v1/watches/{id}Update watch filters. Prices are in pounds.
POST/api/v1/watches/{id}/pausepause an owned watch. An invalid or repeated transition returns not found without changing the watch.
POST/api/v1/watches/{id}/resumeresume an owned watch. An invalid or repeated transition returns not found without changing the watch.
POST/api/v1/watches/{id}/cancelcancel an owned watch. An invalid or repeated transition returns not found without changing the watch.
GET/api/v1/watches/{id}/alertsRead recent alerts for an owned watch.
GET/api/v1/accountRead the caller's alert channel preferences.
POST/api/v1/requestsRequest support for watching an event. Seller metadata may be read.
GET/api/v1API discovery
GET/api/v1/openapi.jsonOpenAPI 3.1 document

Creating an existing watch for the same event and quantity updates it and returns 200; a new watch returns 201 with a Location header. Alerts expose only the caller's watches. Unsupported methods and unknown API paths return problem JSON.

Connect with MCP

The server at /api/mcp uses stateless HTTP. Its tools cover event search, event and production details, URL resolution, watches, alerts, account channels and requests for support.

Claude Code

claude mcp add --transport http tixwatch https://ticket.watch/api/mcp --header "Authorization: Bearer <your key>"

Cursor

Add this server to your MCP configuration, replacing the placeholder locally.

{
  "mcpServers": {
    "tixwatch": {
      "url": "https://ticket.watch/api/mcp",
      "headers": {
        "Authorization": "Bearer <your key>"
      }
    }
  }
}

Claude Desktop

For a Desktop setup that supports a local stdio bridge, the following configuration forwards the bearer header to the HTTP server. The browser-based remote-connector sign-in flow needs OAuth and is not supported yet.

{
  "mcpServers": {
    "tixwatch": {
      "command": "npx",
      "args": [
        "mcp-remote",
        "https://ticket.watch/api/mcp",
        "--header",
        "Authorization: Bearer <your key>"
      ]
    }
  }
}

Resources: tixwatch://events/{slug} and tixwatch://watches. Tool refusals carry isError: true and a readable explanation.

Problem responses

REST errors use application/problem+json with type, title, status, detail and instance (the request path). Validation errors are 422 and include an errors list of field paths and messages.

401 · Unauthorized

A valid bearer API key is required.

403 · Insufficient scope

insufficient_scope: this operation requires write scope.

404 · Not found

The requested resource was not found.

405 · Method not allowed

This method is not supported for this resource.

409 · Conflict

The requested change conflicts with the current state.

422 · Validation failed

Check the fields listed in errors.

429 · Too many requests

Rate limit exceeded. Retry after 60 seconds.

500 · Internal server error

We could not complete this request.

503 · Service unavailable

The seller could not be reached. Try again later.