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/watchesRate 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 / endpoint | Purpose |
|---|---|
GET/api/v1/events | Search 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/resolve | Resolve a seller URL; may add catalogue data, never user state. Read scope suffices. |
GET/api/v1/watches | List the caller's watches. |
POST/api/v1/watches | Create 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}/pause | pause an owned watch. An invalid or repeated transition returns not found without changing the watch. |
POST/api/v1/watches/{id}/resume | resume an owned watch. An invalid or repeated transition returns not found without changing the watch. |
POST/api/v1/watches/{id}/cancel | cancel an owned watch. An invalid or repeated transition returns not found without changing the watch. |
GET/api/v1/watches/{id}/alerts | Read recent alerts for an owned watch. |
GET/api/v1/account | Read the caller's alert channel preferences. |
POST/api/v1/requests | Request support for watching an event. Seller metadata may be read. |
GET/api/v1 | API discovery |
GET/api/v1/openapi.json | OpenAPI 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.