NAV

API Early Access Please note this API is under active development — view our Changelog for updates

Version 3.1

Admin API endpoint

https://api.tito.io/v3

Examples in this documentation are written using curl.

This is our latest beta version which you are welcome to try.

The default version is 3.0. To choose to use 3.1 instead you have two options:

The examples given below assume you have switched over your access token.

Introduction

The Admin API is designed to be a predictable and intuitive interface for secure programmatic access to Tito. The Admin API can be used to manage events, tickets, etc.

The Admin API is a REST API and returns JSON responses.

We hope by providing an API it will allow developers to build cool and useful tools on top of Tito.

Authentication

The Admin API uses API tokens to allow users to authenticate without exposing their credentials.

Developers can generate an API token by signing in at https://id.tito.io and selecting Generate New Token.

As the Admin API is a private API, only secret API token types can be used. As well as selecting a token type, a mode must also be selected:

If you find your API token has been compromised it can be revoked and a new one generated.

Your API token needs to be included in the Authorization header so your requests can be authenticated.

Confirm you can connect

curl --request GET \
  --url 'https://api.tito.io/v3/hello' \
  --header 'Authorization: Token token=YOUR-API-TOKEN' \
  --header 'Accept: application/json' \
{
    "authenticated": true,
    "access_token": "*ab1C",
    "lookup_mode": "live",
    "accounts": [
        "biscuit-box",
        "demo"
    ]
}

This endpoint will confirm you are authenticated properly and tell you which accounts you have access to.

GET https://api.tito.io/v3/hello

The access_token is the last four characters of whatever access token you have used.

The Admin API also provides detailed information about Authentication Errors.

Headers

All API requests must send the following request headers:

Pagination

Endpoints which enumerate objects are paginated.

Pagination information is returned in the meta attribute in the response body.

A specific page can be retrieved by providing the page[number] parameter:

https://api.tito.io/v3/:account_slug/:event_slug/activities/:activity_id?page[number]=2

The number of records returned in each page can be set with a page[size] parameter:

https://api.tito.io/v3/:account_slug/:event_slug/tickets?page[size]=100

The default page size is 100 and the maximum page size is 1000.

Expansions

In version 3.0, if you asked for a registration then you got all its tickets too (as well line_items, payment, receipt, receipts, and refunds). But if you don't need all those other resources then it just makes the response bigger and slower. In version 3.1 you just get the resource you asked for unless you explicitly "expand" other resources.

Single resource

By default, you just get the resource you asked for. For example, to get a single registration.

curl --request GET \
  --url 'https://api.tito.io/v3/:account_slug/:event_slug/registrations/:registration_slug' \
  --header 'Authorization: Token token=YOUR-API-TOKEN' \
  --header 'Accept: application/json'

GET /:account_slug/:event_slug/registration/:registration_slug

Add an expansion

You can ask for more information. For example, to get the registration's tickets too.

curl --request GET \
  --url 'https://api.tito.io/v3/:account_slug/:event_slug/registrations/:registration_slug?expand=tickets' \
  --header 'Authorization: Token token=YOUR-API-TOKEN' \
  --header 'Accept: application/json'

GET /:account_slug/:event_slug/registration/:registration_slug?expand=tickets

Multiple expansions

You can expand more than one resource by listing them separated by a comma.

curl --request GET \
  --url 'https://api.tito.io/v3/:account_slug/:event_slug/registrations/:registration_slug?expand=tickets,receipts' \
  --header 'Authorization: Token token=YOUR-API-TOKEN' \
  --header 'Accept: application/json'

GET /:account_slug/:event_slug/registration/:registration_slug?expand=tickets,receipts

Available expansions

At the end of every response is a meta section which includes a list of all the possible expansions for this resource and whether they are currently expanded or not.

{
  "meta": {
    "expandable": {
      "tickets": true,
      "receipts": false
    }
  }
}

Translations

Translations is a beta feature. Contact us to get it enabled.

Translated attributes will be shown for each locale for your event if you have provided them and you have more than one locale set up. You can force the translations to be shown even for one locale by using ?expand=translations.

Read more about translations

One locale

In this example, the event only has one locale so the translations attribute is omitted.

curl --request GET \
  --url 'https://api.tito.io/v3/:account_slug/:event_slug/questions/:question_slug' \
  --header 'Authorization: Token token=YOUR-API-TOKEN' \
  --header 'Accept: application/json'
{
  "question": {
    "_type": "question",
    "id": 1,
    "answers_count": 49,
    "description": "What is your most favorite color of all?",
    "title": "Fave tree?",
    "field_type": "Text",
    "include_free_text_field": false,
    "required": false,
    "slug": "favorite-color",
    "tickets_count": 103,
    "created_at": "2022-03-26T07:36:06.000Z",
    "updated_at": "2022-03-26T07:37:09.000Z"
  },
  "meta": {
    "api_version": "3.1.0",
    "expandable": {
      "activities": false,
      "releases": false
    }
  }
}

GET /:account_slug/:event_slug/questions/:question_slug

Multiple locales

In this example, the event only has two locales so the translations attribute is shown.

curl --request GET \
  --url 'https://api.tito.io/v3/:account_slug/:event_slug/questions/:question_slug' \
  --header 'Authorization: Token token=YOUR-API-TOKEN' \
  --header 'Accept: application/json'
{
  "question": {
    "_type": "question",
    "id": 1,
    "answers_count": 49,
    "description": "What is your most favorite color of all?",
    "title": "Fave tree?",
    "field_type": "Text",
    "include_free_text_field": false,
    "required": false,
    "slug": "favorite-color",
    "tickets_count": 103,
    "translations": {
      "en": {
        "description": "What is your most favorite color of all?",
        "options": null,
        "options_free_text_field": null,
        "title": "Fave tree?"
      },
      "de": {
        "description": "Ihr Liebling aller Zeiten",
        "options": null,
        "options_free_text_field": null,
        "title": "Was ist deine Lieblingsfarbe?"
      }
    },
    "created_at": "2022-03-26T07:36:06.000Z",
    "updated_at": "2022-03-26T07:37:09.000Z"
  },
  "meta": {
    "api_version": "3.1.0",
    "expandable": {
      "activities": false,
      "releases": false
    }
  }
}

GET /:account_slug/:event_slug/questions/:question_slug

Force

If you need it, you can force the translations to be shown even if you only have one locale by expanding with "translations".

curl --request GET \
  --url 'https://api.tito.io/v3/:account_slug/:event_slug/questions/:question_slug?expand=translations' \
  --header 'Authorization: Token token=YOUR-API-TOKEN' \
  --header 'Accept: application/json'
{
  "question": {
    "_type": "question",
    "id": 1,
    "answers_count": 49,
    "description": "What is your most favorite color of all?",
    "title": "Fave tree?",
    "field_type": "Text",
    "include_free_text_field": false,
    "required": false,
    "slug": "favorite-color",
    "tickets_count": 103,
    "translations": {
      "en": {
        "description": "What is your most favorite color of all?",
        "options": null,
        "options_free_text_field": null,
        "title": "Fave tree?"
      }
    },
    "created_at": "2022-03-26T07:36:06.000Z",
    "updated_at": "2022-03-26T07:37:09.000Z"
  },
  "meta": {
    "api_version": "3.1.0",
    "expandable": {
      "activities": false,
      "releases": false
    }
  }
}

GET /:account_slug/:event_slug/questions/:question_slug?expand=translations

Errors

{
  "status": 422,
  "message": "A readable message that describes the problem"
}

If you get an error then it will follow a common format. Every error includes a status and a message.

Attributes

Authentication errors [401]

{
  "status": 401,
  "message": "The API token is missing.",
  "hint": "You can retrieve your API token at https://id.tito.io. Please see the API docs for further information at https://ti.to/docs/api."
}

