Look up events, releases, tickets, registrations and discount codes, and edit tickets and codes.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Create a discount code for an event. type is PercentOffDiscountCode (value = percent) or MoneyOffDiscountCode (value = flat amount off per ticket, in the event currency). Undo by editing it (e.g. quantity or end_at) with tito_update_discount_code. Tito: POST /:account/:event/discount_codes.
The code attendees enter, e.g. SAVE10.
PercentOffDiscountCode = percentage off; MoneyOffDiscountCode = flat amount off per ticket.
The amount off per ticket as a decimal string, e.g. "10.0".
The event slug (the second part of https://ti.to/<account>/<event>), e.g. 2026.
When the code stops working (ISO 8601 datetime).
How many tickets can use this code in total.
When the code starts working (ISO 8601 datetime).
Release ids the code applies to (empty = all).
The account slug (the first part of https://ti.to/<account>/<event>). Optional if TITO_ACCOUNT is set; tito_whoami lists the accounts this token can reach.
Reveal secret releases when the code is applied. Default false.
When the code is applied, show only the releases attached to it. Default false.
The discount applies to at most this many tickets per release.
The discount applies only if at least this many tickets are selected.
The server marks this tool as destructive. Running it may delete or overwrite data on the server or in any account you connected with your headers.
Create a discount code for an event. type is PercentOffDiscountCode (value = percent) or MoneyOffDiscountCode (value = flat amount off per ticket, in the event currency). Undo by editing it (e.g. quantity or end_at) with tito_update_discount_code. Tito: POST /:account/:event/discount_codes.
| Argument | Type | Description |
|---|---|---|
| code* | string | The code attendees enter, e.g. SAVE10. |
| type* | string | PercentOffDiscountCode = percentage off; MoneyOffDiscountCode = flat amount off per ticket. |
| value* | string | The amount off per ticket as a decimal string, e.g. "10.0". |
| end_at | string | When the code stops working (ISO 8601 datetime). |
| quantity | integer | How many tickets can use this code in total. |
| start_at | string | When the code starts working (ISO 8601 datetime). |
| event_slug* | string | The event slug (the second part of https://ti.to/<account>/<event>), e.g. 2026. |
| release_ids | array | Release ids the code applies to (empty = all). |
| account_slug | string | The account slug (the first part of https://ti.to/<account>/<event>). Optional if TITO_ACCOUNT is set; tito_whoami lists the accounts this token can reach. |
| reveal_secret | boolean | Reveal secret releases when the code is applied. Default false. |
| only_show_attached | boolean | When the code is applied, show only the releases attached to it. Default false. |
| max_quantity_per_release | integer | The discount applies to at most this many tickets per release. |
| min_quantity_per_release | integer | The discount applies only if at least this many tickets are selected. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"event_slug",
"code",
"type",
"value"
],
"properties": {
"code": {
"type": "string",
"minLength": 1,
"description": "The code attendees enter, e.g. SAVE10."
},
"type": {
"enum": [
"PercentOffDiscountCode",
"MoneyOffDiscountCode"
],
"type": "string",
"description": "PercentOffDiscountCode = percentage off; MoneyOffDiscountCode = flat amount off per ticket."
},
"value": {
"type": "string",
"description": "The amount off per ticket as a decimal string, e.g. \"10.0\"."
},
"end_at": {
"type": "string",
"description": "When the code stops working (ISO 8601 datetime)."
},
"quantity": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "How many tickets can use this code in total."
},
"start_at": {
"type": "string",
"description": "When the code starts working (ISO 8601 datetime)."
},
"event_slug": {
"type": "string",
"description": "The event slug (the second part of https://ti.to/<account>/<event>), e.g. 2026."
},
"release_ids": {
"type": "array",
"items": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991
},
"description": "Release ids the code applies to (empty = all)."
},
"account_slug": {
"type": "string",
"description": "The account slug (the first part of https://ti.to/<account>/<event>). Optional if TITO_ACCOUNT is set; tito_whoami lists the accounts this token can reach."
},
"reveal_secret": {
"type": "boolean",
"description": "Reveal secret releases when the code is applied. Default false."
},
"only_show_attached": {
"type": "boolean",
"description": "When the code is applied, show only the releases attached to it. Default false."
},
"max_quantity_per_release": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "The discount applies to at most this many tickets per release."
},
"min_quantity_per_release": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "The discount applies only if at least this many tickets are selected."
}
}
}Issue a ticket for a release without a checkout — e.g. a speaker, sponsor or comp ticket. Tito creates a manual registration for it. This creates a real ticket that counts against the release's capacity (undo only by voiding it in the Tito dashboard). Tito: POST /:account/:event/tickets.
| Argument | Type | Description |
|---|---|---|
| tags | string | Comma-separated tags, e.g. speaker,vip. |
| string | Attendee email. | |
| price | string | Price recorded for the ticket as a decimal string, e.g. "0.0". |
| metadata | object | Arbitrary metadata about the attendee. |
| last_name | string | Attendee last name. |
| event_slug* | string | The event slug (the second part of https://ti.to/<account>/<event>), e.g. 2026. |
| first_name | string | Attendee first name. |
| release_id* | string | The release to issue from — its slug (e.g. speaker) or numeric id. |
Fetch a single discount code by its numeric id, including how many times it has been used. Tito: GET /:account/:event/discount_codes/:discount_code_id.
| Argument | Type | Description |
|---|---|---|
| event_slug* | string | The event slug (the second part of https://ti.to/<account>/<event>), e.g. 2026. |
| account_slug | string | The account slug (the first part of https://ti.to/<account>/<event>). Optional if TITO_ACCOUNT is set; tito_whoami lists the accounts this token can reach. |
| discount_code_id* | integer | The discount code's numeric id. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"event_slug",
"discount_code_id"
],
"properties": {
"event_slug": {
"type": "string",
"description": "The event slug (the second part of https://ti.to/<account>/<event>), e.g. 2026."
},
"account_slug": {
"type": "string",
"description": "The account slug (the first part of https://ti.to/<account>/<event>). Optional if TITO_ACCOUNT is set; tito_whoami lists the accounts this token can reach."
},
"discount_code_id": {
"type": "integer",
"maximum": 9007199254740991,
"description": "The discount code's numeric id.",
"exclusiveMinimum": 0
}
}
}Fetch a single event by slug: title, description, dates and times, time zone, location, currency, live/test_mode, and its releases. Tito: GET /:account/:event.
| Argument | Type | Description |
|---|---|---|
| event_slug* | string | The event slug (the second part of https://ti.to/<account>/<event>), e.g. 2026. |
| account_slug | string | The account slug (the first part of https://ti.to/<account>/<event>). Optional if TITO_ACCOUNT is set; tito_whoami lists the accounts this token can reach. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"event_slug"
],
"properties": {
"event_slug": {
"type": "string",
"description": "The event slug (the second part of https://ti.to/<account>/<event>), e.g. 2026."
},
"account_slug": {
"type": "string",
"description": "The account slug (the first part of https://ti.to/<account>/<event>). Optional if TITO_ACCOUNT is set; tito_whoami lists the accounts this token can reach."
}
}
}Fetch a single registration (order) by slug (reg_...), with its tickets, receipts, refunds, line items, billing address and payment details. Tito: GET /:account/:event/registrations/:registration_slug.
| Argument | Type | Description |
|---|---|---|
| event_slug* | string | The event slug (the second part of https://ti.to/<account>/<event>), e.g. 2026. |
| account_slug | string | The account slug (the first part of https://ti.to/<account>/<event>). Optional if TITO_ACCOUNT is set; tito_whoami lists the accounts this token can reach. |
| registration_slug* | string | The registration's slug, e.g. reg_ds7qNqJ4s4doDMeh1VogTrw. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"event_slug",
"registration_slug"
],
"properties": {
"event_slug": {
"type": "string",
"description": "The event slug (the second part of https://ti.to/<account>/<event>), e.g. 2026."
},
"account_slug": {
"type": "string",
"description": "The account slug (the first part of https://ti.to/<account>/<event>). Optional if TITO_ACCOUNT is set; tito_whoami lists the accounts this token can reach."
},
"registration_slug": {
"type": "string",
"description": "The registration's slug, e.g. reg_ds7qNqJ4s4doDMeh1VogTrw."
}
}
}Fetch a single release (ticket type) by slug, with pricing, capacity, sales counts (full-price, discounted, free, voided), questions and activities. Tito: GET /:account/:event/releases/:release_slug.
| Argument | Type | Description |
|---|---|---|
| event_slug* | string | The event slug (the second part of https://ti.to/<account>/<event>), e.g. 2026. |
| account_slug | string | The account slug (the first part of https://ti.to/<account>/<event>). Optional if TITO_ACCOUNT is set; tito_whoami lists the accounts this token can reach. |
| release_slug* | string | The release's slug, e.g. early-bird. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"event_slug",
"release_slug"
],
"properties": {
"event_slug": {
"type": "string",
"description": "The event slug (the second part of https://ti.to/<account>/<event>), e.g. 2026."
},
"account_slug": {
"type": "string",
"description": "The account slug (the first part of https://ti.to/<account>/<event>). Optional if TITO_ACCOUNT is set; tito_whoami lists the accounts this token can reach."
},
"release_slug": {
"type": "string",
"description": "The release's slug, e.g. early-bird."
}
}
}Fetch a single ticket by slug (ti_...), with the attendee, registration, release, question answers, tags and amounts paid. Tito: GET /:account/:event/tickets/:ticket_slug.
| Argument | Type | Description |
|---|---|---|
| event_slug* | string | The event slug (the second part of https://ti.to/<account>/<event>), e.g. 2026. |
| ticket_slug* | string | The ticket's slug, e.g. ti_dhlR2CSzh59ZLht5ELPkxjg. |
| account_slug | string | The account slug (the first part of https://ti.to/<account>/<event>). Optional if TITO_ACCOUNT is set; tito_whoami lists the accounts this token can reach. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"event_slug",
"ticket_slug"
],
"properties": {
"event_slug": {
"type": "string",
"description": "The event slug (the second part of https://ti.to/<account>/<event>), e.g. 2026."
},
"ticket_slug": {
"type": "string",
"description": "The ticket's slug, e.g. ti_dhlR2CSzh59ZLht5ELPkxjg."
},
"account_slug": {
"type": "string",
"description": "The account slug (the first part of https://ti.to/<account>/<event>). Optional if TITO_ACCOUNT is set; tito_whoami lists the accounts this token can reach."
}
}
}List an event's activities — sessions, workshops or dinners beyond the ticket itself — with capacity, allocation_count, sold_out, date/times and attached releases. Tito: GET /:account/:event/activities.
| Argument | Type | Description |
|---|---|---|
| page | integer | Page number (page[number]), from 1. |
| page_size | integer | Results per page (page[size]), 1-1000. Tito's default is 100. |
| event_slug* | string | The event slug (the second part of https://ti.to/<account>/<event>), e.g. 2026. |
| account_slug | string | The account slug (the first part of https://ti.to/<account>/<event>). Optional if TITO_ACCOUNT is set; tito_whoami lists the accounts this token can reach. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"event_slug"
],
"properties": {
"page": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 1,
"description": "Page number (page[number]), from 1."
},
"page_size": {
"type": "integer",
"maximum": 1000,
"minimum": 1,
"description": "Results per page (page[size]), 1-1000. Tito's default is 100."
},
"event_slug": {
"type": "string",
"description": "The event slug (the second part of https://ti.to/<account>/<event>), e.g. 2026."
},
"account_slug": {
"type": "string",
"description": "The account slug (the first part of https://ti.to/<account>/<event>). Optional if TITO_ACCOUNT is set; tito_whoami lists the accounts this token can reach."
}
}
}List every attendee's answer to one question, each with its ticket_id and the response text. Tito: GET /:account/:event/questions/:question_slug/answers.
| Argument | Type | Description |
|---|---|---|
| page | integer | Page number (page[number]), from 1. |
| page_size | integer | Results per page (page[size]), 1-1000. Tito's default is 100. |
| event_slug* | string | The event slug (the second part of https://ti.to/<account>/<event>), e.g. 2026. |
| account_slug | string | The account slug (the first part of https://ti.to/<account>/<event>). Optional if TITO_ACCOUNT is set; tito_whoami lists the accounts this token can reach. |
| question_slug* | string | The question's slug, from tito_list_questions, e.g. dietary. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"event_slug",
"question_slug"
],
"properties": {
"page": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 1,
"description": "Page number (page[number]), from 1."
},
"page_size": {
"type": "integer",
"maximum": 1000,
"minimum": 1,
"description": "Results per page (page[size]), 1-1000. Tito's default is 100."
},
"event_slug": {
"type": "string",
"description": "The event slug (the second part of https://ti.to/<account>/<event>), e.g. 2026."
},
"account_slug": {
"type": "string",
"description": "The account slug (the first part of https://ti.to/<account>/<event>). Optional if TITO_ACCOUNT is set; tito_whoami lists the accounts this token can reach."
},
"question_slug": {
"type": "string",
"description": "The question's slug, from tito_list_questions, e.g. dietary."
}
}
}List an event's check-in lists (the door lists used at the venue) with title, slug, the releases/activities they cover and which attendee fields they show. Tito: GET /:account/:event/checkin_lists.
| Argument | Type | Description |
|---|---|---|
| page | integer | Page number (page[number]), from 1. |
| page_size | integer | Results per page (page[size]), 1-1000. Tito's default is 100. |
| event_slug* | string | The event slug (the second part of https://ti.to/<account>/<event>), e.g. 2026. |
| account_slug | string | The account slug (the first part of https://ti.to/<account>/<event>). Optional if TITO_ACCOUNT is set; tito_whoami lists the accounts this token can reach. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"event_slug"
],
"properties": {
"page": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 1,
"description": "Page number (page[number]), from 1."
},
"page_size": {
"type": "integer",
"maximum": 1000,
"minimum": 1,
"description": "Results per page (page[size]), 1-1000. Tito's default is 100."
},
"event_slug": {
"type": "string",
"description": "The event slug (the second part of https://ti.to/<account>/<event>), e.g. 2026."
},
"account_slug": {
"type": "string",
"description": "The account slug (the first part of https://ti.to/<account>/<event>). Optional if TITO_ACCOUNT is set; tito_whoami lists the accounts this token can reach."
}
}
}List an event's discount codes with code, type (PercentOffDiscountCode / MoneyOffDiscountCode), value, quantity and quantity_used, validity window and attached releases. Tito: GET /:account/:event/discount_codes.
| Argument | Type | Description |
|---|---|---|
| page | integer | Page number (page[number]), from 1. |
| page_size | integer | Results per page (page[size]), 1-1000. Tito's default is 100. |
| event_slug* | string | The event slug (the second part of https://ti.to/<account>/<event>), e.g. 2026. |
| account_slug | string | The account slug (the first part of https://ti.to/<account>/<event>). Optional if TITO_ACCOUNT is set; tito_whoami lists the accounts this token can reach. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"event_slug"
],
"properties": {
"page": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 1,
"description": "Page number (page[number]), from 1."
},
"page_size": {
"type": "integer",
"maximum": 1000,
"minimum": 1,
"description": "Results per page (page[size]), 1-1000. Tito's default is 100."
},
"event_slug": {
"type": "string",
"description": "The event slug (the second part of https://ti.to/<account>/<event>), e.g. 2026."
},
"account_slug": {
"type": "string",
"description": "The account slug (the first part of https://ti.to/<account>/<event>). Optional if TITO_ACCOUNT is set; tito_whoami lists the accounts this token can reach."
}
}
}List an account's events: upcoming (default), past or archived. Each has its slug, title, dates, location, currency, live/test_mode flags and public URL. Tito: GET /:account/events, /events/past, /events/archived.
| Argument | Type | Description |
|---|---|---|
| page | integer | Page number (page[number]), from 1. |
| scope | string | Which events: upcoming (default), past or archived. |
| page_size | integer | Results per page (page[size]), 1-1000. Tito's default is 100. |
| account_slug | string | The account slug (the first part of https://ti.to/<account>/<event>). Optional if TITO_ACCOUNT is set; tito_whoami lists the accounts this token can reach. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"page": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 1,
"description": "Page number (page[number]), from 1."
},
"scope": {
"enum": [
"upcoming",
"past",
"archived"
],
"type": "string",
"description": "Which events: upcoming (default), past or archived."
},
"page_size": {
"type": "integer",
"maximum": 1000,
"minimum": 1,
"description": "Results per page (page[size]), 1-1000. Tito's default is 100."
},
"account_slug": {
"type": "string",
"description": "The account slug (the first part of https://ti.to/<account>/<event>). Optional if TITO_ACCOUNT is set; tito_whoami lists the accounts this token can reach."
}
}
}List the custom questions an event asks attendees (e.g. dietary requirements, t-shirt size) with slug, field_type, required flag and answers_count. Use a question's slug with tito_list_answers. Tito: GET /:account/:event/questions.
| Argument | Type | Description |
|---|---|---|
| page | integer | Page number (page[number]), from 1. |
| page_size | integer | Results per page (page[size]), 1-1000. Tito's default is 100. |
| event_slug* | string | The event slug (the second part of https://ti.to/<account>/<event>), e.g. 2026. |
| account_slug | string | The account slug (the first part of https://ti.to/<account>/<event>). Optional if TITO_ACCOUNT is set; tito_whoami lists the accounts this token can reach. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"event_slug"
],
"properties": {
"page": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 1,
"description": "Page number (page[number]), from 1."
},
"page_size": {
"type": "integer",
"maximum": 1000,
"minimum": 1,
"description": "Results per page (page[size]), 1-1000. Tito's default is 100."
},
"event_slug": {
"type": "string",
"description": "The event slug (the second part of https://ti.to/<account>/<event>), e.g. 2026."
},
"account_slug": {
"type": "string",
"description": "The account slug (the first part of https://ti.to/<account>/<event>). Optional if TITO_ACCOUNT is set; tito_whoami lists the accounts this token can reach."
}
}
}List the refunds recorded for an event, each with amount, created_at, whether it was manual, and the registration it belongs to. Read-only: this server never issues refunds. Tito: GET /:account/:event/refunds.
| Argument | Type | Description |
|---|---|---|
| page | integer | Page number (page[number]), from 1. |
| page_size | integer | Results per page (page[size]), 1-1000. Tito's default is 100. |
| event_slug* | string | The event slug (the second part of https://ti.to/<account>/<event>), e.g. 2026. |
| account_slug | string | The account slug (the first part of https://ti.to/<account>/<event>). Optional if TITO_ACCOUNT is set; tito_whoami lists the accounts this token can reach. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"event_slug"
],
"properties": {
"page": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 1,
"description": "Page number (page[number]), from 1."
},
"page_size": {
"type": "integer",
"maximum": 1000,
"minimum": 1,
"description": "Results per page (page[size]), 1-1000. Tito's default is 100."
},
"event_slug": {
"type": "string",
"description": "The event slug (the second part of https://ti.to/<account>/<event>), e.g. 2026."
},
"account_slug": {
"type": "string",
"description": "The account slug (the first part of https://ti.to/<account>/<event>). Optional if TITO_ACCOUNT is set; tito_whoami lists the accounts this token can reach."
}
}
}List an event's registrations — Tito's orders — newest first, with buyer name/email, reference, total, state, paid/refunded flags, discount code and ticket quantities. Filter by free text (email, name, slug, reference, company, discount code), state, and created/updated time. Cancelled ones are excluded unless states includes 'cancelled'. Tito: GET /:account/:event/registrations.
| Argument | Type | Description |
|---|---|---|
| q | string | Free-text search: email, name, slug, reference, company name or discount code. |
| page | integer | Page number (page[number]), from 1. |
| sort | string | Sort attribute (search[sort]). Default created_at, newest first. |
| view | string | Response view. Lists default to 'short'; 'extended' includes associated records but can be slow and large. |
| states | array | Only these states (search[states][]). |
| direction | string | Sort direction (search[direction]). |
| page_size | integer | Results per page (page[size]), 1-1000. Tito's default is 100. |
| event_slug* |
List an event's releases — Tito's ticket types — with price, quantity, tickets_count sold, sold_out / off_sale / secret flags, sale window and share_url. Tito: GET /:account/:event/releases.
| Argument | Type | Description |
|---|---|---|
| page | integer | Page number (page[number]), from 1. |
| page_size | integer | Results per page (page[size]), 1-1000. Tito's default is 100. |
| event_slug* | string | The event slug (the second part of https://ti.to/<account>/<event>), e.g. 2026. |
| account_slug | string | The account slug (the first part of https://ti.to/<account>/<event>). Optional if TITO_ACCOUNT is set; tito_whoami lists the accounts this token can reach. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"event_slug"
],
"properties": {
"page": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 1,
"description": "Page number (page[number]), from 1."
},
"page_size": {
"type": "integer",
"maximum": 1000,
"minimum": 1,
"description": "Results per page (page[size]), 1-1000. Tito's default is 100."
},
"event_slug": {
"type": "string",
"description": "The event slug (the second part of https://ti.to/<account>/<event>), e.g. 2026."
},
"account_slug": {
"type": "string",
"description": "The account slug (the first part of https://ti.to/<account>/<event>). Optional if TITO_ACCOUNT is set; tito_whoami lists the accounts this token can reach."
}
}
}List an event's tickets — one per attendee — newest first, with name, email, company, reference, release, price paid and state. Filter by free text (name, email, phone, reference, company, tag), state, type, release, activity, and created/updated time. Void tickets are excluded unless states includes 'void'. Tito: GET /:account/:event/tickets.
| Argument | Type | Description |
|---|---|---|
| q | string | Free-text search: email, name, phone, slug, reference, company or tag. |
| page | integer | Page number (page[number]), from 1. |
| sort | string | Sort attribute (search[sort]). Default created_at, newest first. |
| view | string | Response view. Lists default to 'short'; 'extended' includes associated records but can be slow and large. |
| types | array | manual = added by an organiser, standard = ordered by a customer (search[types][]). |
| states | array | Only these states (search[states][]). 'archived' also includes tickets of archived releases. |
| direction | string | Sort direction (search[direction]). |
| page_size | integer |
Change an existing discount code — its code, value, quantity, validity window or attached releases. Only the fields you pass are sent. To retire a code without deleting it, set end_at to now. Tito: PATCH /:account/:event/discount_codes/:discount_code_id.
| Argument | Type | Description |
|---|---|---|
| code | string | New code text. |
| type | string | New discount type. |
| value | string | New amount off per ticket as a decimal string, e.g. "15.0". |
| end_at | string | When the code stops working (ISO 8601 datetime). |
| quantity | integer | How many tickets can use this code in total. |
| start_at | string | When the code starts working (ISO 8601 datetime). |
| event_slug* | string | The event slug (the second part of https://ti.to/<account>/<event>), e.g. 2026. |
| release_ids | array | Release ids the code applies to (empty = all). |
| account_slug |
Correct a ticket's attendee details — name, email, company, phone, tags or metadata. Only the fields you pass are sent, and no email is sent to anyone (unlike a reassignment, which this server does not do). Tito: PATCH /:account/:event/tickets/:ticket_slug.
| Argument | Type | Description |
|---|---|---|
| tags | string | Comma-separated tags (replaces the existing tags). |
| string | Attendee email. | |
| metadata | object | Arbitrary metadata about the attendee. |
| last_name | string | Attendee last name. |
| event_slug* | string | The event slug (the second part of https://ti.to/<account>/<event>), e.g. 2026. |
| first_name | string | Attendee first name. |
| ticket_slug* | string | The ticket's slug, e.g. ti_dhlR2CSzh59ZLht5ELPkxjg. |
| account_slug | string | The account slug (the first part of https://ti.to/<account>/<event>). Optional if TITO_ACCOUNT is set; tito_whoami lists the accounts this token can reach. |
Confirm the API token works and list the account slugs it can reach, plus its lookup mode (live or test — a token only sees tickets and registrations of its own mode). Call this first to discover account_slug. Tito: GET /hello.
No arguments.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {}
}| account_slug |
| string |
| The account slug (the first part of https://ti.to/<account>/<event>). Optional if TITO_ACCOUNT is set; tito_whoami lists the accounts this token can reach. |
| company_name | string | Attendee company. |
| phone_number | string | Attendee phone number. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"event_slug",
"release_id"
],
"properties": {
"tags": {
"type": "string",
"description": "Comma-separated tags, e.g. speaker,vip."
},
"email": {
"type": "string",
"description": "Attendee email."
},
"price": {
"type": "string",
"description": "Price recorded for the ticket as a decimal string, e.g. \"0.0\"."
},
"metadata": {
"type": "object",
"description": "Arbitrary metadata about the attendee.",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
},
"last_name": {
"type": "string",
"description": "Attendee last name."
},
"event_slug": {
"type": "string",
"description": "The event slug (the second part of https://ti.to/<account>/<event>), e.g. 2026."
},
"first_name": {
"type": "string",
"description": "Attendee first name."
},
"release_id": {
"type": "string",
"description": "The release to issue from — its slug (e.g. speaker) or numeric id."
},
"account_slug": {
"type": "string",
"description": "The account slug (the first part of https://ti.to/<account>/<event>). Optional if TITO_ACCOUNT is set; tito_whoami lists the accounts this token can reach."
},
"company_name": {
"type": "string",
"description": "Attendee company."
},
"phone_number": {
"type": "string",
"description": "Attendee phone number."
}
}
}| string |
| The event slug (the second part of https://ti.to/<account>/<event>), e.g. 2026. |
| account_slug | string | The account slug (the first part of https://ti.to/<account>/<event>). Optional if TITO_ACCOUNT is set; tito_whoami lists the accounts this token can reach. |
| created_after | string | Only registrations created after this time (search[created_at][gt]), e.g. 2026-01-01T09:00:00+UTC. Without the +UTC suffix Tito uses the event's own time zone. |
| updated_after | string | Only registrations updated after this time (search[updated_at][gt]), e.g. 2026-01-01T09:00:00+UTC. Without the +UTC suffix Tito uses the event's own time zone. |
| created_before | string | Only registrations created before this time (search[created_at][lt]), e.g. 2026-01-01T09:00:00+UTC. Without the +UTC suffix Tito uses the event's own time zone. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"event_slug"
],
"properties": {
"q": {
"type": "string",
"description": "Free-text search: email, name, slug, reference, company name or discount code."
},
"page": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 1,
"description": "Page number (page[number]), from 1."
},
"sort": {
"enum": [
"name",
"created_at",
"updated_at",
"total",
"reference",
"payment_provider"
],
"type": "string",
"description": "Sort attribute (search[sort]). Default created_at, newest first."
},
"view": {
"enum": [
"short",
"extended"
],
"type": "string",
"description": "Response view. Lists default to 'short'; 'extended' includes associated records but can be slow and large."
},
"states": {
"type": "array",
"items": {
"enum": [
"cancelled",
"complete",
"confirmed",
"incomplete",
"paid",
"unpaid"
],
"type": "string"
},
"description": "Only these states (search[states][])."
},
"direction": {
"enum": [
"asc",
"desc"
],
"type": "string",
"description": "Sort direction (search[direction])."
},
"page_size": {
"type": "integer",
"maximum": 1000,
"minimum": 1,
"description": "Results per page (page[size]), 1-1000. Tito's default is 100."
},
"event_slug": {
"type": "string",
"description": "The event slug (the second part of https://ti.to/<account>/<event>), e.g. 2026."
},
"account_slug": {
"type": "string",
"description": "The account slug (the first part of https://ti.to/<account>/<event>). Optional if TITO_ACCOUNT is set; tito_whoami lists the accounts this token can reach."
},
"created_after": {
"type": "string",
"description": "Only registrations created after this time (search[created_at][gt]), e.g. 2026-01-01T09:00:00+UTC. Without the +UTC suffix Tito uses the event's own time zone."
},
"updated_after": {
"type": "string",
"description": "Only registrations updated after this time (search[updated_at][gt]), e.g. 2026-01-01T09:00:00+UTC. Without the +UTC suffix Tito uses the event's own time zone."
},
"created_before": {
"type": "string",
"description": "Only registrations created before this time (search[created_at][lt]), e.g. 2026-01-01T09:00:00+UTC. Without the +UTC suffix Tito uses the event's own time zone."
}
}
}| Results per page (page[size]), 1-1000. Tito's default is 100. |
| event_slug* | string | The event slug (the second part of https://ti.to/<account>/<event>), e.g. 2026. |
| account_slug | string | The account slug (the first part of https://ti.to/<account>/<event>). Optional if TITO_ACCOUNT is set; tito_whoami lists the accounts this token can reach. |
| activity_ids | array | Only tickets attached to these activity ids (search[activity_ids][]). |
| created_after | string | Only tickets created after this time (search[created_at][gt]), e.g. 2026-01-01T09:00:00+UTC. Without the +UTC suffix Tito uses the event's own time zone. |
| release_slugs | array | Only tickets of these releases, by release slug (search[release_ids][]). |
| updated_after | string | Only tickets updated after this time (search[updated_at][gt]), e.g. 2026-01-01T09:00:00+UTC. Without the +UTC suffix Tito uses the event's own time zone. |
| created_before | string | Only tickets created before this time (search[created_at][lt]), e.g. 2026-01-01T09:00:00+UTC. Without the +UTC suffix Tito uses the event's own time zone. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"event_slug"
],
"properties": {
"q": {
"type": "string",
"description": "Free-text search: email, name, phone, slug, reference, company or tag."
},
"page": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 1,
"description": "Page number (page[number]), from 1."
},
"sort": {
"enum": [
"first_name",
"last_name",
"created_at",
"updated_at",
"price",
"reference",
"number"
],
"type": "string",
"description": "Sort attribute (search[sort]). Default created_at, newest first."
},
"view": {
"enum": [
"short",
"extended"
],
"type": "string",
"description": "Response view. Lists default to 'short'; 'extended' includes associated records but can be slow and large."
},
"types": {
"type": "array",
"items": {
"enum": [
"manual",
"standard"
],
"type": "string"
},
"description": "manual = added by an organiser, standard = ordered by a customer (search[types][])."
},
"states": {
"type": "array",
"items": {
"enum": [
"complete",
"incomplete",
"unassigned",
"void",
"changes_allowed",
"changes_locked",
"archived"
],
"type": "string"
},
"description": "Only these states (search[states][]). 'archived' also includes tickets of archived releases."
},
"direction": {
"enum": [
"asc",
"desc"
],
"type": "string",
"description": "Sort direction (search[direction])."
},
"page_size": {
"type": "integer",
"maximum": 1000,
"minimum": 1,
"description": "Results per page (page[size]), 1-1000. Tito's default is 100."
},
"event_slug": {
"type": "string",
"description": "The event slug (the second part of https://ti.to/<account>/<event>), e.g. 2026."
},
"account_slug": {
"type": "string",
"description": "The account slug (the first part of https://ti.to/<account>/<event>). Optional if TITO_ACCOUNT is set; tito_whoami lists the accounts this token can reach."
},
"activity_ids": {
"type": "array",
"items": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991
},
"description": "Only tickets attached to these activity ids (search[activity_ids][])."
},
"created_after": {
"type": "string",
"description": "Only tickets created after this time (search[created_at][gt]), e.g. 2026-01-01T09:00:00+UTC. Without the +UTC suffix Tito uses the event's own time zone."
},
"release_slugs": {
"type": "array",
"items": {
"type": "string"
},
"description": "Only tickets of these releases, by release slug (search[release_ids][])."
},
"updated_after": {
"type": "string",
"description": "Only tickets updated after this time (search[updated_at][gt]), e.g. 2026-01-01T09:00:00+UTC. Without the +UTC suffix Tito uses the event's own time zone."
},
"created_before": {
"type": "string",
"description": "Only tickets created before this time (search[created_at][lt]), e.g. 2026-01-01T09:00:00+UTC. Without the +UTC suffix Tito uses the event's own time zone."
}
}
}| string |
| The account slug (the first part of https://ti.to/<account>/<event>). Optional if TITO_ACCOUNT is set; tito_whoami lists the accounts this token can reach. |
| reveal_secret | boolean | Reveal secret releases when the code is applied. Default false. |
| discount_code_id* | integer | The discount code's numeric id. |
| only_show_attached | boolean | When the code is applied, show only the releases attached to it. Default false. |
| max_quantity_per_release | integer | The discount applies to at most this many tickets per release. |
| min_quantity_per_release | integer | The discount applies only if at least this many tickets are selected. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"event_slug",
"discount_code_id"
],
"properties": {
"code": {
"type": "string",
"minLength": 1,
"description": "New code text."
},
"type": {
"enum": [
"PercentOffDiscountCode",
"MoneyOffDiscountCode"
],
"type": "string",
"description": "New discount type."
},
"value": {
"type": "string",
"description": "New amount off per ticket as a decimal string, e.g. \"15.0\"."
},
"end_at": {
"type": "string",
"description": "When the code stops working (ISO 8601 datetime)."
},
"quantity": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "How many tickets can use this code in total."
},
"start_at": {
"type": "string",
"description": "When the code starts working (ISO 8601 datetime)."
},
"event_slug": {
"type": "string",
"description": "The event slug (the second part of https://ti.to/<account>/<event>), e.g. 2026."
},
"release_ids": {
"type": "array",
"items": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991
},
"description": "Release ids the code applies to (empty = all)."
},
"account_slug": {
"type": "string",
"description": "The account slug (the first part of https://ti.to/<account>/<event>). Optional if TITO_ACCOUNT is set; tito_whoami lists the accounts this token can reach."
},
"reveal_secret": {
"type": "boolean",
"description": "Reveal secret releases when the code is applied. Default false."
},
"discount_code_id": {
"type": "integer",
"maximum": 9007199254740991,
"description": "The discount code's numeric id.",
"exclusiveMinimum": 0
},
"only_show_attached": {
"type": "boolean",
"description": "When the code is applied, show only the releases attached to it. Default false."
},
"max_quantity_per_release": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "The discount applies to at most this many tickets per release."
},
"min_quantity_per_release": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "The discount applies only if at least this many tickets are selected."
}
}
}| company_name | string | Attendee company. |
| phone_number | string | Attendee phone number. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"event_slug",
"ticket_slug"
],
"properties": {
"tags": {
"type": "string",
"description": "Comma-separated tags (replaces the existing tags)."
},
"email": {
"type": "string",
"description": "Attendee email."
},
"metadata": {
"type": "object",
"description": "Arbitrary metadata about the attendee.",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
},
"last_name": {
"type": "string",
"description": "Attendee last name."
},
"event_slug": {
"type": "string",
"description": "The event slug (the second part of https://ti.to/<account>/<event>), e.g. 2026."
},
"first_name": {
"type": "string",
"description": "Attendee first name."
},
"ticket_slug": {
"type": "string",
"description": "The ticket's slug, e.g. ti_dhlR2CSzh59ZLht5ELPkxjg."
},
"account_slug": {
"type": "string",
"description": "The account slug (the first part of https://ti.to/<account>/<event>). Optional if TITO_ACCOUNT is set; tito_whoami lists the accounts this token can reach."
},
"company_name": {
"type": "string",
"description": "Attendee company."
},
"phone_number": {
"type": "string",
"description": "Attendee phone number."
}
}
}