If a request cannot be authenticated (we don't know who you are).

Authorization errors [403]

{
  "status": 403,
  "message": "Forbidden",
  "hint": "You are not authorized to access discount_codes"
}

If a request cannot be authorized as a user has insufficient permissions (we know who you are but you're not allowed to do what you're trying to do).

Resource not found [404]

{
  "status": 404,
  "message": "Resource not found",
  "test_mode": false,
  "hint": "Record not found with test mode off but it does exist with test mode on",
  "access_token": "*bill"
}

If the resource you are looking for isn't there. If the resource does exist but you were looking in the wrong test mode then it will tell you that in the hint.

Validation errors [422]

curl --request POST \
  --url 'https://api.tito.io/v3/:account_slug/:event_slug/discount_codes' \
  --header 'Authorization: Token token=YOUR-API-TOKEN' \
  --header 'Accept: application/json' \
  --header 'Content-Type: application/json' \
  --data '{"discount_code[code]":"HALFPRICE","discount_code[type]":"WrongType"}'
{
  "status": 422,
  "message": "That request was invalid",
  "errors": {
    "code": [
      "has already been taken"
    ],
    "type": [
      "is not included in the list"
    ],
    "value": [
      "can't be blank"
    ]
  },
  "error_list": [
    {
      "attribute": "code",
      "message": "has already been taken"
    },
    {
      "attribute": "type",
      "message": "is not included in the list"
    },
    {
      "attribute": "value",
      "message": "can't be blank"
    }
  ]
}

For example, creating a new discount code can result in a validation error.

The validation errors are shown in the errors object with each attribute linked to an array of messages.

This is repeated in an array called error_list which you might find easier.

HTTP status codes

Activities

Activities represent things that attendees can go to during your event that are not part of their ticket e.g. bowling or conference dinner.

Tickets can have multiple activities attached, allowing you to share capacity, set start and end dates and times, sell single and combo tickets for multi-day events, and show a schedule and itinerary to attendees.

Read more about activities

Attributes

* See translations.

Expansions

Append a comma separated list of expansions to pull back more information about this Activity.

Get all activities

curl --request GET \
  --url 'https://api.tito.io/v3/:account_slug/:event_slug/activities' \
  --header 'Authorization: Token token=YOUR-API-TOKEN' \
  --header 'Accept: application/json'
{
  "activities": [
    {
      "_type": "activity",
      "id": 1,
      "capacity": 100,
      "date": "2022-12-25",
      "description": "An activity for Conference",
      "start_time": "09:00",
      "end_time": "17:00",
      "start_at": "2022-12-25T09:00:00.000Z",
      "end_at": "2022-12-25T17:00:00.000Z",
      "name": "Conference",
      "allocation_count": 103,
      "sold_out": true,
      "show_to_attendee": true
    },
    {
      "_type": "activity",
      "id": 9,
      "capacity": 100,
      "date": "2022-12-25",
      "description": "An activity for Conference",
      "start_time": "09:00",
      "end_time": "17:00",
      "start_at": "2022-12-25T09:00:00.000Z",
      "end_at": "2022-12-25T17:00:00.000Z",
      "name": "Conference Copy",
      "allocation_count": 103,
      "sold_out": true,
      "show_to_attendee": true
    },
    "..."
  ],
  "meta": {
    "api_version": "3.1.0",
    "expandable": {
      "questions": false,
      "question_ids": false,
      "question_slugs": false,
      "releases": false,
      "release_ids": false,
      "release_slugs": false,
      "upgrades": false,
      "venue": false
    },
    "current_page": 1,
    "next_page": null,
    "prev_page": null,
    "total_pages": 1,
    "total_count": 6,
    "per_page": 100,
    "overall_total": 6,
    "sort_options": {
      "Name A-Z": {
        "attr": "name",
        "direction": "asc",
        "default": true
      },
      "Name Z-A": {
        "attr": "name",
        "direction": "desc"
      }
    },
    "filter_options": {
      "sections": {
        "states": {
          "label": "Status",
          "open": false
        }
      },
      "collection": false,
      "states": [

      ]
    }
  }
}

GET /:account_slug/:event_slug/activities

Get an activity

curl --request GET \
  --url 'https://api.tito.io/v3/:account_slug/:event_slug/activities/:activity_id' \
  --header 'Authorization: Token token=YOUR-API-TOKEN' \
  --header 'Accept: application/json'
{
  "activity": {
    "_type": "activity",
    "id": 1,
    "capacity": 100,
    "date": "2022-12-25",
    "description": "An activity for Conference",
    "start_time": "09:00",
    "end_time": "17:00",
    "start_at": "2022-12-25T09:00:00.000Z",
    "end_at": "2022-12-25T17:00:00.000Z",
    "name": "Conference",
    "allocation_count": 103,
    "sold_out": true,
    "show_to_attendee": true
  },
  "meta": {
    "api_version": "3.1.0",
    "expandable": {
      "questions": false,
      "question_ids": false,
      "question_slugs": false,
      "releases": false,
      "release_ids": false,
      "release_slugs": false,
      "upgrades": false,
      "venue": false
    }
  }
}

GET /:account_slug/:event_slug/activities/:activity_id

Create an activity

curl --request POST \
  --url 'https://api.tito.io/v3/:account_slug/:event_slug/activities' \
  --header 'Authorization: Token token=YOUR-API-TOKEN' \
  --header 'Accept: application/json' \
  --header 'Content-Type: application/json' \
  --data '{"activity[name]":"Breakfast"}'
{
  "activity": {
    "_type": "activity",
    "id": 10,
    "capacity": null,
    "date": null,
    "description": null,
    "start_time": null,
    "end_time": null,
    "start_at": null,
    "end_at": null,
    "name": "Breakfast",
    "allocation_count": 0,
    "sold_out": false,
    "show_to_attendee": true
  },
  "meta": {
    "api_version": "3.1.0"
  }
}

POST /:account_slug/:event_slug/activities

Required attributes

Update an activity

curl --request PATCH \
  --url 'https://api.tito.io/v3/:account_slug/:event_slug/activities/:activities_id' \
  --header 'Authorization: Token token=YOUR-API-TOKEN' \
  --header 'Accept: application/json' \
  --header 'Content-type: application/json' \
  --data '{"activity[capacity]":100}'
{
  "activity": {
    "_type": "activity",
    "id": 1,
    "capacity": 100,
    "date": "2022-12-25",
    "description": "An activity for Conference",
    "start_time": "09:00",
    "end_time": "17:00",
    "start_at": "2022-12-25T09:00:00.000Z",
    "end_at": "2022-12-25T17:00:00.000Z",
    "name": "Conference",
    "allocation_count": 103,
    "sold_out": true,
    "show_to_attendee": true
  },
  "meta": {
    "api_version": "3.1.0"
  }
}

PATCH /:account_slug/:event_slug/activities/:activity_id

Required attributes

Delete an activity

curl --request DELETE \
  --url 'https://api.tito.io/v3/:account_slug/:event_slug/activities/:activities_id' \
  --header 'Authorization: Token token=YOUR-API-TOKEN' \
  --header 'Accept: application/json'

DELETE /:account_slug/:event_slug/activities/:activity_id

Duplicate an activity

curl --request POST \
  --url 'https://api.tito.io/v3/:account_slug/:event_slug/activities/:activity_id/duplication' \
  --header 'Authorization: Token token=YOUR-API-TOKEN' \
  --header 'Accept: application/json' \
  --header 'Content-Type: application/json' \
{
  "activity": {
    "_type": "activity",
    "id": 11,
    "capacity": 100,
    "date": "2022-12-25",
    "description": "An activity for Conference",
    "start_time": "09:00",
    "end_time": "17:00",
    "start_at": "2022-12-25T09:00:00.000Z",
    "end_at": "2022-12-25T17:00:00.000Z",
    "name": "Conference Copy",
    "allocation_count": 103,
    "sold_out": true,
    "show_to_attendee": true
  },
  "meta": {
    "api_version": "3.1.0"
  }
}

POST /:account_slug/:event_slug/activities/:activity_id/duplication

Answers

Answers to questions

Attributes

Expansions

Append a comma separated list of expansions to pull back more information about this Answer.

Get all answers

All the answers for a single question.

curl --request GET \
  --url 'https://api.tito.io/v3/:account_slug/:event_slug/questions/:question_slug/answers' \
  --header 'Authorization: Token token=YOUR-API-TOKEN' \
  --header 'Accept: application/json'
{
  "answers": [
    {
      "_type": "answer",
      "id": 1,
      "download_url": null,
      "question_id": 1,
      "ticket_id": 1,
      "response": "Blue",
      "primary_response": "Blue",
      "alternate_response": null
    },
    {
      "_type": "answer",
      "id": 6,
      "download_url": null,
      "question_id": 1,
      "ticket_id": 6,
      "response": "Blue",
      "primary_response": "Blue",
      "alternate_response": null
    },
    "..."
  ],
  "meta": {
    "api_version": "3.1.0",
    "expandable": {
      "question": false,
      "ticket": false
    },
    "current_page": 1,
    "next_page": null,
    "prev_page": null,
    "total_pages": 1,
    "total_count": 49,
    "per_page": 100,
    "filter_options": {
      "sections": {
        "states": {
          "label": "Status",
          "open": false
        }
      },
      "collection": false,
      "states": [

      ]
    }
  }
}

GET /:account_slug/:event_slug/questions/:question_slug/answers

Check-in Lists

Check-in Lists allow you to check your attendees in at the venue of your event.

Create a master check-in list for all attendees or create special lists just for particular ticket types.

Activities represent things that attendees can go to during your event that are not part of their ticket e.g. bowling or conference dinner.

Tickets can have multiple checkin_lists attached, allowing you to share capacity, set start and end dates and times, sell single and combo tickets for multi-day events, and show a schedule and itinerary to attendees.

Attributes

Expansions

Append a comma separated list of expansions to pull back more information about this Check-in List.

Get all check-in lists

curl --request GET \
  --url 'https://api.tito.io/v3/:account_slug/:event_slug/checkin_lists' \
  --header 'Authorization: Token token=YOUR-API-TOKEN' \
  --header 'Accept: application/json'
{
  "checkin_lists": [
    {
      "_type": "checkin_list",
      "id": 1,
      "checked_in_count": 0,
      "expires_at": null,
      "expired": false,
      "open": true,
      "qr_code_url": "https://qr.tito.io/checkin_lists/chk_ddqgQVVWO6Unp9CyZkXrKWQ",
      "show_company_name": true,
      "show_email": true,
      "show_phone_number": true,
      "hide_unpaid": false,
      "slug": "chk_ddqgQVVWO6Unp9CyZkXrKWQ",
      "state": "open",
      "title": "Front door",
      "tickets_count": 184,
      "created_at": "2022-03-26T07:36:07.000Z",
      "updated_at": "2022-03-26T07:37:07.000Z",
      "checked_in_percent": 0.0,
      "web_checkin_url": "https://checkin.tito.io/checkin_lists/chk_ddqgQVVWO6Unp9CyZkXrKWQ"
    }
  ],
  "meta": {
    "api_version": "3.1.0",
    "expandable": {
      "activities": false,
      "activity_ids": false,
      "questions": false,
      "question_ids": false,
      "question_slugs": false,
      "releases": false,
      "release_ids": false,
      "release_slugs": false
    },
    "current_page": 1,
    "next_page": null,
    "prev_page": null,
    "total_pages": 1,
    "total_count": 1,
    "per_page": 100,
    "overall_total": 1,
    "sort_options": {
      "Name A-Z": {
        "attr": "title",
        "direction": "asc",
        "default": true
      },
      "Name Z-A": {
        "attr": "title",
        "direction": "desc"
      }
    },
    "filter_options": {
      "sections": {
        "states": {
          "label": "Status",
          "open": false
        }
      },
      "collection": false,
      "states": [

      ]
    }
  }
}

GET /:account_slug/:event_slug/checkin_lists

Get a check-in list

curl --request GET \
  --url 'https://api.tito.io/v3/:account_slug/:event_slug/checkin_lists/:checkin_list_slug' \
  --header 'Authorization: Token token=YOUR-API-TOKEN' \
  --header 'Accept: application/json'
{
  "checkin_list": {
    "_type": "checkin_list",
    "id": 1,
    "checked_in_count": 0,
    "expires_at": null,
    "expired": false,
    "open": true,
    "qr_code_url": "https://qr.tito.io/checkin_lists/chk_ddqgQVVWO6Unp9CyZkXrKWQ",
    "show_company_name": true,
    "show_email": true,
    "show_phone_number": true,
    "hide_unpaid": false,
    "slug": "chk_ddqgQVVWO6Unp9CyZkXrKWQ",
    "state": "open",
    "title": "Front door",
    "tickets_count": 184,
    "created_at": "2022-03-26T07:36:07.000Z",
    "updated_at": "2022-03-26T07:37:07.000Z",
    "checked_in_percent": 0.0,
    "web_checkin_url": "https://checkin.tito.io/checkin_lists/chk_ddqgQVVWO6Unp9CyZkXrKWQ"
  },
  "meta": {
    "api_version": "3.1.0",
    "expandable": {
      "activities": false,
      "activity_ids": false,
      "questions": false,
      "question_ids": false,
      "question_slugs": false,
      "releases": false,
      "release_ids": false,
      "release_slugs": false
    }
  }
}

GET /:account_slug/:event_slug/checkin_lists/:checkin_list_slug

Create a check-in list

curl --request POST \
  --url 'https://api.tito.io/v3/:account_slug/:event_slug/checkin_lists' \
  --header 'Authorization: Token token=YOUR-API-TOKEN' \
  --header 'Accept: application/json' \
  --header 'Content-Type: application/json' \
  --data '{"checkin_list[title]":"Back door"}'
{
  "checkin_list": {
    "_type": "checkin_list",
    "id": 5,
    "checked_in_count": 0,
    "expires_at": null,
    "expired": false,
    "open": true,
    "qr_code_url": "https://qr.tito.io/checkin_lists/chk_dNjNAIKdYWIKvUltpeP455g",
    "show_company_name": true,
    "show_email": true,
    "show_phone_number": true,
    "hide_unpaid": false,
    "slug": "chk_dNjNAIKdYWIKvUltpeP455g",
    "state": "open",
    "title": "Back door",
    "tickets_count": 184,
    "created_at": "2022-03-26T07:59:17.000Z",
    "updated_at": "2022-03-26T07:59:17.000Z",
    "checked_in_percent": 0.0,
    "web_checkin_url": "https://checkin.tito.io/checkin_lists/chk_dNjNAIKdYWIKvUltpeP455g"
  },
  "meta": {
    "api_version": "3.1.0"
  }
}

POST /:account_slug/:event_slug/checkin_lists

Required attributes

Update a check-in list

curl --request PATCH \
  --url 'https://api.tito.io/v3/:account_slug/:event_slug/checkin_lists/:checkin_lists_slug' \
  --header 'Authorization: Token token=YOUR-API-TOKEN' \
  --header 'Accept: application/json' \
  --header 'Content-type: application/json' \
  --data '{"checkin_list[title]":"Front door"}'
{
  "checkin_list": {
    "_type": "checkin_list",
    "id": 1,
    "checked_in_count": 0,
    "expires_at": null,
    "expired": false,
    "open": true,
    "qr_code_url": "https://qr.tito.io/checkin_lists/chk_ddqgQVVWO6Unp9CyZkXrKWQ",
    "show_company_name": true,
    "show_email": true,
    "show_phone_number": true,
    "hide_unpaid": false,
    "slug": "chk_ddqgQVVWO6Unp9CyZkXrKWQ",
    "state": "open",
    "title": "Front door",
    "tickets_count": 184,
    "created_at": "2022-03-26T07:36:07.000Z",
    "updated_at": "2022-03-26T07:37:07.000Z",
    "checked_in_percent": 0.0,
    "web_checkin_url": "https://checkin.tito.io/checkin_lists/chk_ddqgQVVWO6Unp9CyZkXrKWQ"
  },
  "meta": {
    "api_version": "3.1.0"
  }
}

PATCH /:account_slug/:event_slug/checkin_lists/:checkin_list_slug

Required attributes

Delete a check-in list

curl --request DELETE \
  --url 'https://api.tito.io/v3/:account_slug/:event_slug/checkin_lists/:checkin_lists_slug' \
  --header 'Authorization: Token token=YOUR-API-TOKEN' \
  --header 'Accept: application/json'

DELETE /:account_slug/:event_slug/checkin_lists/:checkin_list_slug

Discount Codes

Read more about discount codes

Attributes

Expansions

Append a comma separated list of expansions to pull back more information about this Discount Code.

Get all discount codes

curl --request GET \
  --url 'https://api.tito.io/v3/:account_slug/:event_slug/discount_codes' \
  --header 'Authorization: Token token=YOUR-API-TOKEN' \
  --header 'Accept: application/json'
{
  "discount_codes": [
    {
      "_type": "discount_code",
      "id": 2,
      "code": "HALFPRICE",
      "description": "Sell for 50.0% less. Unlimited. Applies to 1 ticket. Used 5 times.",
      "description_for_organizer": null,
      "end_at": null,
      "max_quantity_per_release": null,
      "min_quantity_per_release": null,
      "quantity": null,
      "quantity_used": 5,
      "registrations_count": 3,
      "show_public_releases": "all",
      "show_secret_releases": "none",
      "share_url": "https://ti.to/demo/awesomeconf/discount/HALFPRICE",
      "start_at": null,
      "state": "current",
      "tickets_count": 5,
      "type": "PercentOffDiscountCode",
      "value": "50.0",
      "block_registrations_if_not_applicable": false,
      "disable_for_degressive": false
    },
    {
      "_type": "discount_code",
      "id": 1,
      "code": "FREE2U",
      "description": "Sell for $1 less. Unlimited. Applies to 1 ticket. Used 5 times.",
      "description_for_organizer": null,
      "end_at": null,
      "max_quantity_per_release": null,
      "min_quantity_per_release": null,
      "quantity": null,
      "quantity_used": 5,
      "registrations_count": 3,
      "show_public_releases": "all",
      "show_secret_releases": "none",
      "share_url": "https://ti.to/demo/awesomeconf/discount/FREE2U",
      "start_at": null,
      "state": "current",
      "tickets_count": 5,
      "type": "MoneyOffDiscountCode",
      "value": "1.0",
      "block_registrations_if_not_applicable": false,
      "disable_for_degressive": false
    }
  ],
  "meta": {
    "api_version": "3.1.0",
    "expandable": {
      "releases": false,
      "release_ids": false,
      "release_slugs": false
    },
    "current_page": 1,
    "next_page": null,
    "prev_page": null,
    "total_pages": 1,
    "total_count": 2,
    "per_page": 100,
    "overall_total": 2,
    "resources_hidden_by_default_count": 0,
    "search_states_hidden_by_default": [
      "past"
    ],
    "sort_options": {
      "Code A-Z": {
        "attr": "code",
        "direction": "asc"
      },
      "Code Z-A": {
        "attr": "code",
        "direction": "desc",
        "default": true
      }
    },
    "filter_options": {
      "sections": {
        "states": {
          "label": "Status",
          "open": false
        }
      },
      "collection": false,
      "states": [
        {
          "label": "Current",
          "value": "current"
        },
        {
          "label": "Past",
          "value": "past"
        },
        {
          "label": "Upcoming",
          "value": "upcoming"
        },
        {
          "label": "Used",
          "value": "used"
        },
        {
          "label": "Unused",
          "value": "unused"
        }
      ],
      "selected_states": [
        "current",
        "upcoming",
        "used",
        "unused"
      ]
    }
  }
}

GET /:account_slug/:event_slug/discount_codes

Get a discount code

curl --request GET \
  --url 'https://api.tito.io/v3/:account_slug/:event_slug/discount_codes/:discount_code_id' \
  --header 'Authorization: Token token=YOUR-API-TOKEN' \
  --header 'Accept: application/json'
{
  "discount_code": {
    "_type": "discount_code",
    "id": 1,
    "code": "FREE2U",
    "description": "Sell for $1 less. Unlimited. Applies to 1 ticket. Used 5 times.",
    "description_for_organizer": null,
    "end_at": null,
    "max_quantity_per_release": null,
    "min_quantity_per_release": null,
    "quantity": null,
    "quantity_used": 5,
    "registrations_count": 3,
    "show_public_releases": "all",
    "show_secret_releases": "none",
    "share_url": "https://ti.to/demo/awesomeconf/discount/FREE2U",
    "start_at": null,
    "state": "current",
    "tickets_count": 5,
    "type": "MoneyOffDiscountCode",
    "value": "1.0",
    "block_registrations_if_not_applicable": false,
    "disable_for_degressive": false
  },
  "meta": {
    "api_version": "3.1.0",
    "expandable": {
      "releases": false,
      "release_ids": false,
      "release_slugs": false
    }
  }
}

GET /:account_slug/:event_slug/discount_codes/:discount_code_id

Create a discount code

curl --request POST \
  --url 'https://api.tito.io/v3/:account_slug/:event_slug/discount_codes' \
  --header 'Authorization: Token token=YOUR-API-TOKEN' \
  --header 'Accept: application/json' \
  --header 'Content-Type: application/json' \
  --data '{"discount_code[code]":"NcIgbNNuzOtOwg","discount_code[type]":"PercentOffDiscountCode","discount_code[value]":50}'
{
  "discount_code": {
    "_type": "discount_code",
    "id": 6,
    "code": "NcIgbNNuzOtOwg",
    "description": "Sell for 50.0% less. Unlimited. Applies to 0 tickets. Not used yet.",
    "description_for_organizer": null,
    "end_at": null,
    "max_quantity_per_release": null,
    "min_quantity_per_release": null,
    "quantity": null,
    "quantity_used": 0,
    "registrations_count": 0,
    "show_public_releases": "all",
    "show_secret_releases": "none",
    "share_url": "https://ti.to/demo/awesomeconf/discount/NcIgbNNuzOtOwg",
    "start_at": null,
    "state": "current",
    "tickets_count": 0,
    "type": "PercentOffDiscountCode",
    "value": "50.0",
    "block_registrations_if_not_applicable": false,
    "disable_for_degressive": false
  },
  "meta": {
    "api_version": "3.1.0"
  }
}

POST /:account_slug/:event_slug/discount_codes

Required attributes

Update a discount code

curl --request PATCH \
  --url 'https://api.tito.io/v3/:account_slug/:event_slug/discount_codes/:discount_codes_id' \
  --header 'Authorization: Token token=YOUR-API-TOKEN' \
  --header 'Accept: application/json' \
  --header 'Content-type: application/json' \
  --data '{"discount_code[type]":"MoneyOffDiscountCode","discount_code[value]":1}'
{
  "discount_code": {
    "_type": "discount_code",
    "id": 1,
    "code": "FREE2U",
    "description": "Sell for $1 less. Unlimited. Applies to 1 ticket. Used 5 times.",
    "description_for_organizer": null,
    "end_at": null,
    "max_quantity_per_release": null,
    "min_quantity_per_release": null,
    "quantity": null,
    "quantity_used": 5,
    "registrations_count": 3,
    "show_public_releases": "all",
    "show_secret_releases": "none",
    "share_url": "https://ti.to/demo/awesomeconf/discount/FREE2U",
    "start_at": null,
    "state": "current",
    "tickets_count": 5,
    "type": "MoneyOffDiscountCode",
    "value": "1.0",
    "block_registrations_if_not_applicable": false,
    "disable_for_degressive": false
  },
  "meta": {
    "api_version": "3.1.0"
  }
}

PATCH /:account_slug/:event_slug/discount_codes/:discount_code_id

Required attributes

Delete a discount code

curl --request DELETE \
  --url 'https://api.tito.io/v3/:account_slug/:event_slug/discount_codes/:discount_codes_id' \
  --header 'Authorization: Token token=YOUR-API-TOKEN' \
  --header 'Accept: application/json'

DELETE /:account_slug/:event_slug/discount_codes/:discount_code_id

Events

An Event belongs to an Account and most other resources belong to an event.

An event URL is the combination of the account_slug and the event_slug.

For example https://ti.to/ultimateconf/2024 is composed:

The equivalent event can be looked up using a similar URL structure with the API base URL:

https://api.tito.io/v3/ultimateconf/2024

Attributes

* See translations.

Expansions

Append a comma separated list of expansions to pull back more information about this Event.

Get all upcoming events

curl --request GET \
  --url 'https://api.tito.io/v3/:account_slug/events' \
  --header 'Authorization: Token token=YOUR-API-TOKEN' \
  --header 'Accept: application/json'
{
  "events": [
    {
      "discount_codes_count": 2,
      "_type": "event",
      "id": 1,
      "created_at": "2022-03-26T07:36:06.000Z",
      "updated_at": "2022-03-26T07:59:11.000Z",
      "title": "Awesomeconf",
      "description": null,
      "banner": {
        "url": null,
        "thumb": {
          "url": null
        }
      },
      "banner_url": "/uploads/event/banner/1/",
      "currency": "USD",
      "default_locale": "en",
      "from_email": "\"Awesomeconf\" <support@tito.io>",
      "reply_to_email": "bill@tito.io",
      "archived": false,
      "live": false,
      "test_mode": false,
      "locales": [
        "en"
      ],
      "location": null,
      "logo": {
        "url": null,
        "thumb": {
          "url": null
        },
        "display": {
          "url": null
        }
      },
      "private": false,
      "slug": "awesomeconf",
      "account_id": 1,
      "start_date": "2022-06-26",
      "end_date": null,
      "date_or_range": "June 26th, 2022",
      "days_until": 92,
      "days_since": -92,
      "happening_in": "future",
      "day_number": null,
      "security_token": "8h0xrxP14FJEZrOJyu-eYg",
      "metadata": {
        "my_event_variable": "something",
        "another_event_variable": 123
      },
      "url": "https://ti.to/demo/awesomeconf",
      "setup": false,
      "show_discount_code_field": false,
      "releases_count": 4,
      "account_slug": "demo",
      "consent": {
        "required": false
      },
      "registrations_count": 30,
      "tickets_count": 184,
      "additional_info": null,
      "after_registration_closed_url": null,
      "after_registration_complete_url": null,
      "after_registration_redirect_after_questions": false,
      "any_live_sales": true,
      "any_live_tickets": true,
      "banner_link": null,
      "credit_card_payment_option_id": null,
      "credit_card_payment_option_gateway_type": null,
      "custom_background_color": null,
      "custom_complete_ticket_label": null,
      "custom_css": null,
      "custom_email_css": null,
      "custom_email_signature": null,
      "custom_overlay_css": null,
      "custom_registration_unavailable_message": null,
      "custom_registration_confirmation_subject": null,
      "custom_success_html": null,
      "custom_ticket_message": null,
      "custom_view_ticket_label": null,
      "default_billing_country": null,
      "display_date": null,
      "display_title": null,
      "email_address": "bill@tito.io",
      "email_image": {
        "url": null,
        "thumb": {
          "url": null
        },
        "display": {
          "url": null
        }
      },
      "email_invoice": true,
      "external_order_reference_format": null,
      "facebook_share_message": null,
      "hide_tax_types": false,
      "invoice_change_cutoff_days": 90,
      "invoice_due_days": null,
      "invoice_extra": null,
      "invoice_form_message": null,
      "invoice_issue_method": "100",
      "invoice_number_format": null,
      "invoice_number_offset": null,
      "invoice_payment_instructions": null,
      "invoice_purchase_message": null,
      "invoice_tax_details": null,
      "italian_checkout": false,
      "last_invoice_number": "0000062",
      "lock_changes_when_ticket_not_complete": "1",
      "payment_instructions": null,
      "paypal_payment_option_id": null,
      "map_latitude": "53.3428861",
      "map_link": null,
      "map_longitude": "-6.2674284",
      "map_zoomlevel": 13,
      "max_tickets_per_person": null,
      "max_tickets_per_registration": null,
      "meta_robots": null,
      "min_tickets_per_person": null,
      "min_tickets_per_registration": null,
      "next_invoice_number": "0000063",
      "organization_address": null,
      "organization_name": null,
      "passbook_icon": null,
      "receipt_footer_message": null,
      "register_button_label": null,
      "register_interest_form_label": null,
      "requires_billing_address": false,
      "requires_company_name": false,
      "requires_country": false,
      "requires_vat_number": false,
      "secret_password": null,
      "send_registration_confirmation_email": true,
      "send_ticket_gifted_email": true,
      "send_ticket_updated_email": true,
      "share_link": null,
      "shareable_image": {
        "url": null,
        "thumb": {
          "url": null
        },
        "display": {
          "url": null
        }
      },
      "show_additional_info": true,
      "show_banner": true,
      "show_company_field": false,
      "show_date": true,
      "show_description": true,
      "show_email_address": true,
      "show_invoice_purchase_order_number_field": true,
      "show_location": true,
      "show_logo": true,
      "show_next_tickets": false,
      "show_past_tickets": true,
      "show_phone_number_field": false,
      "show_prices_ex_tax": false,
      "show_register_interest_form": false,
      "show_register_interest_form_tickets_not_on_sale": false,
      "show_register_interest_form_tickets_on_sale": false,
      "show_sharing_links": true,
      "show_tickets_remaining": false,
      "show_tickets_remaining_threshold": null,
      "show_title": true,
      "show_venue": true,
      "snoozing_disabled": false,
      "social_sharing_description": null,
      "social_sharing_title": null,
      "stripe": null,
      "stripe_statement_descriptor": null,
      "team_signoff": null,
      "theme": "mcdonagh",
      "ticket_cancelling_enabled": false,
      "ticket_downloads_enabled": true,
      "ticket_fail_message": null,
      "ticket_gifting_disabled": false,
      "ticket_gifting_disabled_at": null,
      "ticket_gifting_disabled_now": false,
      "ticket_gifting_disabled_message": null,
      "ticket_qr_codes_enabled": true,
      "ticket_success_message": null,
      "ticket_wallet_pass_enabled": true,
      "tickets_form_label": null,
      "timezone": "UTC",
      "typekit_id": null,
      "twitter_share_message": null,
      "users_count": 8
    },
    {
      "discount_codes_count": 0,
      "_type": "event",
      "id": 2,
      "created_at": "2022-03-26T07:37:05.000Z",
      "updated_at": "2022-03-26T07:37:05.000Z",
      "title": "Very Cool Conf",
      "description": null,
      "banner": {
        "url": null,
        "thumb": {
          "url": null
        }
      },
      "banner_url": "/uploads/event/banner/2/",
      "currency": "USD",
      "default_locale": "en",
      "from_email": "\"Very Cool Conf\" <support@tito.io>",
      "reply_to_email": "bill@tito.io",
      "archived": false,
      "live": false,
      "test_mode": true,
      "locales": [
        "en"
      ],
      "location": null,
      "logo": {
        "url": null,
        "thumb": {
          "url": null
        },
        "display": {
          "url": null
        }
      },
      "private": false,
      "slug": "very-cool-conf",
      "account_id": 1,
      "start_date": null,
      "end_date": null,
      "date_or_range": "",
      "days_until": null,
      "days_since": null,
      "happening_in": "unknown",
      "day_number": null,
      "security_token": "zm5D5oJ5kf2AmncXlRHYjQ",
      "metadata": null,
      "url": "https://ti.to/demo/very-cool-conf",
      "setup": true,
      "show_discount_code_field": false,
      "releases_count": 0,
      "account_slug": "demo",
      "consent": {
        "required": false
      },
      "registrations_count": 0,
      "tickets_count": 0,
      "additional_info": null,
      "after_registration_closed_url": null,
      "after_registration_complete_url": null,
      "after_registration_redirect_after_questions": false,
      "any_live_sales": false,
      "any_live_tickets": false,
      "banner_link": null,
      "credit_card_payment_option_id": null,
      "credit_card_payment_option_gateway_type": null,
      "custom_background_color": null,
      "custom_complete_ticket_label": null,
      "custom_css": null,
      "custom_email_css": null,
      "custom_email_signature": null,
      "custom_overlay_css": null,
      "custom_registration_unavailable_message": null,
      "custom_registration_confirmation_subject": null,
      "custom_success_html": null,
      "custom_ticket_message": null,
      "custom_view_ticket_label": null,
      "default_billing_country": null,
      "display_date": null,
      "display_title": null,
      "email_address": "bill@tito.io",
      "email_image": {
        "url": null,
        "thumb": {
          "url": null
        },
        "display": {
          "url": null
        }
      },
      "email_invoice": true,
      "external_order_reference_format": null,
      "facebook_share_message": null,
      "hide_tax_types": false,
      "invoice_change_cutoff_days": 90,
      "invoice_due_days": null,
      "invoice_extra": null,
      "invoice_form_message": null,
      "invoice_issue_method": "100",
      "invoice_number_format": null,
      "invoice_number_offset": null,
      "invoice_payment_instructions": null,
      "invoice_purchase_message": null,
      "invoice_tax_details": null,
      "italian_checkout": false,
      "last_invoice_number": null,
      "lock_changes_when_ticket_not_complete": "1",
      "payment_instructions": null,
      "paypal_payment_option_id": null,
      "map_latitude": null,
      "map_link": null,
      "map_longitude": null,
      "map_zoomlevel": null,
      "max_tickets_per_person": null,
      "max_tickets_per_registration": null,
      "meta_robots": null,
      "min_tickets_per_person": null,
      "min_tickets_per_registration": null,
      "next_invoice_number": "0000001",
      "organization_address": null,
      "organization_name": null,
      "passbook_icon": null,
      "receipt_footer_message": null,
      "register_button_label": null,
      "register_interest_form_label": null,
      "requires_billing_address": false,
      "requires_company_name": false,
      "requires_country": false,
      "requires_vat_number": false,
      "secret_password": null,
      "send_registration_confirmation_email": true,
      "send_ticket_gifted_email": true,
      "send_ticket_updated_email": true,
      "share_link": null,
      "shareable_image": {
        "url": null,
        "thumb": {
          "url": null
        },
        "display": {
          "url": null
        }
      },
      "show_additional_info": true,
      "show_banner": true,
      "show_company_field": false,
      "show_date": true,
      "show_description": true,
      "show_email_address": true,
      "show_invoice_purchase_order_number_field": true,
      "show_location": true,
      "show_logo": true,
      "show_next_tickets": false,
      "show_past_tickets": true,
      "show_phone_number_field": false,
      "show_prices_ex_tax": false,
      "show_register_interest_form": false,
      "show_register_interest_form_tickets_not_on_sale": false,
      "show_register_interest_form_tickets_on_sale": false,
      "show_sharing_links": true,
      "show_tickets_remaining": false,
      "show_tickets_remaining_threshold": null,
      "show_title": true,
      "show_venue": true,
      "snoozing_disabled": false,
      "social_sharing_description": null,
      "social_sharing_title": null,
      "stripe": null,
      "stripe_statement_descriptor": null,
      "team_signoff": null,
      "theme": "mcdonagh",
      "ticket_cancelling_enabled": false,
      "ticket_downloads_enabled": true,
      "ticket_fail_message": null,
      "ticket_gifting_disabled": false,
      "ticket_gifting_disabled_at": null,
      "ticket_gifting_disabled_now": false,
      "ticket_gifting_disabled_message": null,
      "ticket_qr_codes_enabled": true,
      "ticket_success_message": null,
      "ticket_wallet_pass_enabled": true,
      "tickets_form_label": null,
      "timezone": "UTC",
      "typekit_id": null,
      "twitter_share_message": null,
      "users_count": 6
    },
    "..."
  ],
  "meta": {
    "api_version": "3.1.0",
    "expandable": {
      "paypal_payment_options": false,
      "currency_options": false,
      "releases": false,
      "release_ids": false,
      "release_slugs": false
    },
    "current_page": 1,
    "next_page": null,
    "prev_page": null,
    "total_pages": 1,
    "total_count": 4,
    "per_page": 100,
    "filter_options": {
      "sections": {
        "states": {
          "label": "Status",
          "open": false
        }
      },
      "collection": false,
      "states": [
        {
          "label": "Past",
          "value": "past"
        },
        {
          "label": "Upcoming",
          "value": "upcoming"
        }
      ],
      "selected_states": [
        "upcoming"
      ]
    }
  }
}

GET /:account_slug/events

Get all Past Events

Where the end_date is in the past.

curl --request GET \
  --url 'https://api.tito.io/v3/:account_slug/events/past' \
  --header 'Authorization: Token token=YOUR-API-TOKEN' \
  --header 'Accept: application/json'

GET /:account_slug/events/past

Get all Archived Events

Where the event is archived.

curl --request GET \
  --url 'https://api.tito.io/v3/:account_slug/events/archived' \
  --header 'Authorization: Token token=YOUR-API-TOKEN' \
  --header 'Accept: application/json'

GET /:account_slug/events/archived

Get an event

curl --request GET \
  --url 'https://api.tito.io/v3/:account_slug/:event_slug' \
  --header 'Authorization: Token token=YOUR-API-TOKEN' \
  --header 'Accept: application/json'
{
  "event": {
    "discount_codes_count": 2,
    "_type": "event",
    "id": 1,
    "created_at": "2022-03-26T07:36:06.000Z",
    "updated_at": "2022-03-26T07:59:11.000Z",
    "title": "Awesomeconf",
    "description": null,
    "banner": {
      "url": null,
      "thumb": {
        "url": null
      }
    },
    "banner_url": "/uploads/event/banner/1/",
    "currency": "USD",
    "default_locale": "en",
    "from_email": "\"Awesomeconf\" <support@tito.io>",
    "reply_to_email": "bill@tito.io",
    "archived": false,
    "live": false,
    "test_mode": false,
    "locales": [
      "en"
    ],
    "location": null,
    "logo": {
      "url": null,
      "thumb": {
        "url": null
      },
      "display": {
        "url": null
      }
    },
    "private": false,
    "slug": "awesomeconf",
    "account_id": 1,
    "start_date": "2022-06-26",
    "end_date": null,
    "date_or_range": "June 26th, 2022",
    "days_until": 92,
    "days_since": -92,
    "happening_in": "future",
    "day_number": null,
    "security_token": "8h0xrxP14FJEZrOJyu-eYg",
    "metadata": {
      "my_event_variable": "something",
      "another_event_variable": 123
    },
    "url": "https://ti.to/demo/awesomeconf",
    "setup": false,
    "show_discount_code_field": false,
    "releases_count": 4,
    "account_slug": "demo",
    "consent": {
      "required": false
    },
    "registrations_count": 30,
    "tickets_count": 184,
    "additional_info": null,
    "after_registration_closed_url": null,
    "after_registration_complete_url": null,
    "after_registration_redirect_after_questions": false,
    "any_live_sales": true,
    "any_live_tickets": true,
    "banner_link": null,
    "credit_card_payment_option_id": null,
    "credit_card_payment_option_gateway_type": null,
    "custom_background_color": null,
    "custom_complete_ticket_label": null,
    "custom_css": null,
    "custom_email_css": null,
    "custom_email_signature": null,
    "custom_overlay_css": null,
    "custom_registration_unavailable_message": null,
    "custom_registration_confirmation_subject": null,
    "custom_success_html": null,
    "custom_ticket_message": null,
    "custom_view_ticket_label": null,
    "default_billing_country": null,
    "display_date": null,
    "display_title": null,
    "email_address": "bill@tito.io",
    "email_image": {
      "url": null,
      "thumb": {
        "url": null
      },
      "display": {
        "url": null
      }
    },
    "email_invoice": true,
    "external_order_reference_format": null,
    "facebook_share_message": null,
    "hide_tax_types": false,
    "invoice_change_cutoff_days": 90,
    "invoice_due_days": null,
    "invoice_extra": null,
    "invoice_form_message": null,
    "invoice_issue_method": "100",
    "invoice_number_format": null,
    "invoice_number_offset": null,
    "invoice_payment_instructions": null,
    "invoice_purchase_message": null,
    "invoice_tax_details": null,
    "italian_checkout": false,
    "last_invoice_number": "0000062",
    "lock_changes_when_ticket_not_complete": "1",
    "payment_instructions": null,
    "paypal_payment_option_id": null,
    "map_latitude": "53.3428861",
    "map_link": null,
    "map_longitude": "-6.2674284",
    "map_zoomlevel": 13,
    "max_tickets_per_person": null,
    "max_tickets_per_registration": null,
    "meta_robots": null,
    "min_tickets_per_person": null,
    "min_tickets_per_registration": null,
    "next_invoice_number": "0000063",
    "organization_address": null,
    "organization_name": null,
    "passbook_icon": null,
    "receipt_footer_message": null,
    "register_button_label": null,
    "register_interest_form_label": null,
    "requires_billing_address": false,
    "requires_company_name": false,
    "requires_country": false,
    "requires_vat_number": false,
    "secret_password": null,
    "send_registration_confirmation_email": true,
    "send_ticket_gifted_email": true,
    "send_ticket_updated_email": true,
    "share_link": null,
    "shareable_image": {
      "url": null,
      "thumb": {
        "url": null
      },
      "display": {
        "url": null
      }
    },
    "show_additional_info": true,
    "show_banner": true,
    "show_company_field": false,
    "show_date": true,
    "show_description": true,
    "show_email_address": true,
    "show_invoice_purchase_order_number_field": true,
    "show_location": true,
    "show_logo": true,
    "show_next_tickets": false,
    "show_past_tickets": true,
    "show_phone_number_field": false,
    "show_prices_ex_tax": false,
    "show_register_interest_form": false,
    "show_register_interest_form_tickets_not_on_sale": false,
    "show_register_interest_form_tickets_on_sale": false,
    "show_sharing_links": true,
    "show_tickets_remaining": false,
    "show_tickets_remaining_threshold": null,
    "show_title": true,
    "show_venue": true,
    "snoozing_disabled": false,
    "social_sharing_description": null,
    "social_sharing_title": null,
    "stripe": null,
    "stripe_statement_descriptor": null,
    "team_signoff": null,
    "theme": "mcdonagh",
    "ticket_cancelling_enabled": false,
    "ticket_downloads_enabled": true,
    "ticket_fail_message": null,
    "ticket_gifting_disabled": false,
    "ticket_gifting_disabled_at": null,
    "ticket_gifting_disabled_now": false,
    "ticket_gifting_disabled_message": null,
    "ticket_qr_codes_enabled": true,
    "ticket_success_message": null,
    "ticket_wallet_pass_enabled": true,
    "tickets_form_label": null,
    "timezone": "UTC",
    "typekit_id": null,
    "twitter_share_message": null,
    "users_count": 8
  },
  "meta": {
    "api_version": "3.1.0",
    "expandable": {
      "paypal_payment_options": false,
      "currency_options": false,
      "releases": false,
      "release_ids": false,
      "release_slugs": false
    }
  }
}

GET /:account_slug/:event_slug

Create an event

curl --request POST \
  --url 'https://api.tito.io/v3/:account_slug/events' \
  --header 'Authorization: Token token=YOUR-API-TOKEN' \
  --header 'Accept: application/json' \
  --header 'Content-Type: application/json' \
  --data '{"event[title]":"Very Cool Conf"}'
{
  "event": {
    "discount_codes_count": 0,
    "_type": "event",
    "id": 5,
    "created_at": "2022-03-26T07:59:15.000Z",
    "updated_at": "2022-03-26T07:59:15.000Z",
    "title": "Very Cool Conf",
    "description": null,
    "banner": {
      "url": null,
      "thumb": {
        "url": null
      }
    },
    "banner_url": "/uploads/event/banner/5/",
    "currency": "USD",
    "default_locale": "en",
    "from_email": "\"Very Cool Conf\" <support@tito.io>",
    "reply_to_email": "bill@tito.io",
    "archived": false,
    "live": false,
    "test_mode": true,
    "locales": [
      "en"
    ],
    "location": null,
    "logo": {
      "url": null,
      "thumb": {
        "url": null
      },
      "display": {
        "url": null
      }
    },
    "private": false,
    "slug": "very-cool-conf-5f2b344b-f94a-4bac-8a83-997cb0446fb0",
    "account_id": 1,
    "start_date": null,
    "end_date": null,
    "date_or_range": "",
    "days_until": null,
    "days_since": null,
    "happening_in": "unknown",
    "day_number": null,
    "security_token": "C82MQ7VjshkNIRde-vOMbA",
    "metadata": null,
    "url": "https://ti.to/demo/very-cool-conf-5f2b344b-f94a-4bac-8a83-997cb0446fb0",
    "setup": true,
    "show_discount_code_field": false,
    "releases_count": 0,
    "account_slug": "demo",
    "consent": {
      "required": false
    },
    "registrations_count": 0,
    "tickets_count": 0,
    "additional_info": null,
    "after_registration_closed_url": null,
    "after_registration_complete_url": null,
    "after_registration_redirect_after_questions": false,
    "any_live_sales": false,
    "any_live_tickets": false,
    "banner_link": null,
    "credit_card_payment_option_id": null,
    "credit_card_payment_option_gateway_type": null,
    "custom_background_color": null,
    "custom_complete_ticket_label": null,
    "custom_css": null,
    "custom_email_css": null,
    "custom_email_signature": null,
    "custom_overlay_css": null,
    "custom_registration_unavailable_message": null,
    "custom_registration_confirmation_subject": null,
    "custom_success_html": null,
    "custom_ticket_message": null,
    "custom_view_ticket_label": null,
    "default_billing_country": null,
    "display_date": null,
    "display_title": null,
    "email_address": "bill@tito.io",
    "email_image": {
      "url": null,
      "thumb": {
        "url": null
      },
      "display": {
        "url": null
      }
    },
    "email_invoice": true,
    "external_order_reference_format": null,
    "facebook_share_message": null,
    "hide_tax_types": false,
    "invoice_change_cutoff_days": 90,
    "invoice_due_days": null,
    "invoice_extra": null,
    "invoice_form_message": null,
    "invoice_issue_method": "100",
    "invoice_number_format": null,
    "invoice_number_offset": null,
    "invoice_payment_instructions": null,
    "invoice_purchase_message": null,
    "invoice_tax_details": null,
    "italian_checkout": false,
    "last_invoice_number": null,
    "lock_changes_when_ticket_not_complete": "1",
    "payment_instructions": null,
    "paypal_payment_option_id": null,
    "map_latitude": null,
    "map_link": null,
    "map_longitude": null,
    "map_zoomlevel": null,
    "max_tickets_per_person": null,
    "max_tickets_per_registration": null,
    "meta_robots": null,
    "min_tickets_per_person": null,
    "min_tickets_per_registration": null,
    "next_invoice_number": "0000001",
    "organization_address": null,
    "organization_name": null,
    "passbook_icon": null,
    "receipt_footer_message": null,
    "register_button_label": null,
    "register_interest_form_label": null,
    "requires_billing_address": false,
    "requires_company_name": false,
    "requires_country": false,
    "requires_vat_number": false,
    "secret_password": null,
    "send_registration_confirmation_email": true,
    "send_ticket_gifted_email": true,
    "send_ticket_updated_email": true,
    "share_link": null,
    "shareable_image": {
      "url": null,
      "thumb": {
        "url": null
      },
      "display": {
        "url": null
      }
    },
    "show_additional_info": true,
    "show_banner": true,
    "show_company_field": false,
    "show_date": true,
    "show_description": true,
    "show_email_address": true,
    "show_invoice_purchase_order_number_field": true,
    "show_location": true,
    "show_logo": true,
    "show_next_tickets": false,
    "show_past_tickets": true,
    "show_phone_number_field": false,
    "show_prices_ex_tax": false,
    "show_register_interest_form": false,
    "show_register_interest_form_tickets_not_on_sale": false,
    "show_register_interest_form_tickets_on_sale": false,
    "show_sharing_links": true,
    "show_tickets_remaining": false,
    "show_tickets_remaining_threshold": null,
    "show_title": true,
    "show_venue": true,
    "snoozing_disabled": false,
    "social_sharing_description": null,
    "social_sharing_title": null,
    "stripe": null,
    "stripe_statement_descriptor": null,
    "team_signoff": null,
    "theme": "mcdonagh",
    "ticket_cancelling_enabled": false,
    "ticket_downloads_enabled": true,
    "ticket_fail_message": null,
    "ticket_gifting_disabled": false,
    "ticket_gifting_disabled_at": null,
    "ticket_gifting_disabled_now": false,
    "ticket_gifting_disabled_message": null,
    "ticket_qr_codes_enabled": true,
    "ticket_success_message": null,
    "ticket_wallet_pass_enabled": true,
    "tickets_form_label": null,
    "timezone": "UTC",
    "typekit_id": null,
    "twitter_share_message": null,
    "users_count": 6
  },
  "meta": {
    "api_version": "3.1.0"
  }
}

POST /:account_slug/events

Required attributes

Update an event

curl --request PATCH \
  --url 'https://api.tito.io/v3/:account_slug/events/:events_slug' \
  --header 'Authorization: Token token=YOUR-API-TOKEN' \
  --header 'Accept: application/json' \
  --header 'Content-type: application/json' \
  --data '{"event[quantity]":100}'
{
  "event": {
    "discount_codes_count": 2,
    "_type": "event",
    "id": 1,
    "created_at": "2022-03-26T07:36:06.000Z",
    "updated_at": "2022-03-26T07:59:11.000Z",
    "title": "Awesomeconf",
    "description": null,
    "banner": {
      "url": null,
      "thumb": {
        "url": null
      }
    },
    "banner_url": "/uploads/event/banner/1/",
    "currency": "USD",
    "default_locale": "en",
    "from_email": "\"Awesomeconf\" <support@tito.io>",
    "reply_to_email": "bill@tito.io",
    "archived": false,
    "live": false,
    "test_mode": false,
    "locales": [
      "en"
    ],
    "location": null,
    "logo": {
      "url": null,
      "thumb": {
        "url": null
      },
      "display": {
        "url": null
      }
    },
    "private": false,
    "slug": "awesomeconf",
    "account_id": 1,
    "start_date": "2022-06-26",
    "end_date": null,
    "date_or_range": "June 26th, 2022",
    "days_until": 92,
    "days_since": -92,
    "happening_in": "future",
    "day_number": null,
    "security_token": "8h0xrxP14FJEZrOJyu-eYg",
    "metadata": {
      "my_event_variable": "something",
      "another_event_variable": 123
    },
    "url": "https://ti.to/demo/awesomeconf",
    "setup": false,
    "show_discount_code_field": false,
    "releases_count": 4,
    "account_slug": "demo",
    "consent": {
      "required": false
    },
    "registrations_count": 30,
    "tickets_count": 184,
    "additional_info": null,
    "after_registration_closed_url": null,
    "after_registration_complete_url": null,
    "after_registration_redirect_after_questions": false,
    "any_live_sales": true,
    "any_live_tickets": true,
    "banner_link": null,
    "credit_card_payment_option_id": null,
    "credit_card_payment_option_gateway_type": null,
    "custom_background_color": null,
    "custom_complete_ticket_label": null,
    "custom_css": null,
    "custom_email_css": null,
    "custom_email_signature": null,
    "custom_overlay_css": null,
    "custom_registration_unavailable_message": null,
    "custom_registration_confirmation_subject": null,
    "custom_success_html": null,
    "custom_ticket_message": null,
    "custom_view_ticket_label": null,
    "default_billing_country": null,
    "display_date": null,
    "display_title": null,
    "email_address": "bill@tito.io",
    "email_image": {
      "url": null,
      "thumb": {
        "url": null
      },
      "display": {
        "url": null
      }
    },
    "email_invoice": true,
    "external_order_reference_format": null,
    "facebook_share_message": null,
    "hide_tax_types": false,
    "invoice_change_cutoff_days": 90,
    "invoice_due_days": null,
    "invoice_extra": null,
    "invoice_form_message": null,
    "invoice_issue_method": "100",
    "invoice_number_format": null,
    "invoice_number_offset": null,
    "invoice_payment_instructions": null,
    "invoice_purchase_message": null,
    "invoice_tax_details": null,
    "italian_checkout": false,
    "last_invoice_number": "0000062",
    "lock_changes_when_ticket_not_complete": "1",
    "payment_instructions": null,
    "paypal_payment_option_id": null,
    "map_latitude": "53.3428861",
    "map_link": null,
    "map_longitude": "-6.2674284",
    "map_zoomlevel": 13,
    "max_tickets_per_person": null,
    "max_tickets_per_registration": null,
    "meta_robots": null,
    "min_tickets_per_person": null,
    "min_tickets_per_registration": null,
    "next_invoice_number": "0000063",
    "organization_address": null,
    "organization_name": null,
    "passbook_icon": null,
    "receipt_footer_message": null,
    "register_button_label": null,
    "register_interest_form_label": null,
    "requires_billing_address": false,
    "requires_company_name": false,
    "requires_country": false,
    "requires_vat_number": false,
    "secret_password": null,
    "send_registration_confirmation_email": true,
    "send_ticket_gifted_email": true,
    "send_ticket_updated_email": true,
    "share_link": null,
    "shareable_image": {
      "url": null,
      "thumb": {
        "url": null
      },
      "display": {
        "url": null
      }
    },
    "show_additional_info": true,
    "show_banner": true,
    "show_company_field": false,
    "show_date": true,
    "show_description": true,
    "show_email_address": true,
    "show_invoice_purchase_order_number_field": true,
    "show_location": true,
    "show_logo": true,
    "show_next_tickets": false,
    "show_past_tickets": true,
    "show_phone_number_field": false,
    "show_prices_ex_tax": false,
    "show_register_interest_form": false,
    "show_register_interest_form_tickets_not_on_sale": false,
    "show_register_interest_form_tickets_on_sale": false,
    "show_sharing_links": true,
    "show_tickets_remaining": false,
    "show_tickets_remaining_threshold": null,
    "show_title": true,
    "show_venue": true,
    "snoozing_disabled": false,
    "social_sharing_description": null,
    "social_sharing_title": null,
    "stripe": null,
    "stripe_statement_descriptor": null,
    "team_signoff": null,
    "theme": "mcdonagh",
    "ticket_cancelling_enabled": false,
    "ticket_downloads_enabled": true,
    "ticket_fail_message": null,
    "ticket_gifting_disabled": false,
    "ticket_gifting_disabled_at": null,
    "ticket_gifting_disabled_now": false,
    "ticket_gifting_disabled_message": null,
    "ticket_qr_codes_enabled": true,
    "ticket_success_message": null,
    "ticket_wallet_pass_enabled": true,
    "tickets_form_label": null,
    "timezone": "UTC",
    "typekit_id": null,
    "twitter_share_message": null,
    "users_count": 8
  },
  "meta": {
    "api_version": "3.1.0"
  }
}

PATCH /:account_slug/:event_slug

Required attributes

Delete an event

curl --request DELETE \
  --url 'https://api.tito.io/v3/:account_slug/events/:events_slug' \
  --header 'Authorization: Token token=YOUR-API-TOKEN' \
  --header 'Accept: application/json'

DELETE /:account_slug/:event_slug

Duplicate an event

curl --request POST \
  --url 'https://api.tito.io/v3/:account_slug/:event_slug/duplication' \
  --header 'Authorization: Token token=YOUR-API-TOKEN' \
  --header 'Accept: application/json' \
  --header 'Content-Type: application/json' \
{
   "duplication":{  
      "_type":"duplication",
      "status":"processing",
      "title":null,
      "slug":null
   }
}

POST /:account_slug/:event_slug/duplication

As duplicating an Event happens asynchronously the Tito API provides a response indicating the current status of the duplication:

The latest status of the duplication can be then looked up.

Duplicate an event status

curl --request GET \
  --url 'https://api.tito.io/v3/:account_slug/:event_slug/duplication' \
  --header 'Authorization: Token token=YOUR-API-TOKEN' \
  --header 'Accept: application/json'
{
   "duplication":{  
      "_type":"duplication",
      "status":"complete",
      "title":"2018 Copy",
      "slug":"2018-copy"
   }
}

GET /:account_slug/:event_slug/duplication

The latest status of the Event duplication.

As duplicating an Event happens asynchronously the API provides the ability to lookup the latest status of the duplication. The status can be either:

Once the duplication completes the Event slug and title will be assigned.

Interested Users

Read more about interested users

Attributes

Get all interested users

curl --request GET \
  --url 'https://api.tito.io/v3/:account_slug/:event_slug/interested_users' \
  --header 'Authorization: Token token=YOUR-API-TOKEN' \
  --header 'Accept: application/json'
{
  "interested_users": [
    {
      "_type": "interested_user",
      "id": 1,
      "name": "Darth Sidious",
      "email": "w4wQQDFn-9PkIg@example.com",
      "created_at": "2022-03-26T07:36:07.000Z",
      "updated_at": "2022-03-26T07:59:07.000Z"
    },
    {
      "_type": "interested_user",
      "id": 2,
      "name": "Borvo the Hutt",
      "email": "jamarcus.littel@example.net",
      "created_at": "2022-03-26T07:36:07.000Z",
      "updated_at": "2022-03-26T07:36:07.000Z"
    },
    "..."
  ],
  "meta": {
    "api_version": "3.1.0",
    "expandable": {
    },
    "current_page": 1,
    "next_page": null,
    "prev_page": null,
    "total_pages": 1,
    "total_count": 3,
    "per_page": 100,
    "overall_total": 3,
    "filter_options": {
      "sections": {
        "states": {
          "label": "Status",
          "open": false
        }
      },
      "collection": false,
      "states": [

      ]
    }
  }
}

GET /:account_slug/:event_slug/interested_users

Get an interested user

curl --request GET \
  --url 'https://api.tito.io/v3/:account_slug/:event_slug/interested_users/:interested_user_id' \
  --header 'Authorization: Token token=YOUR-API-TOKEN' \
  --header 'Accept: application/json'
{
  "interested_user": {
    "_type": "interested_user",
    "id": 1,
    "name": "Darth Sidious",
    "email": "w4wQQDFn-9PkIg@example.com",
    "created_at": "2022-03-26T07:36:07.000Z",
    "updated_at": "2022-03-26T07:59:07.000Z"
  },
  "meta": {
    "api_version": "3.1.0",
    "expandable": {
    }
  }
}

GET /:account_slug/:event_slug/interested_users/:interested_user_id

Create an interested user

curl --request POST \
  --url 'https://api.tito.io/v3/:account_slug/:event_slug/interested_users' \
  --header 'Authorization: Token token=YOUR-API-TOKEN' \
  --header 'Accept: application/json' \
  --header 'Content-Type: application/json' \
  --data '{"interested_user[email]":"871mkW1IE_8m8g@example.com"}'
{
  "interested_user": {
    "_type": "interested_user",
    "id": 7,
    "name": null,
    "email": "871mkW1IE_8m8g@example.com",
    "created_at": "2022-03-26T07:59:19.000Z",
    "updated_at": "2022-03-26T07:59:19.000Z"
  },
  "meta": {
    "api_version": "3.1.0"
  }
}

POST /:account_slug/:event_slug/interested_users

Required attributes

Update an interested user

curl --request PATCH \
  --url 'https://api.tito.io/v3/:account_slug/:event_slug/interested_users/:interested_users_id' \
  --header 'Authorization: Token token=YOUR-API-TOKEN' \
  --header 'Accept: application/json' \
  --header 'Content-type: application/json' \
  --data '{"interested_user[email]":"UdYANi0-YvKyiQ@example.com"}'
{
  "interested_user": {
    "_type": "interested_user",
    "id": 1,
    "name": "Darth Sidious",
    "email": "UdYANi0-YvKyiQ@example.com",
    "created_at": "2022-03-26T07:36:07.000Z",
    "updated_at": "2022-03-26T07:59:19.000Z"
  },
  "meta": {
    "api_version": "3.1.0"
  }
}

PATCH /:account_slug/:event_slug/interested_users/:interested_user_id

Required attributes

Delete an interested user

curl --request DELETE \
  --url 'https://api.tito.io/v3/:account_slug/:event_slug/interested_users/:interested_users_id' \
  --header 'Authorization: Token token=YOUR-API-TOKEN' \
  --header 'Accept: application/json'

DELETE /:account_slug/:event_slug/interested_users/:interested_user_id

Opt-ins

Opt-ins is a beta feature. Contact us to get it enabled.

Read more about opt-ins

Attributes

* See translations.

Expansions

Append a comma separated list of expansions to pull back more information about this Opt-in.

Get all opt-ins

curl --request GET \
  --url 'https://api.tito.io/v3/:account_slug/:event_slug/opt_ins' \
  --header 'Authorization: Token token=YOUR-API-TOKEN' \
  --header 'Accept: application/json'
{
  "opt_ins": [
    {
      "_type": "opt_in",
      "id": 1,
      "slug": "newsletter",
      "name": "Newsletter",
      "description": "Please join!",
      "acceptance_count": 0,
      "created_at": "2022-03-26T07:36:06.000Z",
      "updated_at": "2022-03-26T07:37:10.000Z"
    }
  ],
  "meta": {
    "api_version": "3.1.0",
    "expandable": {
      "releases": false,
      "release_ids": false
    },
    "current_page": 1,
    "next_page": null,
    "prev_page": null,
    "total_pages": 1,
    "total_count": 1,
    "per_page": 100,
    "overall_total": 1,
    "sort_options": {
      "A-Z": {
        "attr": "name",
        "direction": "asc",
        "default": true
      },
      "Z-A": {
        "attr": "name",
        "direction": "desc"
      }
    },
    "filter_options": {
      "sections": {
        "states": {
          "label": "Status",
          "open": false
        }
      },
      "collection": false,
      "states": [

      ]
    }
  }
}

GET /:account_slug/:event_slug/opt_ins

Get an opt-in

curl --request GET \
  --url 'https://api.tito.io/v3/:account_slug/:event_slug/opt_ins/:opt_in_slug' \
  --header 'Authorization: Token token=YOUR-API-TOKEN' \
  --header 'Accept: application/json'
{
  "opt_in": {
    "_type": "opt_in",
    "id": 1,
    "slug": "newsletter",
    "name": "Newsletter",
    "description": "Please join!",
    "acceptance_count": 0,
    "created_at": "2022-03-26T07:36:06.000Z",
    "updated_at": "2022-03-26T07:37:10.000Z"
  },
  "meta": {
    "api_version": "3.1.0",
    "expandable": {
      "releases": false,
      "release_ids": false
    }
  }
}

GET /:account_slug/:event_slug/opt_ins/:opt_in_slug

Create an opt-in

curl --request POST \
  --url 'https://api.tito.io/v3/:account_slug/:event_slug/opt_ins' \
  --header 'Authorization: Token token=YOUR-API-TOKEN' \
  --header 'Accept: application/json' \
  --header 'Content-Type: application/json' \
  --data '{"opt_in[name]":"Swag","opt_in[description]":"Would you like SWAG?"}'
{
  "opt_in": {
    "_type": "opt_in",
    "id": 5,
    "slug": "swag",
    "name": "Swag",
    "description": "Would you like SWAG?",
    "acceptance_count": 0,
    "created_at": "2022-03-26T07:59:19.000Z",
    "updated_at": "2022-03-26T07:59:19.000Z"
  },
  "meta": {
    "api_version": "3.1.0"
  }
}

POST /:account_slug/:event_slug/opt_ins

Required attributes

Update an opt-in

curl --request PATCH \
  --url 'https://api.tito.io/v3/:account_slug/:event_slug/opt_ins/:opt_ins_slug' \
  --header 'Authorization: Token token=YOUR-API-TOKEN' \
  --header 'Accept: application/json' \
  --header 'Content-type: application/json' \
  --data '{"opt_in[description]":"Please join!"}'
{
  "opt_in": {
    "_type": "opt_in",
    "id": 1,
    "slug": "newsletter",
    "name": "Newsletter",
    "description": "Please join!",
    "acceptance_count": 0,
    "created_at": "2022-03-26T07:36:06.000Z",
    "updated_at": "2022-03-26T07:37:10.000Z"
  },
  "meta": {
    "api_version": "3.1.0"
  }
}

PATCH /:account_slug/:event_slug/opt_ins/:opt_in_slug

Required attributes

Delete an opt-in

curl --request DELETE \
  --url 'https://api.tito.io/v3/:account_slug/:event_slug/opt_ins/:opt_ins_slug' \
  --header 'Authorization: Token token=YOUR-API-TOKEN' \
  --header 'Accept: application/json'

DELETE /:account_slug/:event_slug/opt_ins/:opt_in_slug

Questions

Read more about questions

Attributes

* See translations.

Get all questions

curl --request GET \
  --url 'https://api.tito.io/v3/:account_slug/:event_slug/questions' \
  --header 'Authorization: Token token=YOUR-API-TOKEN' \
  --header 'Accept: application/json'
{
  "questions": [
    {
      "_type": "question",
      "id": 1,
      "answers_count": 49,
      "description": "What is your most favorite color of all?",
      "title": "Fave tree?",
      "field_type": "Text",
      "include_free_text_field": false,
      "required": false,
      "slug": "favorite-color",
      "tickets_count": 103,
      "created_at": "2022-03-26T07:36:06.000Z",
      "updated_at": "2022-03-26T07:37:09.000Z"
    },
    {
      "_type": "question",
      "id": 2,
      "answers_count": 153,
      "description": "To help us with travel arrangements",
      "title": "Where do you live?",
      "field_type": "Country",
      "include_free_text_field": false,
      "required": true,
      "slug": "where-do-you-live",
      "tickets_count": 0,
      "created_at": "2022-03-26T07:36:06.000Z",
      "updated_at": "2022-03-26T07:36:06.000Z"
    }
  ],
  "meta": {
    "api_version": "3.1.0",
    "expandable": {
      "activities": false,
      "releases": false
    },
    "current_page": 1,
    "next_page": null,
    "prev_page": null,
    "total_pages": 1,
    "total_count": 3,
    "per_page": 100,
    "overall_total": 2,
    "sort_options": {
      "Question Title, A-Z": {
        "attr": "title",
        "direction": "asc",
        "default": true
      },
      "Question Title, Z-A": {
        "attr": "title",
        "direction": "desc"
      }
    },
    "filter_options": {
      "sections": {
        "states": {
          "label": "Status",
          "open": false
        }
      },
      "collection": false,
      "states": [

      ]
    }
  }
}

GET /:account_slug/:event_slug/questions

Get a question

curl --request GET \
  --url 'https://api.tito.io/v3/:account_slug/:event_slug/questions/:question_slug' \
  --header 'Authorization: Token token=YOUR-API-TOKEN' \
  --header 'Accept: application/json'
{
  "question": {
    "_type": "question",
    "id": 1,
    "answers_count": 49,
    "description": "What is your most favorite color of all?",
    "title": "Fave tree?",
    "field_type": "Text",
    "include_free_text_field": false,
    "required": false,
    "slug": "favorite-color",
    "tickets_count": 103,
    "created_at": "2022-03-26T07:36:06.000Z",
    "updated_at": "2022-03-26T07:37:09.000Z"
  },
  "meta": {
    "api_version": "3.1.0",
    "expandable": {
      "activities": false,
      "releases": false
    }
  }
}

GET /:account_slug/:event_slug/questions/:question_slug

Create a question

curl --request POST \
  --url 'https://api.tito.io/v3/:account_slug/:event_slug/questions' \
  --header 'Authorization: Token token=YOUR-API-TOKEN' \
  --header 'Accept: application/json' \
  --header 'Content-Type: application/json' \
  --data '{"question[title]":"Fave city?","question[field_type]":"Text"}'
{
  "question": {
    "_type": "question",
    "id": 6,
    "answers_count": null,
    "description": null,
    "title": "Fave city?",
    "field_type": "Text",
    "include_free_text_field": false,
    "required": false,
    "slug": "fave-city",
    "tickets_count": 0,
    "created_at": "2022-03-26T07:59:18.000Z",
    "updated_at": "2022-03-26T07:59:18.000Z"
  },
  "meta": {
    "api_version": "3.1.0"
  }
}

POST /:account_slug/:event_slug/questions

Required attributes

Update a question

curl --request PATCH \
  --url 'https://api.tito.io/v3/:account_slug/:event_slug/questions/:questions_slug' \
  --header 'Authorization: Token token=YOUR-API-TOKEN' \
  --header 'Accept: application/json' \
  --header 'Content-type: application/json' \
  --data '{"question[title]":"Fave tree?"}'
{
  "question": {
    "_type": "question",
    "id": 1,
    "answers_count": 49,
    "description": "What is your most favorite color of all?",
    "title": "Fave tree?",
    "field_type": "Text",
    "include_free_text_field": false,
    "required": false,
    "slug": "favorite-color",
    "tickets_count": 103,
    "created_at": "2022-03-26T07:36:06.000Z",
    "updated_at": "2022-03-26T07:37:09.000Z"
  },
  "meta": {
    "api_version": "3.1.0"
  }
}

PATCH /:account_slug/:event_slug/questions/:question_slug

Required attributes

Delete a question

curl --request DELETE \
  --url 'https://api.tito.io/v3/:account_slug/:event_slug/questions/:questions_slug' \
  --header 'Authorization: Token token=YOUR-API-TOKEN' \
  --header 'Accept: application/json'

DELETE /:account_slug/:event_slug/questions/:question_slug

Refunds

Attributes

Expansions

Append a comma separated list of expansions to pull back more information about this Refund.

Get all refunds

curl --request GET \
  --url 'https://api.tito.io/v3/:account_slug/:event_slug/refunds' \
  --header 'Authorization: Token token=YOUR-API-TOKEN' \
  --header 'Accept: application/json'
{
  "refunds": [
    {
      "_type": "refund",
      "id": 19,
      "amount": "-90.0",
      "created_at": "2022-03-26T07:36:16.000Z",
      "manual": null
    },
    {
      "_type": "refund",
      "id": 7,
      "amount": "-190.0",
      "created_at": "2022-03-26T07:36:10.000Z",
      "manual": null
    },
    "..."
  ],
  "meta": {
    "api_version": "3.1.0",
    "expandable": {
      "registration": false
    },
    "current_page": 1,
    "next_page": null,
    "prev_page": null,
    "total_pages": 1,
    "total_count": 4,
    "per_page": 100,
    "overall_total": 4,
    "filter_options": {
      "sections": {
        "states": {
          "label": "Status",
          "open": false
        }
      },
      "collection": false,
      "states": [

      ]
    }
  }
}

GET /:account_slug/:event_slug/refunds

Get a refund

curl --request GET \
  --url 'https://api.tito.io/v3/:account_slug/:event_slug/refunds/:refund_slug' \
  --header 'Authorization: Token token=YOUR-API-TOKEN' \
  --header 'Accept: application/json'
{
  "refund": {
    "_type": "refund",
    "id": 7,
    "amount": "-190.0",
    "created_at": "2022-03-26T07:36:10.000Z",
    "manual": null
  },
  "meta": {
    "api_version": "3.1.0",
    "expandable": {
      "registration": false
    }
  }
}

GET /:account_slug/:event_slug/refunds/:refund_slug

Registrations

Attributes

Expansions

Append a comma separated list of expansions to pull back more information about this Registration.

Get all registrations

curl --request GET \
  --url 'https://api.tito.io/v3/:account_slug/:event_slug/registrations' \
  --header 'Authorization: Token token=YOUR-API-TOKEN' \
  --header 'Accept: application/json'
{
  "registrations": [
    {
      "_type": "registration",
      "id": 29,
      "slug": "reg_djFKz14smymcBAHSQKAm4sw",
      "created_at": "2022-03-26T07:36:26.000Z",
      "updated_at": "2022-03-26T07:36:26.000Z",
      "completed_at": "2022-03-26T07:36:26.000Z",
      "discount_code": null,
      "email": "jake@example.net",
      "job_title": null,
      "expires_at": "2022-03-26 07:51:26 UTC",
      "ip_address": null,
      "locale": "en",
      "metadata": null,
      "name": "Nute Gunray",
      "company_name": null,
      "payment_reference": null,
      "payment_option_name": null,
      "phone_number": null,
      "registration_type": "manual",
      "reference": "LP3B",
      "source": null,
      "state": "incomplete",
      "test_mode": false,
      "cancelled": false,
      "cancelled_at": null,
      "cancelled_by": null,
      "free": false,
      "paid": true,
      "invoice": true,
      "manual": true,
      "imported": false,
      "refundable": true,
      "refunded": false,
      "partially_refunded": false,
      "receipt_paid": true,
      "receipt_number": "0000059",
      "receipt_id": 59,
      "payment_incomplete": false,
      "payment_complete": true,
      "total": 380.0,
      "tickets_count": 6,
      "consented_at": null,
      "terms_accepted": false,
      "termset_ids": [

      ],
      "editable_total_and_prices": true,
      "total_less_tax": 380.0,
      "discount_code_id": null,
      "payment_option_provider_name": null,
      "quantities": {
        "early-bird": {
          "release": "Early Bird",
          "quantity": 2
        },
        "standard": {
          "release": "Standard",
          "quantity": 2
        },
        "exhibitor": {
          "release": "Exhibitor",
          "quantity": 1
        },
        "speaker": {
          "release": "Speaker",
          "quantity": 1
        }
      }
    },
    {
      "_type": "registration",
      "id": 30,
      "slug": "reg_dBDhMdUevS3G5Qwc9Tkmk7Q",
      "created_at": "2022-03-26T07:36:26.000Z",
      "updated_at": "2022-03-26T07:36:27.000Z",
      "completed_at": "2022-03-26T07:36:27.000Z",
      "discount_code": null,
      "email": "crystal_jast@example.org",
      "job_title": null,
      "expires_at": "2022-03-26 07:51:26 UTC",
      "ip_address": null,
      "locale": "en",
      "metadata": null,
      "name": "Ki-Adi-Mundi",
      "company_name": null,
      "payment_reference": null,
      "payment_option_name": null,
      "phone_number": null,
      "registration_type": "manual",
      "reference": "UHMF",
      "source": null,
      "state": "incomplete",
      "test_mode": false,
      "cancelled": false,
      "cancelled_at": null,
      "cancelled_by": null,
      "free": false,
      "paid": true,
      "invoice": true,
      "manual": true,
      "imported": false,
      "refundable": true,
      "refunded": false,
      "partially_refunded": false,
      "receipt_paid": true,
      "receipt_number": "0000061",
      "receipt_id": 61,
      "payment_incomplete": false,
      "payment_complete": true,
      "total": 270.0,
      "tickets_count": 8,
      "consented_at": null,
      "terms_accepted": false,
      "termset_ids": [

      ],
      "editable_total_and_prices": true,
      "total_less_tax": 270.0,
      "discount_code_id": null,
      "payment_option_provider_name": null,
      "quantities": {
        "early-bird": {
          "release": "Early Bird",
          "quantity": 3
        },
        "exhibitor": {
          "release": "Exhibitor",
          "quantity": 2
        },
        "speaker": {
          "release": "Speaker",
          "quantity": 3
        }
      }
    },
    "..."
  ],
  "meta": {
    "api_version": "3.1.0",
    "expandable": {
      "billing_address": false
    },
    "current_page": 1,
    "next_page": null,
    "prev_page": null,
    "total_pages": 1,
    "total_count": 30,
    "per_page": 100,
    "overall_total": 30,
    "resources_hidden_by_default_count": 0,
    "search_states_hidden_by_default": [
      "cancelled"
    ],
    "sort_options": {
      "Name A-Z": {
        "attr": "name",
        "direction": "asc"
      },
      "Name Z-A": {
        "attr": "name",
        "direction": "desc"
      },
      "Purchase date, earliest first": {
        "attr": "created_at",
        "direction": "asc"
      },
      "Purchase date, newest first": {
        "attr": "created_at",
        "direction": "desc"
      },
      "Total paid, least first": {
        "attr": "total",
        "direction": "asc"
      },
      "Total paid, most first": {
        "attr": "total",
        "direction": "desc",
        "default": true
      },
      "Reference": {
        "attr": "reference",
        "direction": "asc"
      },
      "Payment provider": {
        "attr": "payment_provider",
        "direction": "asc"
      },
      "Last change": {
        "attr": "updated_at",
        "direction": "desc"
      }
    },
    "filter_options": {
      "sections": {
        "states": {
          "label": "Status",
          "open": false
        }
      },
      "collection": false,
      "states": [
        {
          "label": "Paid",
          "value": "paid"
        },
        {
          "label": "Unpaid",
          "value": "unpaid"
        },
        {
          "label": "Complete",
          "value": "complete"
        },
        {
          "label": "Confirmed",
          "value": "confirmed"
        },
        {
          "label": "Incomplete",
          "value": "incomplete"
        },
        {
          "label": "Cancelled",
          "value": "cancelled"
        }
      ],
      "selected_states": [
        "paid",
        "unpaid",
        "complete",
        "confirmed",
        "incomplete"
      ]
    }
  }
}

GET /:account_slug/:event_slug/registrations

Sort Order

The default order is by created_at with newest registrations first. You can change the order by appending some parameters to the endpoint URL. This is the same as the default:

?search[sort]=created_at&search[direction]=desc

The direction can either be asc or desc.

You can sort on the following attributes:

Filtering

You can filter which registrations you get back too. For instance, to only get unpaid or incomplete registrations:

By state

?search[states][]=unpaid&search[states][]=incomplete

Possible states are:

By time

This will show all registrations created since 1 Jan 2019 at 9am UTC:

?search[created_at][gt]=2019-01-01T09:00:00+UTC

That operator can be:

And you can do that on the following attributes

So, for instance, to find all registrations that have been updated in the last hour:

?search[updated_at][gt]=2019-01-01T09:00:00+UTC

(where you obviously change that timestamp to be one hour ago).

Note: if you don't use the +UTC suffix on those timestamps it will default to the time zone used by the event itself.

By any text

You can also search by text, which uses the same logic as the dashboard UI:

For example:

?q=Alice

Get a registration

curl --request GET \
  --url 'https://api.tito.io/v3/:account_slug/:event_slug/registrations/:registration_id' \
  --header 'Authorization: Token token=YOUR-API-TOKEN' \
  --header 'Accept: application/json'
{
  "registration": {
    "_type": "registration",
    "id": 1,
    "slug": "reg_dp9Z2e2FgFH9QrhrVbf7Whg",
    "created_at": "2022-03-26T07:36:07.000Z",
    "updated_at": "2022-03-26T07:59:13.000Z",
    "completed_at": "2022-03-26T07:36:07.000Z",
    "discount_code": "FREE2U",
    "email": "nIFOizT0YnYTTA@example.com",
    "job_title": null,
    "expires_at": "2022-03-26 07:51:07 UTC",
    "ip_address": null,
    "locale": "en",
    "metadata": null,
    "name": "Watto",
    "company_name": null,
    "payment_reference": null,
    "payment_option_name": null,
    "phone_number": null,
    "registration_type": "manual",
    "reference": "9K9R",
    "source": null,
    "state": "incomplete",
    "test_mode": false,
    "cancelled": false,
    "cancelled_at": null,
    "cancelled_by": null,
    "free": false,
    "paid": true,
    "invoice": true,
    "manual": true,
    "imported": false,
    "refundable": false,
    "refunded": false,
    "partially_refunded": false,
    "receipt_paid": false,
    "receipt_number": "0000001",
    "receipt_id": 1,
    "payment_incomplete": true,
    "payment_complete": false,
    "total": 270.0,
    "tickets_count": 6,
    "consented_at": null,
    "terms_accepted": false,
    "termset_ids": [

    ],
    "editable_total_and_prices": true,
    "total_less_tax": 270.0,
    "discount_code_id": 1,
    "payment_option_provider_name": null,
    "quantities": {
      "early-bird": {
        "release": "Early Bird",
        "quantity": 3
      },
      "standard": {
        "release": "Standard",
        "quantity": 2
      },
      "exhibitor": {
        "release": "Exhibitor",
        "quantity": 1
      }
    }
  },
  "meta": {
    "api_version": "3.1.0",
    "expandable": {
      "billing_address": false
    }
  }
}

GET /:account_slug/:event_slug/registrations/:registration_id

Create a registration

curl --request POST \
  --url 'https://api.tito.io/v3/:account_slug/:event_slug/registrations' \
  --header 'Authorization: Token token=YOUR-API-TOKEN' \
  --header 'Accept: application/json' \
  --header 'Content-Type: application/json' \
  --data '{"registration[email]":"rUQwD6LdqHR8sA@example.com","registration[name]":"Jane Smith","registration[discount_code]":"","registration[source]":"","registration[line_items][][release_id]":1,"registration[line_items][][quantity]":1}'
{
  "registration": {
    "_type": "registration",
    "id": 105,
    "slug": "reg_dzHx3ANTal31xvP1dHbdL0w",
    "created_at": "2022-04-27T08:09:33.000+01:00",
    "updated_at": "2022-04-27T08:09:33.000+01:00",
    "completed_at": "2022-04-27T08:09:33.000+01:00",
    "discount_code": "",
    "email": "rUQwD6LdqHR8sA@example.com",
    "job_title": null,
    "expires_at": "2022-04-27 08:24:33 +0100",
    "ip_address": "192.168.80.6",
    "locale": "en",
    "metadata": null,
    "name": "Jane Smith",
    "company_name": null,
    "payment_reference": null,
    "payment_option_name": "manual",
    "phone_number": null,
    "registration_type": "manual",
    "reference": "3Q8K",
    "source": null,
    "state": "incomplete",
    "test_mode": false,
    "cancelled": false,
    "cancelled_at": null,
    "cancelled_by": null,
    "free": false,
    "paid": true,
    "invoice": false,
    "manual": true,
    "imported": false,
    "refundable": true,
    "refunded": false,
    "partially_refunded": false,
    "receipt_paid": true,
    "receipt_number": "0000025",
    "receipt_id": 108,
    "payment_incomplete": false,
    "payment_complete": true,
    "total": 90.0,
    "tickets_count": 1,
    "consented_at": null,
    "terms_accepted": false,
    "termset_ids": [

    ],
    "editable_total_and_prices": true,
    "total_less_tax": 90.0,
    "discount_code_id": null,
    "payment_option_provider_name": null,
    "quantities": {
      "early-bird": {
        "release": "Early Bird for Wednesday and Thursday for Students and Others Only",
        "quantity": 1
      }
    }
  },
  "meta": {
    "api_version": "3.1.0"
  }
}

POST /:account_slug/:event_slug/registrations

Required attributes

Update a registration

curl --request PATCH \
  --url 'https://api.tito.io/v3/:account_slug/:event_slug/registrations/:registrations_id' \
  --header 'Authorization: Token token=YOUR-API-TOKEN' \
  --header 'Accept: application/json' \
  --header 'Content-type: application/json' \
  --data '{"registration[email]":"44UDocNZuV4pmw@example.com"}'
{
  "registration": {
    "_type": "registration",
    "id": 1,
    "slug": "reg_dp9Z2e2FgFH9QrhrVbf7Whg",
    "created_at": "2022-03-26T07:36:07.000Z",
    "updated_at": "2022-03-26T07:59:20.000Z",
    "completed_at": "2022-03-26T07:36:07.000Z",
    "discount_code": "FREE2U",
    "email": "44UDocNZuV4pmw@example.com",
    "job_title": null,
    "expires_at": "2022-03-26 07:51:07 UTC",
    "ip_address": null,
    "locale": "en",
    "metadata": null,
    "name": "Watto",
    "company_name": null,
    "payment_reference": null,
    "payment_option_name": null,
    "phone_number": null,
    "registration_type": "manual",
    "reference": "9K9R",
    "source": null,
    "state": "incomplete",
    "test_mode": false,
    "cancelled": false,
    "cancelled_at": null,
    "cancelled_by": null,
    "free": false,
    "paid": true,
    "invoice": true,
    "manual": true,
    "imported": false,
    "refundable": false,
    "refunded": false,
    "partially_refunded": false,
    "receipt_paid": false,
    "receipt_number": "0000001",
    "receipt_id": 1,
    "payment_incomplete": true,
    "payment_complete": false,
    "total": 270.0,
    "tickets_count": 6,
    "consented_at": null,
    "terms_accepted": false,
    "termset_ids": [

    ],
    "editable_total_and_prices": true,
    "total_less_tax": 270.0,
    "discount_code_id": 1,
    "payment_option_provider_name": null,
    "quantities": {
      "early-bird": {
        "release": "Early Bird",
        "quantity": 3
      },
      "standard": {
        "release": "Standard",
        "quantity": 2
      },
      "exhibitor": {
        "release": "Exhibitor",
        "quantity": 1
      }
    }
  },
  "meta": {
    "api_version": "3.1.0"
  }
}

PATCH /:account_slug/:event_slug/registrations/:registration_id

Required attributes

Mark a registration as Paid

curl --request POST \
  --url 'https://api.tito.io/v3/:account_slug/:event_slug/registrations/:registration_slug/confirmations' \
  --header 'Authorization: Token token=YOUR-API-TOKEN' \
  --header 'Accept: application/json' \
  --header 'Content-Type: application/json' \

Pay by invoice is a beta feature. Contact us to get it enabled.

POST /:account_slug/:event_slug/registrations/:registration_slug/confirmations

Show that a Registration has been paid. Useful if you are allowing your customers to pay by invoice.

Changes the receipt_paid attribute to true.

Mark a Registration as Unpaid

curl --request DELETE \
  --url 'https://api.tito.io/v3/:account_slug/:event_slug/registrations/:registration_slug/confirmations' \
  --header 'Authorization: Token token=YOUR-API-TOKEN' \
  --header 'Accept: application/json'

Pay by invoice is a beta feature. Contact us to get it enabled.

DELETE /:account_slug/:event_slug/registrations/:registration_slug/confirmations

Show that a Registration has NOT been paid. Useful if you are allowing your customers to pay by invoice. You wouldn't normally need to do this but might do if you marked it as paid by mistake.

Changes the receipt_paid attribute to false.

Releases

Attributes

* See translations.

Expansions

Append a comma separated list of expansions to pull back more information about this Release.

Get all releases

curl --request GET \
  --url 'https://api.tito.io/v3/:account_slug/:event_slug/releases' \
  --header 'Authorization: Token token=YOUR-API-TOKEN' \
  --header 'Accept: application/json'
{
  "releases": [
    {
      "_type": "release",
      "id": 1,
      "event_id": 1,
      "created_at": "2022-03-26T07:36:06.000Z",
      "updated_at": "2022-03-26T07:37:13.000Z",
      "slug": "early-bird",
      "title": "Early Bird",
      "description": null,
      "archived": false,
      "card_payments": true,
      "default_quantity": 0,
      "donation": false,
      "enable_super_combo_summary": true,
      "end_at": null,
      "has_success_message": false,
      "has_fail_message": false,
      "invoice": false,
      "max_donation": null,
      "max_tickets_per_person": null,
      "metadata": {
        "my_release_variable": "else",
        "another_release_variable": 456
      },
      "min_tickets_per_person": null,
      "min_donation": null,
      "not_a_ticket": false,
      "show_qr_code": true,
      "only_issue_combos": false,
      "pricing_type": "paid",
      "payment_type": "paid",
      "position": 0,
      "price": 90.0,
      "price_ex_tax": 90.0,
      "tax_exclusive": false,
      "price_degressive": null,
      "price_degressive_list": [

      ],
      "quantity": 300,
      "request_company_name": null,
      "request_vat_number": null,
      "require_vat_number": false,
      "require_billing_address": null,
      "require_credit_card_for_sold_out_waiting_list": false,
      "require_email": true,
      "require_name": false,
      "secret": false,
      "show_price": true,
      "suggested_donation": "90.0",
      "lock_changes": null,
      "state_name": "on_sale",
      "start_at": null,
      "waiting_list_enabled_during_locked": false,
      "waiting_list_enabled_during_sold_out": false,
      "share_url": "https://ti.to/demo/awesomeconf/with/early-bird",
      "tickets_count": 56,
      "locked": false,
      "waiting_list": false,
      "sold_out": true,
      "off_sale": false,
      "expired": false,
      "upcoming": false,
      "allocatable": false,
      "changes_locked": false,
      "deletable": false,
      "display_price": 90.0,
      "gross_income": 0.0,
      "full_price_tickets_count": 56,
      "free_tickets_count": 0,
      "discounted_tickets_count": 0,
      "voided_tickets_count": 0,
      "pending_waiting_list": false,
      "show_company_name": false,
      "require_company_name": false,
      "show_vat_number": false,
      "show_discount_code_field_here": null,
      "show_phone_number": false,
      "tax_description": null,
      "warnings": {
        "quantity": "This ticket’s quantity is set to 300 but it is not available because the Conference, Conference Copy, Conference Copy, Conference Copy, and Conference Copy activities are sold out."
      }
    },
    {
      "_type": "release",
      "id": 2,
      "event_id": 1,
      "created_at": "2022-03-26T07:36:06.000Z",
      "updated_at": "2022-03-26T07:36:06.000Z",
      "slug": "standard",
      "title": "Standard",
      "description": null,
      "archived": false,
      "card_payments": true,
      "default_quantity": 0,
      "donation": false,
      "enable_super_combo_summary": true,
      "end_at": null,
      "has_success_message": false,
      "has_fail_message": false,
      "invoice": false,
      "max_donation": null,
      "max_tickets_per_person": null,
      "metadata": {
        "my_release_variable": "else",
        "another_release_variable": 456
      },
      "min_tickets_per_person": null,
      "min_donation": null,
      "not_a_ticket": false,
      "show_qr_code": true,
      "only_issue_combos": false,
      "pricing_type": "paid",
      "payment_type": "paid",
      "position": 0,
      "price": 100.0,
      "price_ex_tax": 100.0,
      "tax_exclusive": false,
      "price_degressive": null,
      "price_degressive_list": [

      ],
      "quantity": null,
      "request_company_name": null,
      "request_vat_number": null,
      "require_vat_number": false,
      "require_billing_address": null,
      "require_credit_card_for_sold_out_waiting_list": false,
      "require_email": true,
      "require_name": false,
      "secret": false,
      "show_price": true,
      "suggested_donation": "100.0",
      "lock_changes": null,
      "state_name": "on_sale",
      "start_at": null,
      "waiting_list_enabled_during_locked": false,
      "waiting_list_enabled_during_sold_out": false,
      "share_url": "https://ti.to/demo/awesomeconf/with/standard",
      "tickets_count": 47,
      "locked": false,
      "waiting_list": false,
      "sold_out": true,
      "off_sale": false,
      "expired": false,
      "upcoming": false,
      "allocatable": false,
      "changes_locked": false,
      "deletable": false,
      "display_price": 100.0,
      "gross_income": 0.0,
      "full_price_tickets_count": 37,
      "free_tickets_count": 5,
      "discounted_tickets_count": 10,
      "voided_tickets_count": 0,
      "pending_waiting_list": false,
      "show_company_name": false,
      "require_company_name": false,
      "show_vat_number": false,
      "show_discount_code_field_here": null,
      "show_phone_number": false,
      "tax_description": null,
      "warnings": {
        "quantity": "This ticket’s quantity is not limited but it is not available because the Conference, Conference Copy, Conference Copy, Conference Copy, and Conference Copy activities are sold out."
      }
    },
    "..."
  ],
  "meta": {
    "api_version": "3.1.0",
    "expandable": {
      "activities": false,
      "activity_questions": false,
      "combo_releases": false,
      "questions": false,
      "super_combo_releases": false,
      "tax_components": false,
      "tax_types": false,
      "termset": false,
      "ticket_group": false
    },
    "current_page": 1,
    "next_page": null,
    "prev_page": null,
    "total_pages": 1,
    "total_count": 4,
    "per_page": 100,
    "overall_total": 4,
    "resources_hidden_by_default_count": 0,
    "search_states_hidden_by_default": [
      "archived"
    ],
    "sort_options": {
      "Position on event homepage": {
        "attr": "position",
        "direction": "asc",
        "default": true
      },
      "On sale date, earliest first": {
        "attr": "start_at",
        "direction": "desc"
      },
      "On sale date, latest first": {
        "attr": "start_at",
        "direction": "asc"
      },
      "Title A-Z": {
        "attr": "title",
        "direction": "asc"
      },
      "Title Z-A": {
        "attr": "title",
        "direction": "desc"
      }
    },
    "filter_options": {
      "sections": {
        "states": {
          "label": "Status",
          "open": false
        }
      },
      "collection": false,
      "states": [
        {
          "label": "On Sale",
          "value": "on_sale"
        },
        {
          "label": "Off Sale",
          "value": "off_sale"
        },
        {
          "label": "Not Sold Out",
          "value": "not_sold_out"
        },
        {
          "label": "Sold Out",
          "value": "sold_out"
        },
        {
          "label": "Public",
          "value": "public"
        },
        {
          "label": "Secret",
          "value": "secret"
        },
        {
          "label": "Active",
          "value": "active"
        },
        {
          "label": "Archived",
          "value": "archived"
        },
        {
          "label": "Changes Locked",
          "value": "changes_locked"
        },
        {
          "label": "Changes Allowed",
          "value": "changes_allowed"
        }
      ],
      "selected_states": [
        "on_sale",
        "off_sale",
        "not_sold_out",
        "sold_out",
        "public",
        "secret",
        "active",
        "changes_locked",
        "changes_allowed"
      ]
    }
  }
}

GET /:account_slug/:event_slug/releases

Get a release

curl --request GET \
  --url 'https://api.tito.io/v3/:account_slug/:event_slug/releases/:release_slug' \
  --header 'Authorization: Token token=YOUR-API-TOKEN' \
  --header 'Accept: application/json'
{
  "release": {
    "_type": "release",
    "id": 1,
    "event_id": 1,
    "created_at": "2022-03-26T07:36:06.000Z",
    "updated_at": "2022-03-26T07:37:13.000Z",
    "slug": "early-bird",
    "title": "Early Bird",
    "description": null,
    "archived": false,
    "card_payments": true,
    "default_quantity": 0,
    "donation": false,
    "enable_super_combo_summary": true,
    "end_at": null,
    "has_success_message": false,
    "has_fail_message": false,
    "invoice": false,
    "max_donation": null,
    "max_tickets_per_person": null,
    "metadata": {
      "my_release_variable": "else",
      "another_release_variable": 456
    },
    "min_tickets_per_person": null,
    "min_donation": null,
    "not_a_ticket": false,
    "show_qr_code": true,
    "only_issue_combos": false,
    "pricing_type": "paid",
    "payment_type": "paid",
    "position": 0,
    "price": 90.0,
    "price_ex_tax": 90.0,
    "tax_exclusive": false,
    "price_degressive": null,
    "price_degressive_list": [

    ],
    "quantity": 300,
    "request_company_name": null,
    "request_vat_number": null,
    "require_vat_number": false,
    "require_billing_address": null,
    "require_credit_card_for_sold_out_waiting_list": false,
    "require_email": true,
    "require_name": false,
    "secret": false,
    "show_price": true,
    "suggested_donation": "90.0",
    "lock_changes": null,
    "state_name": "on_sale",
    "start_at": null,
    "waiting_list_enabled_during_locked": false,
    "waiting_list_enabled_during_sold_out": false,
    "share_url": "https://ti.to/demo/awesomeconf/with/early-bird",
    "tickets_count": 56,
    "locked": false,
    "waiting_list": false,
    "sold_out": true,
    "off_sale": false,
    "expired": false,
    "upcoming": false,
    "allocatable": false,
    "changes_locked": false,
    "deletable": false,
    "display_price": 90.0,
    "gross_income": 0.0,
    "full_price_tickets_count": 56,
    "free_tickets_count": 0,
    "discounted_tickets_count": 0,
    "voided_tickets_count": 0,
    "pending_waiting_list": false,
    "show_company_name": false,
    "require_company_name": false,
    "show_vat_number": false,
    "show_discount_code_field_here": null,
    "show_phone_number": false,
    "tax_description": null,
    "warnings": {
      "quantity": "This ticket’s quantity is set to 300 but it is not available because the Conference, Conference Copy, Conference Copy, Conference Copy, and Conference Copy activities are sold out."
    }
  },
  "meta": {
    "api_version": "3.1.0",
    "expandable": {
      "activities": false,
      "activity_questions": false,
      "combo_releases": false,
      "questions": false,
      "super_combo_releases": false,
      "tax_components": false,
      "tax_types": false,
      "termset": false,
      "ticket_group": false
    }
  }
}

GET /:account_slug/:event_slug/releases/:release_slug

Create a release

curl --request POST \
  --url 'https://api.tito.io/v3/:account_slug/:event_slug/releases' \
  --header 'Authorization: Token token=YOUR-API-TOKEN' \
  --header 'Accept: application/json' \
  --header 'Content-Type: application/json' \
  --data '{"release[title]":"Late Bird"}'
{
  "release": {
    "_type": "release",
    "id": 8,
    "event_id": 1,
    "created_at": "2022-03-26T07:59:22.000Z",
    "updated_at": "2022-03-26T07:59:22.000Z",
    "slug": "late-bird",
    "title": "Late Bird",
    "description": null,
    "archived": false,
    "card_payments": true,
    "default_quantity": 0,
    "donation": false,
    "enable_super_combo_summary": true,
    "end_at": null,
    "has_success_message": false,
    "has_fail_message": false,
    "invoice": false,
    "max_donation": null,
    "max_tickets_per_person": null,
    "metadata": null,
    "min_tickets_per_person": null,
    "min_donation": null,
    "not_a_ticket": false,
    "show_qr_code": true,
    "only_issue_combos": false,
    "pricing_type": "free",
    "payment_type": "free",
    "position": 0,
    "price": null,
    "price_ex_tax": 0.0,
    "tax_exclusive": false,
    "price_degressive": null,
    "price_degressive_list": [

    ],
    "quantity": null,
    "request_company_name": null,
    "request_vat_number": null,
    "require_vat_number": false,
    "require_billing_address": null,
    "require_credit_card_for_sold_out_waiting_list": false,
    "require_email": true,
    "require_name": false,
    "secret": false,
    "show_price": true,
    "suggested_donation": null,
    "lock_changes": null,
    "state_name": "off_sale",
    "start_at": null,
    "waiting_list_enabled_during_locked": false,
    "waiting_list_enabled_during_sold_out": false,
    "share_url": "https://ti.to/demo/awesomeconf/with/late-bird",
    "tickets_count": 0,
    "locked": false,
    "waiting_list": false,
    "sold_out": false,
    "off_sale": true,
    "expired": false,
    "upcoming": false,
    "allocatable": false,
    "changes_locked": false,
    "deletable": true,
    "display_price": 0.0,
    "gross_income": 0.0,
    "full_price_tickets_count": 0,
    "free_tickets_count": 0,
    "discounted_tickets_count": 0,
    "voided_tickets_count": 0,
    "pending_waiting_list": false,
    "show_company_name": false,
    "require_company_name": false,
    "show_vat_number": false,
    "show_discount_code_field_here": null,
    "show_phone_number": false,
    "tax_description": null,
    "warnings": {
      "quantity": "This ticket’s quantity is not limited but there are only 100 tickets remaining because it is limited by the overall event capacity of 100."
    }
  },
  "meta": {
    "api_version": "3.1.0"
  }
}

POST /:account_slug/:event_slug/releases

Required attributes

Update a release

curl --request PATCH \
  --url 'https://api.tito.io/v3/:account_slug/:event_slug/releases/:releases_slug' \
  --header 'Authorization: Token token=YOUR-API-TOKEN' \
  --header 'Accept: application/json' \
  --header 'Content-type: application/json' \
  --data '{"release[quantity]":300}'
{
  "release": {
    "_type": "release",
    "id": 1,
    "event_id": 1,
    "created_at": "2022-03-26T07:36:06.000Z",
    "updated_at": "2022-03-26T07:37:13.000Z",
    "slug": "early-bird",
    "title": "Early Bird",
    "description": null,
    "archived": false,
    "card_payments": true,
    "default_quantity": 0,
    "donation": false,
    "enable_super_combo_summary": true,
    "end_at": null,
    "has_success_message": false,
    "has_fail_message": false,
    "invoice": false,
    "max_donation": null,
    "max_tickets_per_person": null,
    "metadata": {
      "my_release_variable": "else",
      "another_release_variable": 456
    },
    "min_tickets_per_person": null,
    "min_donation": null,
    "not_a_ticket": false,
    "show_qr_code": true,
    "only_issue_combos": false,
    "pricing_type": "paid",
    "payment_type": "paid",
    "position": 0,
    "price": 90.0,
    "price_ex_tax": 90.0,
    "tax_exclusive": false,
    "price_degressive": null,
    "price_degressive_list": [

    ],
    "quantity": 300,
    "request_company_name": null,
    "request_vat_number": null,
    "require_vat_number": false,
    "require_billing_address": null,
    "require_credit_card_for_sold_out_waiting_list": false,
    "require_email": true,
    "require_name": false,
    "secret": false,
    "show_price": true,
    "suggested_donation": "90.0",
    "lock_changes": null,
    "state_name": "on_sale",
    "start_at": null,
    "waiting_list_enabled_during_locked": false,
    "waiting_list_enabled_during_sold_out": false,
    "share_url": "https://ti.to/demo/awesomeconf/with/early-bird",
    "tickets_count": 56,
    "locked": false,
    "waiting_list": false,
    "sold_out": true,
    "off_sale": false,
    "expired": false,
    "upcoming": false,
    "allocatable": false,
    "changes_locked": false,
    "deletable": false,
    "display_price": 90.0,
    "gross_income": 0.0,
    "full_price_tickets_count": 56,
    "free_tickets_count": 0,
    "discounted_tickets_count": 0,
    "voided_tickets_count": 0,
    "pending_waiting_list": false,
    "show_company_name": false,
    "require_company_name": false,
    "show_vat_number": false,
    "show_discount_code_field_here": null,
    "show_phone_number": false,
    "tax_description": null,
    "warnings": {
      "quantity": "This ticket’s quantity is set to 300 but it is not available because the Conference, Conference Copy, Conference Copy, Conference Copy, and Conference Copy activities are sold out."
    }
  },
  "meta": {
    "api_version": "3.1.0"
  }
}

PATCH /:account_slug/:event_slug/releases/:release_slug

Required attributes

Delete a release

curl --request DELETE \
  --url 'https://api.tito.io/v3/:account_slug/:event_slug/releases/:releases_slug' \
  --header 'Authorization: Token token=YOUR-API-TOKEN' \
  --header 'Accept: application/json'

DELETE /:account_slug/:event_slug/releases/:release_slug

Archive a Release

curl --request POST \
  --url 'https://api.tito.io/v3/:account_slug/:event_slug/releases/:release_slug/archival' \
  --header 'Authorization: Token token=YOUR-API-TOKEN' \
  --header 'Accept: application/json' \
  --header 'Content-Type: application/json' \

POST /:account_slug/:event_slug/releases/:release_slug/archival

Unarchive a Release

curl --request DELETE \
  --url 'https://api.tito.io/v3/:account_slug/:event_slug/releases/:release_slug/archival' \
  --header 'Authorization: Token token=YOUR-API-TOKEN' \
  --header 'Accept: application/json'

DELETE /:account_slug/:event_slug/releases/:release_slug/archival

Duplicate a Release

curl --request POST \
  --url 'https://api.tito.io/v3/:account_slug/:event_slug/releases/:release_slug/duplication' \
  --header 'Authorization: Token token=YOUR-API-TOKEN' \
  --header 'Accept: application/json' \
  --header 'Content-Type: application/json' \

POST /:account_slug/:event_slug/releases/:release_slug/duplication

Put a Release on sale

curl --request PATCH \
  --url 'https://api.tito.io/v3/:account_slug/:event_slug/releases/:release_slug/activation' \
  --header 'Authorization: Token token=YOUR-API-TOKEN' \
  --header 'Accept: application/json' \
  --header 'Content-type: application/json' \
  --data '{}'

PATCH /:account_slug/:event_slug/releases/:release_slug/activation

Pause the sale of a Release

curl --request PATCH \
  --url 'https://api.tito.io/v3/:account_slug/:event_slug/releases/:release_slug/deactivation' \
  --header 'Authorization: Token token=YOUR-API-TOKEN' \
  --header 'Accept: application/json' \
  --header 'Content-type: application/json' \
  --data '{}'

PATCH /:account_slug/:event_slug/releases/:release_slug/deactivation

Make a Release public

curl --request POST \
  --url 'https://api.tito.io/v3/:account_slug/:event_slug/releases/:release_slug/publication' \
  --header 'Authorization: Token token=YOUR-API-TOKEN' \
  --header 'Accept: application/json' \
  --header 'Content-Type: application/json' \

POST /:account_slug/:event_slug/releases/:release_slug/publication

Make a Release secret

curl --request DELETE \
  --url 'https://api.tito.io/v3/:account_slug/:event_slug/releases/:release_slug/publication' \
  --header 'Authorization: Token token=YOUR-API-TOKEN' \
  --header 'Accept: application/json'

DELETE /:account_slug/:event_slug/releases/:release_slug/publication

Make an on-sale release secret. A secret release won't appear on your event page and can only be purchased through the shareable URL (share_url).

RSVP Lists

RSVP is a beta feature. Contact us to get it enabled.

Invite people to register and target specific releases. An RSVP List has many Release Invitations.

Read more about RSVP

Attributes

Expansions

TODO: No expansions to show in 3.1/rsvp_lists/expansions.json

Get all RSVP lists

curl --request GET \
  --url 'https://api.tito.io/v3/:account_slug/:event_slug/rsvp_lists' \
  --header 'Authorization: Token token=YOUR-API-TOKEN' \
  --header 'Accept: application/json'
{
  "rsvp_lists": [
    {
      "_type": "rsvp_list",
      "id": 1,
      "slug": "rsvp_list_dnAfyUA6p72PXipIdNXmt2Q",
      "created_at": "2022-03-26T07:36:27.000Z",
      "updated_at": "2022-03-26T07:36:27.000Z",
      "title": "Welcome",
      "redeemed_count": 2,
      "maybes_count": 3,
      "nos_count": 2,
      "release_invitations_count": 10,
      "message_slug": null
    }
  ],
  "meta": {
    "api_version": "3.1.0",
    "expandable": {
    },
    "current_page": 1,
    "next_page": null,
    "prev_page": null,
    "total_pages": 1,
    "total_count": 1,
    "per_page": 100,
    "overall_total": 1,
    "sort_options": {
      "Created time, earliest first": {
        "attr": "created_at",
        "direction": "asc"
      },
      "Created time, latest first": {
        "attr": "created_at",
        "direction": "desc",
        "default": true
      },
      "Title A-Z": {
        "attr": "title",
        "direction": "asc"
      },
      "Title Z-A": {
        "attr": "title",
        "direction": "desc"
      }
    },
    "filter_options": {
      "sections": {
        "states": {
          "label": "Status",
          "open": false
        }
      },
      "collection": false,
      "states": [

      ]
    }
  }
}

GET /:account_slug/:event_slug/rsvp_lists

Get an RSVP list

curl --request GET \
  --url 'https://api.tito.io/v3/:account_slug/:event_slug/rsvp_lists/:rsvp_list_id' \
  --header 'Authorization: Token token=YOUR-API-TOKEN' \
  --header 'Accept: application/json'
{
  "rsvp_list": {
    "_type": "rsvp_list",
    "id": 1,
    "slug": "rsvp_list_dnAfyUA6p72PXipIdNXmt2Q",
    "created_at": "2022-03-26T07:36:27.000Z",
    "updated_at": "2022-03-26T07:36:27.000Z",
    "title": "Welcome",
    "redeemed_count": 2,
    "maybes_count": 3,
    "nos_count": 2,
    "release_invitations_count": 10,
    "message_slug": null
  },
  "meta": {
    "api_version": "3.1.0",
    "expandable": {
    }
  }
}

GET /:account_slug/:event_slug/rsvp_lists/:rsvp_list_id

Create an RSVP list

curl --request POST \
  --url 'https://api.tito.io/v3/:account_slug/:event_slug/rsvp_lists' \
  --header 'Authorization: Token token=YOUR-API-TOKEN' \
  --header 'Accept: application/json' \
  --header 'Content-Type: application/json' \
  --data '{"rsvp_list[title]":"Welcome Back"}'
{
  "rsvp_list": {
    "_type": "rsvp_list",
    "id": 5,
    "slug": "rsvp_list_ddgJ2rvXQMPwJRGdAmzQ9WQ",
    "created_at": "2022-03-26T07:59:23.000Z",
    "updated_at": "2022-03-26T07:59:23.000Z",
    "title": "Welcome Back",
    "redeemed_count": 0,
    "maybes_count": 0,
    "nos_count": 0,
    "release_invitations_count": 0,
    "message_slug": null
  },
  "meta": {
    "api_version": "3.1.0"
  }
}

POST /:account_slug/:event_slug/rsvp_lists

Required attributes

Update an RSVP list

curl --request PATCH \
  --url 'https://api.tito.io/v3/:account_slug/:event_slug/rsvp_lists/:rsvp_lists_id' \
  --header 'Authorization: Token token=YOUR-API-TOKEN' \
  --header 'Accept: application/json' \
  --header 'Content-type: application/json' \
  --data '{"rsvp_list[title]":"Welcome"}'
{
  "rsvp_list": {
    "_type": "rsvp_list",
    "id": 1,
    "slug": "rsvp_list_dnAfyUA6p72PXipIdNXmt2Q",
    "created_at": "2022-03-26T07:36:27.000Z",
    "updated_at": "2022-03-26T07:36:27.000Z",
    "title": "Welcome",
    "redeemed_count": 2,
    "maybes_count": 3,
    "nos_count": 2,
    "release_invitations_count": 10,
    "message_slug": null
  },
  "meta": {
    "api_version": "3.1.0"
  }
}

PATCH /:account_slug/:event_slug/rsvp_lists/:rsvp_list_id

Required attributes

Delete an RSVP list

curl --request DELETE \
  --url 'https://api.tito.io/v3/:account_slug/:event_slug/rsvp_lists/:rsvp_lists_id' \
  --header 'Authorization: Token token=YOUR-API-TOKEN' \
  --header 'Accept: application/json'

DELETE /:account_slug/:event_slug/rsvp_lists/:rsvp_list_id

RSVP Release Invitations

RSVP is a beta feature. Contact us to get it enabled.

An RSVP Release Invitation belongs to an RSVP list

Attributes

Expansions

Append a comma separated list of expansions to pull back more information about this Release Invitation.

Get all release invitations

All the release invitations for a single RSVP list.

curl --request GET \
  --url 'https://api.tito.io/v3/:account_slug/:event_slug/rsvp_lists/:rsvp_list_slug/release_invitations' \
  --header 'Authorization: Token token=YOUR-API-TOKEN' \
  --header 'Accept: application/json'
{
  "release_invitations": [
    {
      "_type": "release_invitation",
      "id": 12,
      "slug": "rsvp_duCBjB75EPway0pkHvtHlPA",
      "first_name": null,
      "last_name": null,
      "email": "x2nbE-L3TW8Npw@example.com",
      "name": "",
      "unique_url": "https://ti.to/demo/awesomeconf/rsvp/rsvp_duCBjB75EPway0pkHvtHlPA",
      "status": null,
      "redeemed": false,
      "registration_id": null,
      "created_at": "2022-03-26T07:37:28.000Z",
      "updated_at": "2022-03-26T07:37:28.000Z",
      "importer_id": null,
      "expires_at": null,
      "rsvp_list_id": 1,
      "discount_code": null,
      "message_delivery_id": null,
      "auto": false,
      "guest": false,
      "redirect": false
    },
    {
      "_type": "release_invitation",
      "id": 11,
      "slug": "rsvp_dxeB0agrHdFadov28Ud7koA",
      "first_name": null,
      "last_name": null,
      "email": "pe2r5cEeaEaaaw@example.com",
      "name": "",
      "unique_url": "https://ti.to/demo/awesomeconf/rsvp/rsvp_dxeB0agrHdFadov28Ud7koA",
      "status": null,
      "redeemed": false,
      "registration_id": null,
      "created_at": "2022-03-26T07:37:16.000Z",
      "updated_at": "2022-03-26T07:37:16.000Z",
      "importer_id": null,
      "expires_at": null,
      "rsvp_list_id": 1,
      "discount_code": null,
      "message_delivery_id": null,
      "auto": false,
      "guest": false,
      "redirect": false
    },
    "..."
  ],
  "meta": {
    "api_version": "3.1.0",
    "expandable": {
      "registration": false
    },
    "current_page": 1,
    "next_page": null,
    "prev_page": null,
    "total_pages": 1,
    "total_count": 10,
    "per_page": 100,
    "overall_total": 10,
    "filter_options": {
      "sections": {
        "states": {
          "label": "Status",
          "open": false
        }
      },
      "collection": false,
      "states": [
        {
          "label": "Redeemed",
          "value": "redeemed"
        }
      ],
      "selected_states": [

      ]
    }
  }
}

GET /:account_slug/:event_slug/rsvp_lists/:rsvp_list_slug/release_invitations

Get a release invitation

curl --request GET \
  --url 'https://api.tito.io/v3/:account_slug/:event_slug/release_invitations/:release_invitation_id' \
  --header 'Authorization: Token token=YOUR-API-TOKEN' \
  --header 'Accept: application/json'
{
  "release_invitation": {
    "_type": "release_invitation",
    "id": 4,
    "slug": "rsvp_d36QcNmBdCeimd5cxx4ZQNA",
    "first_name": "Watto",
    "last_name": null,
    "email": "jailyn@example.com",
    "name": "Watto",
    "unique_url": "https://ti.to/demo/awesomeconf/rsvp/rsvp_d36QcNmBdCeimd5cxx4ZQNA",
    "status": "yes",
    "redeemed": true,
    "registration_id": 1,
    "created_at": "2022-03-26T07:36:27.000Z",
    "updated_at": "2022-03-26T07:36:27.000Z",
    "importer_id": null,
    "expires_at": null,
    "rsvp_list_id": 1,
    "discount_code": null,
    "message_delivery_id": null,
    "auto": false,
    "guest": false,
    "redirect": false
  },
  "meta": {
    "api_version": "3.1.0",
    "expandable": {
      "registration": false
    }
  }
}

GET /:account_slug/:event_slug/release_invitations/:release_invitation_id

Create a release invitation

curl --request POST \
  --url 'https://api.tito.io/v3/:account_slug/:event_slug/release_invitations' \
  --header 'Authorization: Token token=YOUR-API-TOKEN' \
  --header 'Accept: application/json' \
  --header 'Content-Type: application/json' \
  --data '{"release_invitation[email]":"f0JL97wYMUlB0A@example.com"}'
{
  "release_invitation": {
    "_type": "release_invitation",
    "id": 14,
    "slug": "rsvp_dNoZXmP78nE2NVTXtqn4Qyw",
    "first_name": null,
    "last_name": null,
    "email": "f0JL97wYMUlB0A@example.com",
    "name": "",
    "unique_url": "https://ti.to/demo/awesomeconf/rsvp/rsvp_dNoZXmP78nE2NVTXtqn4Qyw",
    "status": null,
    "redeemed": false,
    "registration_id": null,
    "created_at": "2022-03-26T07:59:23.000Z",
    "updated_at": "2022-03-26T07:59:23.000Z",
    "importer_id": null,
    "expires_at": null,
    "rsvp_list_id": 1,
    "discount_code": null,
    "message_delivery_id": null,
    "auto": false,
    "guest": false,
    "redirect": false
  },
  "meta": {
    "api_version": "3.1.0"
  }
}

POST /:account_slug/:event_slug/release_invitations

Required attributes

Update a release invitation

curl --request PATCH \
  --url 'https://api.tito.io/v3/:account_slug/:event_slug/release_invitations/:release_invitations_id' \
  --header 'Authorization: Token token=YOUR-API-TOKEN' \
  --header 'Accept: application/json' \
  --header 'Content-type: application/json' \
  --data '{"release_invitation[email]":"udFZswvJM0IZnQ@example.com"}'
{
  "release_invitation": {
    "_type": "release_invitation",
    "id": 4,
    "slug": "rsvp_d36QcNmBdCeimd5cxx4ZQNA",
    "first_name": "Watto",
    "last_name": null,
    "email": "udFZswvJM0IZnQ@example.com",
    "name": "Watto",
    "unique_url": "https://ti.to/demo/awesomeconf/rsvp/rsvp_d36QcNmBdCeimd5cxx4ZQNA",
    "status": "yes",
    "redeemed": true,
    "registration_id": 1,
    "created_at": "2022-03-26T07:36:27.000Z",
    "updated_at": "2022-03-26T07:59:23.000Z",
    "importer_id": null,
    "expires_at": null,
    "rsvp_list_id": 1,
    "discount_code": null,
    "message_delivery_id": null,
    "auto": false,
    "guest": false,
    "redirect": false
  },
  "meta": {
    "api_version": "3.1.0"
  }
}

PATCH /:account_slug/:event_slug/release_invitations/:release_invitation_id

Required attributes

Delete a release invitation

curl --request DELETE \
  --url 'https://api.tito.io/v3/:account_slug/:event_slug/release_invitations/:release_invitations_id' \
  --header 'Authorization: Token token=YOUR-API-TOKEN' \
  --header 'Accept: application/json'

DELETE /:account_slug/:event_slug/release_invitations/:release_invitation_id

Tickets

Attributes

Expansions

Append a comma separated list of expansions to pull back more information about this Ticket.

Get all tickets

curl --request GET \
  --url 'https://api.tito.io/v3/:account_slug/:event_slug/tickets' \
  --header 'Authorization: Token token=YOUR-API-TOKEN' \
  --header 'Accept: application/json'
{
  "tickets": [
    {
      "_type": "ticket",
      "id": 180,
      "slug": "ti_dPBLf7TbEC1cWgKhTT1GRBQ",
      "unique_url": "https://ti.to/demo/awesomeconf/tickets/ti_dPBLf7TbEC1cWgKhTT1GRBQ",
      "company_name": null,
      "email": "crystal_jast@example.org",
      "metadata": null,
      "first_name": "Ki-Adi-Mundi",
      "last_name": null,
      "name": "Ki-Adi-Mundi",
      "number": 180,
      "phone_number": null,
      "price": 90.0,
      "reference": "UHMF-4",
      "state": "complete",
      "test_mode": false,
      "registration_id": 30,
      "release_id": 1,
      "release_archived": false,
      "avatar_url": "https://secure.gravatar.com/avatar/34f008dbe93dc800315000b8b1889ab5?default=https://starwavatars.global.ssl.fastly.net/avatars/34f008dbe93dc800315000b8b1889ab5.png",
      "void": false,
      "changes_locked": false,
      "consented_at": null,
      "discount_code_used": null,
      "tag_names": [

      ],
      "created_at": "2022-03-26T07:36:27.000Z",
      "updated_at": "2022-03-26T07:36:27.000Z",
      "assigned": true,
      "qr_url": "https://qr.tito.io/tickets/ti_dPBLf7TbEC1cWgKhTT1GRBQ",
      "show_qr_code": true,
      "qr_code_disabled": false,
      "price_less_tax": 90.0,
      "total_paid": 90.0,
      "total_tax_paid": 0.0,
      "total_paid_less_tax": 90.0,
      "tags": null,
      "lock_changes": false
    },
    {
      "_type": "ticket",
      "id": 181,
      "slug": "ti_dLn9FsjF44o5Cx0eFxdeSow",
      "unique_url": "https://ti.to/demo/awesomeconf/tickets/ti_dLn9FsjF44o5Cx0eFxdeSow",
      "company_name": null,
      "email": "crystal_jast@example.org",
      "metadata": null,
      "first_name": "Ki-Adi-Mundi",
      "last_name": null,
      "name": "Ki-Adi-Mundi",
      "number": 181,
      "phone_number": null,
      "price": 90.0,
      "reference": "UHMF-5",
      "state": "complete",
      "test_mode": false,
      "registration_id": 30,
      "release_id": 1,
      "release_archived": false,
      "avatar_url": "https://secure.gravatar.com/avatar/34f008dbe93dc800315000b8b1889ab5?default=https://starwavatars.global.ssl.fastly.net/avatars/34f008dbe93dc800315000b8b1889ab5.png",
      "void": false,
      "changes_locked": false,
      "consented_at": null,
      "discount_code_used": null,
      "tag_names": [

      ],
      "created_at": "2022-03-26T07:36:27.000Z",
      "updated_at": "2022-03-26T07:36:27.000Z",
      "assigned": true,
      "qr_url": "https://qr.tito.io/tickets/ti_dLn9FsjF44o5Cx0eFxdeSow",
      "show_qr_code": true,
      "qr_code_disabled": false,
      "price_less_tax": 90.0,
      "total_paid": 90.0,
      "total_tax_paid": 0.0,
      "total_paid_less_tax": 90.0,
      "tags": null,
      "lock_changes": false
    },
    "..."
  ],
  "meta": {
    "api_version": "3.1.0",
    "expandable": {
      "activities": false,
      "activity_ids": false,
      "answers": false,
      "answer_ids": false,
      "opt_ins": false,
      "registration": false,
      "release": false,
      "responses": false,
      "upgrade_ids": false
    },
    "current_page": 1,
    "next_page": 2,
    "prev_page": null,
    "total_pages": 2,
    "total_count": 184,
    "per_page": 100,
    "overall_total": 184,
    "resources_hidden_by_default_count": 0,
    "search_states_hidden_by_default": [
      "void",
      "archived"
    ],
    "sort_options": {
      "First name A-Z": {
        "attr": "first_name",
        "direction": "asc"
      },
      "First name Z-A": {
        "attr": "first_name",
        "direction": "desc"
      },
      "Last name A-Z": {
        "attr": "last_name",
        "direction": "asc"
      },
      "Last name Z-A": {
        "attr": "last_name",
        "direction": "desc"
      },
      "Ticket date, earliest first": {
        "attr": "tickets.created_at",
        "direction": "asc"
      },
      "Ticket date, newest first": {
        "attr": "tickets.created_at",
        "direction": "desc",
        "default": true
      },
      "Price, least first": {
        "attr": "price",
        "direction": "asc"
      },
      "Price, most first": {
        "attr": "price",
        "direction": "desc"
      },
      "Reference": {
        "attr": "reference",
        "direction": "asc"
      },
      "Number": {
        "attr": "number",
        "direction": "asc"
      },
      "Last change": {
        "attr": "updated_at",
        "direction": "desc"
      }
    },
    "filter_options": {
      "types": [
        {
          "label": "Added manually",
          "value": "manual"
        },
        {
          "label": "Ordered by customer",
          "value": "standard"
        }
      ],
      "release_ids": [
        {
          "label": "Early Bird",
          "value": "early-bird"
        },
        {
          "label": "Standard",
          "value": "standard"
        },
        {
          "label": "Exhibitor",
          "value": "exhibitor"
        },
        {
          "label": "Speaker",
          "value": "speaker"
        }
      ],
      "activity_ids": [
        {
          "label": "Conference",
          "value": "1"
        },
        {
          "label": "Dinner",
          "value": "2"
        },
        {
          "label": "Workshop",
          "value": "3"
        },
        {
          "label": "Conference Copy",
          "value": "5"
        },
        {
          "label": "Conference Copy",
          "value": "7"
        },
        {
          "label": "Conference Copy",
          "value": "9"
        },
        {
          "label": "Conference Copy",
          "value": "11"
        }
      ],
      "sections": {
        "states": {
          "label": "Status",
          "open": false
        },
        "types": {
          "label": "Type",
          "open": false
        },
        "release_ids": {
          "label": "Tickets",
          "open": false
        },
        "activity_ids": {
          "label": "Activities",
          "open": false
        }
      },
      "collection": false,
      "states": [
        {
          "label": "Complete",
          "value": "complete"
        },
        {
          "label": "Incomplete",
          "value": "incomplete"
        },
        {
          "label": "Unassigned",
          "value": "unassigned"
        },
        {
          "label": "Void",
          "value": "void"
        },
        {
          "label": "Changes Locked",
          "value": "changes_locked"
        },
        {
          "label": "Changes Allowed",
          "value": "changes_allowed"
        },
        {
          "label": "Archived",
          "value": "archived"
        }
      ],
      "selected_states": [
        "complete",
        "incomplete",
        "unassigned",
        "changes_locked",
        "changes_allowed"
      ]
    }
  }
}

GET /:account_slug/:event_slug/tickets

Sort Order

The default order is by created_at with newest tickets first. You can change the order by appending some parameters to the endpoint URL. This is the same as the default:

?search[sort]=created_at&search[direction]=desc

The direction can either be asc or desc.

You can sort on the following attributes:

Filtering

You can filter which tickets you get back too.

By state

For instance, to only get incomplete or unassigned tickets:

?search[states][]=incomplete&search[states][]=unassigned

Possible states are:

By default, the list will exclude void tickets. If you want void tickets then you have to explicitly ask for them.

There are some other pseudo-states that behave a little differently.

If you select both changes_allowed and changes_locked then that's effectively the same as saying "those tickets that are either locked or not locked" which is the same as the default.

The list excludes archived tickets by default. If you select this state then it also includes archived tickets as well as non-archived tickets.

By type

?search[types][]=manual

Possible types are:

By release

?search[release_ids][]=early-bird

where "early-bird" is the release slug.

By activity

?search[activity_ids][]=1025351

where "1025351" is the activity id.

By time

This will show all tickets created since 1 Jan 2019 at 9am UTC:

?search[created_at][gt]=2019-01-01T09:00:00+UTC

That operator can be:

And you can do that on the following attributes

So, for instance, to find all tickets that have been updated in the last hour:

?search[updated_at][gt]=2019-01-01T09:00:00+UTC

(where you obviously change that timestamp to be one hour ago).

Note: if you don't use the +UTC suffix on those timestamps it will default to the time zone used by the event itself.

By any text

You can also search by text, which uses the same logic as the dashboard UI:

For example:

?q=Alice

Get a ticket

curl --request GET \
  --url 'https://api.tito.io/v3/:account_slug/:event_slug/tickets/:ticket_slug' \
  --header 'Authorization: Token token=YOUR-API-TOKEN' \
  --header 'Accept: application/json'
{
  "ticket": {
    "_type": "ticket",
    "id": 1,
    "slug": "ti_dj8GKOodhY1PZK3VpFxVshw",
    "unique_url": "https://ti.to/demo/awesomeconf/tickets/ti_dj8GKOodhY1PZK3VpFxVshw",
    "company_name": null,
    "email": "yW0K4UJmnG_eyQ@example.com",
    "metadata": null,
    "first_name": null,
    "last_name": null,
    "name": "",
    "number": 1,
    "phone_number": null,
    "price": 0.0,
    "reference": "9K9R-1",
    "state": "incomplete",
    "test_mode": false,
    "registration_id": 1,
    "release_id": 2,
    "release_archived": false,
    "avatar_url": "https://secure.gravatar.com/avatar/6f63f583f222a8945169a145e40710b9?default=https://starwavatars.global.ssl.fastly.net/avatars/6f63f583f222a8945169a145e40710b9.png",
    "void": false,
    "changes_locked": false,
    "consented_at": null,
    "discount_code_used": "FREE2U",
    "tag_names": [

    ],
    "created_at": "2022-03-26T07:36:07.000Z",
    "updated_at": "2022-03-26T07:59:13.000Z",
    "assigned": true,
    "qr_url": "https://qr.tito.io/tickets/ti_dj8GKOodhY1PZK3VpFxVshw",
    "show_qr_code": false,
    "qr_code_disabled": false,
    "price_less_tax": 0.0,
    "total_paid": 0.0,
    "total_tax_paid": 0.0,
    "total_paid_less_tax": 0.0,
    "tags": null,
    "lock_changes": false
  },
  "meta": {
    "api_version": "3.1.0",
    "expandable": {
      "activities": false,
      "activity_ids": false,
      "answers": false,
      "answer_ids": false,
      "opt_ins": false,
      "registration": false,
      "release": false,
      "responses": false,
      "upgrade_ids": false
    }
  }
}

GET /:account_slug/:event_slug/tickets/:ticket_slug

Create a ticket

TODO: missing data/3.1/tickets/create.json

Update a ticket

curl --request PATCH \
  --url 'https://api.tito.io/v3/:account_slug/:event_slug/tickets/:tickets_slug' \
  --header 'Authorization: Token token=YOUR-API-TOKEN' \
  --header 'Accept: application/json' \
  --header 'Content-type: application/json' \
  --data '{"ticket[email]":"8nRo0oMfMkjHGA@example.com"}'
{
  "ticket": {
    "_type": "ticket",
    "id": 1,
    "slug": "ti_dj8GKOodhY1PZK3VpFxVshw",
    "unique_url": "https://ti.to/demo/awesomeconf/tickets/ti_dj8GKOodhY1PZK3VpFxVshw",
    "company_name": null,
    "email": "8nRo0oMfMkjHGA@example.com",
    "metadata": null,
    "first_name": null,
    "last_name": null,
    "name": "",
    "number": 1,
    "phone_number": null,
    "price": 0.0,
    "reference": "9K9R-1",
    "state": "incomplete",
    "test_mode": false,
    "registration_id": 1,
    "release_id": 2,
    "release_archived": false,
    "avatar_url": "https://secure.gravatar.com/avatar/69ad0840e4e3b9b5b6df4a0b6d27acf8?default=https://starwavatars.global.ssl.fastly.net/avatars/69ad0840e4e3b9b5b6df4a0b6d27acf8.png",
    "void": false,
    "changes_locked": false,
    "consented_at": null,
    "discount_code_used": "FREE2U",
    "tag_names": [

    ],
    "created_at": "2022-03-26T07:36:07.000Z",
    "updated_at": "2022-03-26T07:59:24.000Z",
    "assigned": true,
    "qr_url": "https://qr.tito.io/tickets/ti_dj8GKOodhY1PZK3VpFxVshw",
    "show_qr_code": false,
    "qr_code_disabled": false,
    "price_less_tax": 0.0,
    "total_paid": 0.0,
    "total_tax_paid": 0.0,
    "total_paid_less_tax": 0.0,
    "tags": null,
    "lock_changes": false
  },
  "meta": {
    "api_version": "3.1.0"
  }
}

PATCH /:account_slug/:event_slug/tickets/:ticket_slug

Required attributes

Reassign a Ticket

curl --request POST \
  --url 'https://api.tito.io/v3/:account_slug/:event_slug/tickets/:ticket_slug/reassignments' \
  --header 'Authorization: Token token=YOUR-API-TOKEN' \
  --header 'Accept: application/json' \
  --header 'Content-Type: application/json' \
  --data '{"reassignment":{"email":"jane@example.com","first_name":"Jane","last_name":"Smith","delete_answers":true}}'
{
  "ticket": {
    "_type": "ticket",
    "id": 3068932,
    "slug": "ti_dPkq1HwyzQjJdF1dvhHjzEg",
    "company_name": null,
    "email": null,
    "metadata": {},
    "first_name": "Jane",
    "last_name": "Doe",
    "name": "Jane Doe",
    "number": null,
    "phone_number": null,
    "price": "0.0",
    "reference": "PNGU-1",
    "state": "complete",
    "test_mode": true,
    "registration_id": 3509398,
    "release_id": 1105525,
    "consented_at": null,
    "discount_code_used": null,
    "created_at": "2018-11-12T13:54:00.000+00:00",
    "updated_at": "2018-11-12T13:54:00.000+00:00",
    "responses": null,
    "assigned": false,
    "price_less_tax": "0.0",
    "total_paid": "0.0",
    "total_tax_paid": "0.0",
    "total_paid_less_tax": "0.0",
    "tags": null,
    "upgrade_ids": [],
    "registration_slug": "reg_test_dp729LA0bGxEFfgeyldOVuA",
    "release_slug": "coffee-brewing",
    "release_title": "Coffee Brewing",
    "registration": {
      ...
    },
    "release": {
      ...
    },
    "answers": []
  }
}

Reassign a Ticket to a new attendee. It's different from just updating the email and name for a ticket: reassigning a ticket also sends out an email to the new attendee and (optionally) deletes all the answers made by the original attendee.

POST /:account_slug/:event_slug/tickets/:ticket_slug/reassignments

Parameters

Emails Sent

The following people receive an email after a reassignment:

Void a Ticket

curl --request POST \
  --url 'https://api.tito.io/v3/:account_slug/:event_slug/tickets/:ticket_slug/void' \
  --header 'Authorization: Token token=YOUR-API-TOKEN' \
  --header 'Accept: application/json' \
  --header 'Content-Type: application/json' \
  --data '{"void":{"resell":true}}'
{
  "void": {
    "_type": "void",
    "resell": true,
    "ticket": {
      "_type": "ticket",
      "id": 3068932,
      "slug": "ti_dPkq1HwyzQjJdF1dvhHjzEg",
      "company_name": null,
      "email": null,
      "metadata": {},
      "first_name": "Jane",
      "last_name": "Doe",
      "name": "Jane Doe",
      "number": null,
      "phone_number": null,
      "price": "0.0",
      "reference": "PNGU-1",
      "state": "void",
      "test_mode": true,
      "registration_id": 3509398,
      "release_id": 1105525,
      "consented_at": null,
      "discount_code_used": null,
      "created_at": "2018-11-12T13:54:00.000+00:00",
      "updated_at": "2018-11-12T13:54:00.000+00:00",
      "responses": null,
      "assigned": false,
      "price_less_tax": "0.0",
      "total_paid": "0.0",
      "total_tax_paid": "0.0",
      "total_paid_less_tax": "0.0",
      "tags": null,
      "upgrade_ids": [],
      "registration_slug": "reg_test_dp729LA0bGxEFfgeyldOVuA",
      "release_slug": "coffee-brewing",
      "release_title": "Coffee Brewing",
      "registration": {
        ...
      },
      "release": {
        ...
      },
      "answers": []
    }
  }
}

Void a Ticket so that it is no longer able to be used to checkin to an event.

POST /:account_slug/:event_slug/tickets/:ticket_slug/void

Parameters

If the Release quantity is defined (i.e. the number of tickets for that release is limited) then you also need to pass in the resell parameter.

For instance, if you have 19/20 tickets sold and you void one and you pass "resell":true then it will show 18/20 tickets sold and two will now be available.

If you pass "resell":false then it will show 18/19 tickets sold and only one will be available.

If the Release quantity is not defined (i.e. the number of tickets available is infinite) then the resell parameter is optional.

Waitlisted people

Attributes

Get all waitlisted_people

curl --request GET \
  --url 'https://api.tito.io/v3/:account_slug/:event_slug/waitlisted_people' \
  --header 'Authorization: Token token=YOUR-API-TOKEN' \
  --header 'Accept: application/json'
{
  "waitlisted_people": [
    {
      "_type": "waitlisted_person",
      "id": 4,
      "name": "Jane Smith",
      "email": "jane.smith@example.com",
      "offered_at": null,
      "expires_at": null,
      "created_at": "2022-09-14T08:04:35.000Z",
      "updated_at": "2022-09-14T08:04:35.000Z",
      "joined_at": "2022-09-14T08:04:35.000Z",
      "release_id": 1,
      "state": "joined",
      "message": null,
      "status": "Waiting",
      "redeemed": false,
      "expired": false,
      "joined": true,
      "offered": false,
      "rejected": false,
      "unique_offer_url": null
    }
  ],
  "meta": {
    "api_version": "3.1.0",
    "expandable": {
      "registration": false,
      "release": false
    },
    "current_page": 1,
    "next_page": null,
    "prev_page": null,
    "total_pages": 1,
    "total_count": 1,
    "per_page": 100,
    "overall_total": 1,
    "resources_hidden_by_default_count": 0,
    "search_states_hidden_by_default": [
      "redeemed",
      "rejected",
      "expired"
    ],
    "sort_options": {
      "Name A-Z": {
        "attr": "name",
        "direction": "asc"
      },
      "Name Z-A": {
        "attr": "name",
        "direction": "desc"
      },
      "Join date, earliest first": {
        "attr": "created_at",
        "direction": "asc"
      },
      "Join date, newest first": {
        "attr": "created_at",
        "direction": "desc",
        "default": true
      }
    },
    "filter_options": {
      "sections": {
        "states": {
          "label": "Status",
          "open": false
        }
      },
      "collection": false,
      "states": [
        {
          "label": "Joined",
          "value": "joined"
        },
        {
          "label": "Offered",
          "value": "offered"
        },
        {
          "label": "Redeemed",
          "value": "redeemed"
        },
        {
          "label": "Rejected",
          "value": "rejected"
        },
        {
          "label": "Expired",
          "value": "expired"
        }
      ],
      "selected_states": [
        "joined",
        "offered"
      ]
    }
  }
}

GET /:account_slug/:event_slug/waitlisted_people

Get a waitlisted person

curl --request GET \
  --url 'https://api.tito.io/v3/:account_slug/:event_slug/waitlisted_people/:waitlisted_person_id' \
  --header 'Authorization: Token token=YOUR-API-TOKEN' \
  --header 'Accept: application/json'
{
  "waitlisted_person": {
    "_type": "waitlisted_person",
    "id": 4,
    "name": "Jane Smith",
    "email": "jane.smith@example.com",
    "offered_at": null,
    "expires_at": null,
    "created_at": "2022-09-14T08:04:35.000Z",
    "updated_at": "2022-09-14T08:04:35.000Z",
    "joined_at": "2022-09-14T08:04:35.000Z",
    "release_id": 1,
    "state": "joined",
    "message": null,
    "status": "Waiting",
    "redeemed": false,
    "expired": false,
    "joined": true,
    "offered": false,
    "rejected": false,
    "unique_offer_url": null
  },
  "meta": {
    "api_version": "3.1.0",
    "expandable": {
      "registration": false,
      "release": false
    }
  }
}

GET /:account_slug/:event_slug/waitlisted_people/:waitlisted_person_id

Create a waitlisted person

curl --request POST \
  --url 'https://api.tito.io/v3/:account_slug/:event_slug/waitlisted_people' \
  --header 'Authorization: Token token=YOUR-API-TOKEN' \
  --header 'Accept: application/json' \
  --header 'Content-Type: application/json' \
  --data '{"waitlisted_person[name]":"Jane Doe","waitlisted_person[email]":"jane.doe@example.com","waitlisted_person[release_id]":1}'
{
  "waitlisted_person": {
    "_type": "waitlisted_person",
    "id": 13,
    "name": "Jane Doe",
    "email": "jane.doe@example.com",
    "offered_at": null,
    "expires_at": null,
    "created_at": "2022-09-14T15:13:21.000Z",
    "updated_at": "2022-09-14T15:13:21.000Z",
    "joined_at": "2022-09-14T15:13:21.000Z",
    "release_id": 1,
    "state": "joined",
    "message": null,
    "status": "Waiting",
    "redeemed": false,
    "expired": false,
    "joined": true,
    "offered": false,
    "rejected": false,
    "unique_offer_url": null
  },
  "meta": {
    "api_version": "3.1.0"
  }
}

POST /:account_slug/:event_slug/waitlisted_people

Required attributes

Update a waitlisted person

curl --request PATCH \
  --url 'https://api.tito.io/v3/:account_slug/:event_slug/waitlisted_people/:waitlisted_people_id' \
  --header 'Authorization: Token token=YOUR-API-TOKEN' \
  --header 'Accept: application/json' \
  --header 'Content-type: application/json' \
  --data '{"waitlisted_person[email]":"7GmO4VysORdDsw@example.com"}'
{
  "waitlisted_person": {
    "_type": "waitlisted_person",
    "id": 4,
    "name": "Jane Smith",
    "email": "7GmO4VysORdDsw@example.com",
    "offered_at": null,
    "expires_at": null,
    "created_at": "2022-09-14T08:04:35.000Z",
    "updated_at": "2022-09-14T08:04:35.000Z",
    "joined_at": "2022-09-14T08:04:35.000Z",
    "release_id": 1,
    "state": "joined",
    "message": null,
    "status": "Waiting",
    "redeemed": false,
    "expired": false,
    "joined": true,
    "offered": false,
    "rejected": false,
    "unique_offer_url": null
  },
  "meta": {
    "api_version": "3.1.0"
  }
}

PATCH /:account_slug/:event_slug/waitlisted_people/:waitlisted_person_id

Required attributes

Delete a waitlisted person

curl --request DELETE \
  --url 'https://api.tito.io/v3/:account_slug/:event_slug/waitlisted_people/:waitlisted_people_id' \
  --header 'Authorization: Token token=YOUR-API-TOKEN' \
  --header 'Accept: application/json'

DELETE /:account_slug/:event_slug/waitlisted_people/:waitlisted_person_id

Webhook Endpoints

See Webhooks for more information.

Attributes

Expansions

TODO: No expansions to show in 3.1/webhook_endpoints/expansions.json

Get all webhook endpoints

curl --request GET \
  --url 'https://api.tito.io/v3/:account_slug/:event_slug/webhook_endpoints' \
  --header 'Authorization: Token token=YOUR-API-TOKEN' \
  --header 'Accept: application/json'
{
  "webhook_endpoints": [
    {
      "_type": "webhook_endpoint",
      "id": 1,
      "url": "https://doesnotexist.tito.io/listen/123",
      "included_triggers": [
        "ticket.completed"
      ],
      "custom_data": "{\"my_webhook_variable\":\"there-i-go\"}",
      "deprecated": false
    }
  ],
  "meta": {
    "api_version": "3.1.0",
    "expandable": {
    },
    "current_page": 1,
    "next_page": null,
    "prev_page": null,
    "total_pages": 1,
    "total_count": 1,
    "per_page": 100,
    "overall_total": 1
  }
}

GET /:account_slug/:event_slug/webhook_endpoints

Get an webhook endpoint

curl --request GET \
  --url 'https://api.tito.io/v3/:account_slug/:event_slug/webhook_endpoints/:webhook_endpoint_id' \
  --header 'Authorization: Token token=YOUR-API-TOKEN' \
  --header 'Accept: application/json'
{
  "webhook_endpoint": {
    "_type": "webhook_endpoint",
    "id": 1,
    "url": "https://doesnotexist.tito.io/listen/123",
    "included_triggers": [
      "ticket.completed"
    ],
    "custom_data": "{\"my_webhook_variable\":\"there-i-go\"}",
    "deprecated": false
  },
  "meta": {
    "api_version": "3.1.0",
    "expandable": {
    }
  }
}

GET /:account_slug/:event_slug/webhook_endpoints/:webhook_endpoint_id

Create an webhook endpoint

curl --request POST \
  --url 'https://api.tito.io/v3/:account_slug/:event_slug/webhook_endpoints' \
  --header 'Authorization: Token token=YOUR-API-TOKEN' \
  --header 'Accept: application/json' \
  --header 'Content-Type: application/json' \
  --data '{"webhook_endpoint[included_triggers][]":"registration.finished","webhook_endpoint[url]":"https://doesnotexist.tito.io/listen/456"}'
{
  "webhook_endpoint": {
    "_type": "webhook_endpoint",
    "id": 5,
    "url": "https://doesnotexist.tito.io/listen/456",
    "included_triggers": [
      "registration.finished"
    ],
    "custom_data": null,
    "deprecated": false
  },
  "meta": {
    "api_version": "3.1.0"
  }
}

POST /:account_slug/:event_slug/webhook_endpoints

Required attributes

Update an webhook endpoint

curl --request PATCH \
  --url 'https://api.tito.io/v3/:account_slug/:event_slug/webhook_endpoints/:webhook_endpoints_id' \
  --header 'Authorization: Token token=YOUR-API-TOKEN' \
  --header 'Accept: application/json' \
  --header 'Content-type: application/json' \
  --data '{"webhook_endpoint[custom_data]":"{\"my_webhook_variable\":\"there-i-go\"}"}'
{
  "webhook_endpoint": {
    "_type": "webhook_endpoint",
    "id": 1,
    "url": "https://doesnotexist.tito.io/listen/123",
    "included_triggers": [
      "ticket.completed"
    ],
    "custom_data": "{\"my_webhook_variable\":\"there-i-go\"}",
    "deprecated": false
  },
  "meta": {
    "api_version": "3.1.0"
  }
}

PATCH /:account_slug/:event_slug/webhook_endpoints/:webhook_endpoint_id

Required attributes

Delete an webhook endpoint

curl --request DELETE \
  --url 'https://api.tito.io/v3/:account_slug/:event_slug/webhook_endpoints/:webhook_endpoints_id' \
  --header 'Authorization: Token token=YOUR-API-TOKEN' \
  --header 'Accept: application/json'

DELETE /:account_slug/:event_slug/webhook_endpoints/:webhook_endpoint_id

Webhooks

Webhooks allow data to be passed to an external system in real time. Webhooks will POST a JSON payload to the endpoint you specify, with a X-Webhook-Name header.

Read more about webhooks

Triggers

Name Description
checkin.created Fired when an attendee is checked-in via one of the Tito apps (web, iOS or Android).
ticket.created Fired when tickets are created immediately after a registration is confirmed. Tickets can be unassigned, incomplete or complete at this stage depending on whether it is a single or multiple ticket registration or whether the ticket has required fields or not.
ticket.completed Fired when all required fields like name, email, etc and required questions have been answered.
ticket.reassigned Fired specifically when a ticket is reassigned to someone else.
ticket.updated Fired anytime ticket details are changed, including changes to the email address.
ticket.unsnoozed Fired when a “snoozed” ticket is assigned to someone. When people register tickets but do not want to or can’t assign them straight away they can be “snoozed”.
ticket.unvoided Fired when a voided ticket is returned to a valid state.
ticket.voided Fired when a ticket is changed to a voided state. Free tickets that are cancelled by the attendee will also cause this webhook to fire.
registration.started Fired when a registration is started e.g. after they have selected tickets but before they have filled in any details.
registration.updated Fired when the registration is updated in the Tito admin area or via the API.
registration.filling Fired as soon as the person registering starts to filling in details like name, email, etc.
registration.finished Fired as soon as the registration is confirmed, e.g. when payment is complete.
registration.completed Fired when all tickets on a registration have been completed (see the ticket.completed webhook).
registration.cancelled Fired when the registration is cancelled in the Tito admin area or via the API. Free tickets that are cancelled by the attendee will also cause this webhook to fire.

Payloads

Ticket Payload

{
  "_type": "ticket",
  "id": 2,
  "test_mode": false,
  "name": "Watto",
  "first_name": "Watto",
  "last_name": null,
  "email": "jailyn@example.com",
  "phone_number": null,
  "company_name": null,
  "reference": "9K9R-2",
  "price": "0.0",
  "tax": "0.0",
  "price_less_tax": "0.0",
  "slug": "ti_dbFC7zPGM4jkgWA1jpVfGOw",
  "state_name": "complete",
  "gender": null,
  "total_paid": "0.0",
  "total_paid_less_tax": "0.0",
  "updated_at": "2022-03-26 07:36:07 UTC",
  "release_price": "100.0",
  "discount_code_used": "FREE2U",
  "url": "https://ti.to/demo/awesomeconf/tickets/ti_dbFC7zPGM4jkgWA1jpVfGOw",
  "admin_url": "https://dashboard.tito.io/demo/awesomeconf/tickets/ti_dbFC7zPGM4jkgWA1jpVfGOw",
  "release_title": "Standard",
  "release_slug": "standard",
  "release_id": 2,
  "release": {
    "id": 2,
    "title": "Standard",
    "slug": "standard",
    "metadata": {
      "my_release_variable": "else",
      "another_release_variable": 456
    }
  },
  "custom": {
  },
  "registration_id": 1,
  "registration_slug": "reg_dp9Z2e2FgFH9QrhrVbf7Whg",
  "metadata": null,
  "answers": [
    {
      "question": {
        "id": 2,
        "title": "Where do you live?"
      },
      "response": "US",
      "humanized_response": "United States"
    }
  ],
  "opt_ins": [

  ],
  "responses": {
    "where-do-you-live": "United States"
  },
  "last_updated_by_type": "admin",
  "upgrades": "#<Upgrade::ActiveRecord_Associations_CollectionProxy:0x0000aaaaf4a51078>",
  "upgrade_ids": [

  ],
  "registration": {
    "id": 1,
    "slug": "reg_dp9Z2e2FgFH9QrhrVbf7Whg",
    "url": "https://ti.to/registrations/reg_dp9Z2e2FgFH9QrhrVbf7Whg",
    "admin_url": "https://dashboard.tito.io/demo/awesomeconf/registrations/reg_dp9Z2e2FgFH9QrhrVbf7Whg",
    "total": "270.0",
    "currency": "USD",
    "payment_reference": null,
    "source": null,
    "name": "Watto",
    "email": "nIFOizT0YnYTTA@example.com",
    "receipt": {
      "total": "270.0",
      "tax": 0,
      "payment_provider": "Invoice",
      "paid": false,
      "receipt_lines": [
        {
          "total": "0.0",
          "quantity": 2,
          "tax": 0
        },
        {
          "total": "0.0",
          "quantity": 1,
          "tax": 0
        },
        {
          "total": "270.0",
          "quantity": 3,
          "tax": 0
        }
      ]
    }
  },
  "event": {
    "_type": "event",
    "id": 1,
    "title": "Awesomeconf",
    "url": "https://ti.to/demo/awesomeconf",
    "account_slug": "demo",
    "slug": "awesomeconf",
    "start_date": "2022-06-26",
    "end_date": null,
    "metadata": {
      "my_event_variable": "something",
      "another_event_variable": 123
    }
  }
}

For webhooks that have the webhook type of ticket.* the following JSON payload will be sent.

Registration Payload

{
  "_type": "registration",
  "id": 1,
  "test_mode": false,
  "slug": "reg_dp9Z2e2FgFH9QrhrVbf7Whg",
  "reference": "9K9R",
  "total": "270.0",
  "total_less_tax": "270.0",
  "name": "Watto",
  "first_name": "Watto",
  "last_name": "",
  "email": "nIFOizT0YnYTTA@example.com",
  "phone_number": null,
  "company_name": null,
  "discount_code": "FREE2U",
  "payment_reference": null,
  "created_at": "2022-03-26 07:36:07 UTC",
  "completed_at": "2022-03-26 07:36:07 UTC",
  "completed_date": "2022-03-26",
  "metadata": null,
  "updated_at": "2022-03-26 07:59:13 UTC",
  "locale": "en",
  "created_date": "2022-03-26",
  "currency": "USD",
  "custom": {
  },
  "paid": false,
  "line_items": [
    {
      "id": 1,
      "release_slug": "standard",
      "release_id": 2,
      "release_title": "Standard",
      "release_price": "100.0",
      "release": {
        "slug": "standard",
        "title": "Standard",
        "price": "100.0",
        "metadata": {
          "my_release_variable": "else",
          "another_release_variable": 456
        }
      },
      "price": "0.0",
      "title": "Standard",
      "quantity": 2,
      "total": "0.0",
      "currency": "USD"
    },
    {
      "id": 2,
      "release_slug": "exhibitor",
      "release_id": 3,
      "release_title": "Exhibitor",
      "release_price": "0.0",
      "release": {
        "slug": "exhibitor",
        "title": "Exhibitor",
        "price": "0.0",
        "metadata": {
          "my_release_variable": "else",
          "another_release_variable": 456
        }
      },
      "price": "0.0",
      "title": "Exhibitor",
      "quantity": 1,
      "total": "0.0",
      "currency": "USD"
    },
    {
      "id": 3,
      "release_slug": "early-bird",
      "release_id": 1,
      "release_title": "Early Bird",
      "release_price": "90.0",
      "release": {
        "slug": "early-bird",
        "title": "Early Bird",
        "price": "90.0",
        "metadata": {
          "my_release_variable": "else",
          "another_release_variable": 456
        }
      },
      "price": "90.0",
      "title": "Early Bird",
      "quantity": 3,
      "total": "270.0",
      "currency": "USD"
    }
  ],
  "quantities": {
    "standard": {
      "release": "Standard",
      "quantity": 2
    },
    "exhibitor": {
      "release": "Exhibitor",
      "quantity": 1
    },
    "early-bird": {
      "release": "Early Bird",
      "quantity": 3
    }
  },
  "tickets": [
    {
      "reference": "9K9R-1",
      "slug": "ti_dj8GKOodhY1PZK3VpFxVshw",
      "price": "0.0",
      "price_less_tax": "0.0",
      "total_paid": "0.0",
      "total_paid_less_tax": "0.0",
      "release_id": 2,
      "release_slug": "standard",
      "release_title": "Standard",
      "release": {
        "id": 2,
        "slug": "standard",
        "title": "Standard",
        "price": "100.0",
        "metadata": {
          "my_release_variable": "else",
          "another_release_variable": 456
        }
      },
      "name": "",
      "first_name": null,
      "last_name": null,
      "company_name": null,
      "email": "yW0K4UJmnG_eyQ@example.com",
      "url": "https://ti.to/demo/awesomeconf/tickets/ti_dj8GKOodhY1PZK3VpFxVshw",
      "admin_url": "https://dashboard.tito.io/demo/awesomeconf/tickets/ti_dj8GKOodhY1PZK3VpFxVshw",
      "opt_ins": [

      ],
      "responses": {
        "favorite-color": "Blue"
      },
      "answers": [
        {
          "question": {
            "id": 1,
            "title": "Fave tree?",
            "description": "What is your most favorite color of all?"
          },
          "humanized_response": "Blue",
          "response": "Blue",
          "file": null
        }
      ]
    },
    {
      "reference": "9K9R-2",
      "slug": "ti_dbFC7zPGM4jkgWA1jpVfGOw",
      "price": "0.0",
      "price_less_tax": "0.0",
      "total_paid": "0.0",
      "total_paid_less_tax": "0.0",
      "release_id": 2,
      "release_slug": "standard",
      "release_title": "Standard",
      "release": {
        "id": 2,
        "slug": "standard",
        "title": "Standard",
        "price": "100.0",
        "metadata": {
          "my_release_variable": "else",
          "another_release_variable": 456
        }
      },
      "name": "Watto",
      "first_name": "Watto",
      "last_name": null,
      "company_name": null,
      "email": "jailyn@example.com",
      "url": "https://ti.to/demo/awesomeconf/tickets/ti_dbFC7zPGM4jkgWA1jpVfGOw",
      "admin_url": "https://dashboard.tito.io/demo/awesomeconf/tickets/ti_dbFC7zPGM4jkgWA1jpVfGOw",
      "opt_ins": [

      ],
      "responses": {
        "where-do-you-live": "United States"
      },
      "answers": [
        {
          "question": {
            "id": 2,
            "title": "Where do you live?",
            "description": "To help us with travel arrangements"
          },
          "humanized_response": "United States",
          "response": "US",
          "file": null
        }
      ]
    },
    {
      "reference": "9K9R-3",
      "slug": "ti_dpIFsGDCrA0ydKeuQxo4FEg",
      "price": "0.0",
      "price_less_tax": "0.0",
      "total_paid": "0.0",
      "total_paid_less_tax": "0.0",
      "release_id": 3,
      "release_slug": "exhibitor",
      "release_title": "Exhibitor",
      "release": {
        "id": 3,
        "slug": "exhibitor",
        "title": "Exhibitor",
        "price": "0.0",
        "metadata": {
          "my_release_variable": "else",
          "another_release_variable": 456
        }
      },
      "name": "Watto",
      "first_name": "Watto",
      "last_name": null,
      "company_name": null,
      "email": "jailyn@example.com",
      "url": "https://ti.to/demo/awesomeconf/tickets/ti_dpIFsGDCrA0ydKeuQxo4FEg",
      "admin_url": "https://dashboard.tito.io/demo/awesomeconf/tickets/ti_dpIFsGDCrA0ydKeuQxo4FEg",
      "opt_ins": [

      ],
      "responses": {
        "where-do-you-live": "Germany"
      },
      "answers": [
        {
          "question": {
            "id": 2,
            "title": "Where do you live?",
            "description": "To help us with travel arrangements"
          },
          "humanized_response": "Germany",
          "response": "DE",
          "file": null
        }
      ]
    },
    {
      "reference": "9K9R-4",
      "slug": "ti_dPRNYLLpkElscpUJckyjwWg",
      "price": "90.0",
      "price_less_tax": "90.0",
      "total_paid": "90.0",
      "total_paid_less_tax": "90.0",
      "release_id": 1,
      "release_slug": "early-bird",
      "release_title": "Early Bird",
      "release": {
        "id": 1,
        "slug": "early-bird",
        "title": "Early Bird",
        "price": "90.0",
        "metadata": {
          "my_release_variable": "else",
          "another_release_variable": 456
        }
      },
      "name": "Watto",
      "first_name": "Watto",
      "last_name": null,
      "company_name": null,
      "email": "jailyn+4@example.com",
      "url": "https://ti.to/demo/awesomeconf/tickets/ti_dPRNYLLpkElscpUJckyjwWg",
      "admin_url": "https://dashboard.tito.io/demo/awesomeconf/tickets/ti_dPRNYLLpkElscpUJckyjwWg",
      "opt_ins": [

      ],
      "responses": {
        "where-do-you-live": "Germany"
      },
      "answers": [
        {
          "question": {
            "id": 2,
            "title": "Where do you live?",
            "description": "To help us with travel arrangements"
          },
          "humanized_response": "Germany",
          "response": "DE",
          "file": null
        }
      ]
    },
    {
      "reference": "9K9R-5",
      "slug": "ti_dj4277jrKX8rpq2wbY1fEpg",
      "price": "90.0",
      "price_less_tax": "90.0",
      "total_paid": "90.0",
      "total_paid_less_tax": "90.0",
      "release_id": 1,
      "release_slug": "early-bird",
      "release_title": "Early Bird",
      "release": {
        "id": 1,
        "slug": "early-bird",
        "title": "Early Bird",
        "price": "90.0",
        "metadata": {
          "my_release_variable": "else",
          "another_release_variable": 456
        }
      },
      "name": "Watto",
      "first_name": "Watto",
      "last_name": null,
      "company_name": null,
      "email": "jailyn+5@example.com",
      "url": "https://ti.to/demo/awesomeconf/tickets/ti_dj4277jrKX8rpq2wbY1fEpg",
      "admin_url": "https://dashboard.tito.io/demo/awesomeconf/tickets/ti_dj4277jrKX8rpq2wbY1fEpg",
      "opt_ins": [

      ],
      "responses": {
        "where-do-you-live": "Ireland"
      },
      "answers": [
        {
          "question": {
            "id": 2,
            "title": "Where do you live?",
            "description": "To help us with travel arrangements"
          },
          "humanized_response": "Ireland",
          "response": "IE",
          "file": null
        }
      ]
    },
    {
      "reference": "9K9R-6",
      "slug": "ti_dDEWoBweq75fl7pFhrWAk2g",
      "price": "90.0",
      "price_less_tax": "90.0",
      "total_paid": "90.0",
      "total_paid_less_tax": "90.0",
      "release_id": 1,
      "release_slug": "early-bird",
      "release_title": "Early Bird",
      "release": {
        "id": 1,
        "slug": "early-bird",
        "title": "Early Bird",
        "price": "90.0",
        "metadata": {
          "my_release_variable": "else",
          "another_release_variable": 456
        }
      },
      "name": "",
      "first_name": null,
      "last_name": null,
      "company_name": null,
      "email": null,
      "url": "https://ti.to/demo/awesomeconf/tickets/ti_dDEWoBweq75fl7pFhrWAk2g",
      "admin_url": "https://dashboard.tito.io/demo/awesomeconf/tickets/ti_dDEWoBweq75fl7pFhrWAk2g",
      "opt_ins": [

      ],
      "responses": {
        "favorite-color": "Blue",
        "where-do-you-live": "United Kingdom"
      },
      "answers": [
        {
          "question": {
            "id": 1,
            "title": "Fave tree?",
            "description": "What is your most favorite color of all?"
          },
          "humanized_response": "Blue",
          "response": "Blue",
          "file": null
        },
        {
          "question": {
            "id": 2,
            "title": "Where do you live?",
            "description": "To help us with travel arrangements"
          },
          "humanized_response": "United Kingdom",
          "response": "UK",
          "file": null
        }
      ]
    }
  ],
  "source": null,
  "payment": {
    "reference": null,
    "type": null
  },
  "receipt": {
    "number": "0000001",
    "total": "270.0",
    "tax": 0,
    "total_less_tax": "270.0",
    "payment_provider": "Invoice",
    "payment_reference": null,
    "paid": false
  },
  "billing_address": null,
  "event": {
    "_type": "event",
    "id": 1,
    "title": "Awesomeconf",
    "url": "https://ti.to/demo/awesomeconf",
    "account_slug": "demo",
    "slug": "awesomeconf",
    "start_date": "2022-06-26",
    "end_date": null,
    "metadata": {
      "my_event_variable": "something",
      "another_event_variable": 123
    }
  }
}

For webhooks that have the webhook type of registration.* the following JSON payload will be sent.

Checkin Payload

{
  "id": 3068963,
  "slug": "ti_eZaOm33Y1rnICcLIpeTuESg",
  "name": "John Smith",
  "company_name": "Beanster Ltd",
  "first_name": "John",
  "last_name": "Smith",
  "release_title": "Coffee Brewing",
  "email": "john.smith@example.com",
  "reference": "FITD-1",
  "registration_reference": "FITD",
  "checked_in": true,
  "checked_in_at": "2019-08-16T14:14:21.000Z",
  "checkin_list": {
    "slug": "chk_el1ClfZxL8We2DHKtUzzoeg",
    "title": "Brew Master Check-In List"
  },
  "checkin_uuid": "4521459e-1cec-49e8-90fe-afadcc364f02",
  "custom": null,
  "event": {
    "slug": "2018",
    "title": "2018-2"
  },
  "answers": [
    {
      "question": "What is your favourite coffee?",
      "response": "Latte"
    }
  ]
}

For webhooks that have the webhook type of checkin.* the following JSON payload will be sent.

Verifying the payload

key = 'YOUR EVENT SECURITY TOKEN'
hash = OpenSSL::Digest.new('sha256')
data = 'THE WEBHOOK REQUEST'

Base64.encode64(OpenSSL::HMAC.digest(hash, key, data)).strip

Each payload comes with a signed HMAC signature so that you can verify the origin of the webhook request.

In Customize / Webhooks, you’ll find a shared security token. This is used to sign the payload.

The security token is used as a key to sign the payload data with an HMAC key.

The HMAC key is your security token, the HMAC digest is SHA2, and the data is the raw payload JSON that is sent. The key is sent Base64 encoded via the Tito-Signature HTTP header.

If you’re using Ruby, for example, you can verify the authenticity of your payload with the code opposite.

Developing Locally

When you are developing your application locally you'll need to expose your local development environment to the Internet, so that Tito can send you webhooks and your application can process them.

Using Serveo

You can expose your local environment to the internet using Serveo

To expose your local environment to the internet:

ssh -R 80:localhost:4567 serveo.net where 4567 is the port number your application is running on.

You should see a line that looks something like this:

Forwarding HTTP traffic from https://duncan.serveo.net

Copy and paste that *.serveo.net URL into your browser. Notice you can now access your application using that URL.

If your application listens for webhooks from Tito on http://localhost:4567/webhooks/ you can create a webhook endpoint within Tito with the url https://duncan.serveo.net/webhooks/.