NAV Navbar
curl PHP Ruby Python

Ticket Tailor API

Scroll down for code samples, example requests and responses. Select a language for code samples from the tabs above or the mobile navigation menu.

Whether it’s your first event ever, or your biggest event yet, Ticket Tailor makes it simple to sell tickets online.

Getting started

Conventions

Sign up

If you haven't already, create a Ticket Tailor account. When prompted, fill out details to create a box office. Api keys are associated to the box office, meaning an api key can only access data from the box office that issued it.

Authentication

# You can also use wget
curl -X GET /v1/orders \
  -H 'Accept: application/json' \
  -u'sk_1000_1000_VGlja2V0VGFpbG9y:'
# The colon prevents curl from asking for a password.
<?php
require 'vendor/autoload.php';
$headers = array(
    'Accept' => 'application/json',
    'Authorization' => 'Basic VGlja2V0VGFpbG9y:'
);
$client = new \GuzzleHttp\Client();
// Define array of request body. $request_body = array();
try {
    $response = $client->request('GET','/v1/orders', array(
        'headers' => $headers,
        'json' => $request_body,
      )
    );
    print_r($response->getBody()->getContents());
} catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
}
require 'rest-client'
require 'json'

headers = {
 'Accept' => 'application/json',
 'Authorization' => 'Basic VGlja2V0VGFpbG9y'
}

result = RestClient.get '/v1/orders?limit=1',
 headers

p JSON.parse(result)
import requests

headers = {
  'Accept': 'application/json',
  'Authorization': 'Basic VGlja2V0VGFpbG9y'
}

r = requests.get('/v1/orders', params={}, headers = headers)

print r.json()

The Ticket Tailor API uses API keys to authenticate requests. You can manage your API keys in your box office settings. Authentication to the API is performed via HTTP Basic Auth. Provide your API key as the basic auth username. You do not need to provide a password.

Pagination

Endpoints which enumerate objects support cursor-based (eg. or_1234) pagination via the starting_after and ending_before parameters. Both parameters take an existing value and return objects in reverse chronological order. If both parameters are provided, only ending_before is used.

Request Arguments
ending_before
optional
Returns objects listed before the named object
starting_after
optional
Returns objects listed after the named object
limit
optional
Limits the number of results per-page.
Maximum: 100

Errors

status: integer
error_code: string
message: string

The Ticket Tailor API returns conventional HTTP response codes to indicate the success or failure of an API request. For errors, the response will include additional information about what went wrong, encoded in the response as JSON.

Status Error code Message
400 Bad Request The request was invalid, often due to a missing a required parameter.
401 Unauthorized Your request was not authenticated correctly.
403 Forbidden You do not have permission to perform the request.
404 Not Found The requested resource does not exist.
422 Validation error A validation error occurred.
429 Too Many Requests Too many requests hit the API too quickly.
50X Internal Server Error An error occurred on Ticket Tailor's end with our API.

Rate limiting

You can make up to 2000 requests per hour to each API. To see your current rate limit status, check the HTTP headers returned by any API request. If you’re running into this error frequently, or think you need a higher rate limit, drop us a line at hi@tickettailor.com.

Header Name
X-Rate-Limit-Limit The maximum number of requests that the consumer is permitted to make per hour.
X-Rate-Limit-Remaining The number of requests remaining in the current rate limit window.
X-Rate-Limit-Reset The number of seconds left in the current period.
Retry-After The number of seconds to wait until the rate limit window resets. This is only sent when the rate limit is reached.

Order

List all orders

Code samples

# You can also use wget
curl -X GET /v1/orders \
  -H 'Accept: application/json'

<?php

require 'vendor/autoload.php';

$headers = array(
    'Accept' => 'application/json',

    );

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('GET','/v1/orders', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json'
}

result = RestClient.get '/v1/orders',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/json'
}

r = requests.get('/v1/orders', params={

}, headers = headers)

print r.json()

GET /v1/orders

Returns a list of orders belonging to box office

Parameters

Name In Type Required Description
created_at query integer false Unix timestamp filter that returns items with matched created_at value.
created_at.gt query integer false Unix timestamp filter that returns items with created_at greater than given value.
created_at.gte query integer false Unix timestamp filter that returns items with created_at greater than or equal given value.
created_at.lt query integer false Unix timestamp filter that returns items with created_at less than given value.
created_at.lte query integer false Unix timestamp filter that returns items with created_at less than or equal given value.
starting_after query string false A paginator cursor value of object id (e.g. "or_123") that defines place in the list. To fetch next page of results, use the last object id from the current result list, e.g. starting_after=or_223.
ending_before query string false A paginator cursor value of object id (e.g. "or_123") that defines place in the list. To fetch previous page of results, use the first object id from the current result list, e.g. ending_before=or_123.
limit query string false The number of items to retrieve

Example responses

200 Response

{
  "data": [
    {
      "object": "order",
      "id": "or_737352",
      "buyer_details": {
        "address": {
          "address_1": "The Queen's Walk",
          "address_2": "Bishop's",
          "address_3": "London",
          "postal_code": "SE1 7PB"
        },
        "custom_questions": [],
        "email": "john@example.com",
        "name": "John Doe",
        "phone": "07123456789"
      },
      "created_at": 1587042691,
      "currency": {
        "base_multiplier": 100,
        "code": "gbp"
      },
      "event_summary": {
        "id": "ev_40980",
        "end_date": {
          "date": "2020-05-01",
          "formatted": "Fri 1 May 2020 10:30 PM",
          "iso": "2020-05-01T22:30:00+01:00",
          "time": "22:30",
          "timezone": "+01:00",
          "unix": 1588368600
        },
        "name": "Hackney Downs 2020 Tulip Festival",
        "start_date": {
          "date": "2020-05-01",
          "formatted": "Fri 1 May 2020 6:00 PM",
          "iso": "2020-05-01T18:00:00+01:00",
          "time": "18:00",
          "timezone": "+01:00",
          "unix": 1588352400
        }
      },
      "issued_tickets": [
        {
          "object": "issued_ticket",
          "id": "it_50198",
          "barcode": "al4R5",
          "barcode_url": "https://www.tickettailor.com/userfiles/cache/barcode/qr/attendee/50198/42bf63ef2a055b91a62f",
          "created_at": 1587042697,
          "custom_questions": [],
          "description": "Free ticket",
          "email": "john@example.com",
          "event_id": "ev_40980",
          "full_name": null,
          "first_name": null,
          "last_name": null,
          "status": "valid",
          "updated_at": 1587042697,
          "voided_at": null,
          "order_id": "or_737352",
          "qr_code_url": "https://www.tickettailor.com/userfiles/cache/barcode/st/attendee/50198/42bf63ef2a055b91a62f"
        },
        {
          "object": "issued_ticket",
          "id": "it_50199",
          "barcode": "dx2Fv",
          "barcode_url": "https://www.tickettailor.com/userfiles/cache/barcode/qr/attendee/50199/633d33a7ff6eba30a565",
          "created_at": 1587042697,
          "custom_questions": [],
          "description": "Free ticket",
          "email": "john@example.com",
          "event_id": "ev_40980",
          "full_name": null,
          "first_name": null,
          "last_name": null,
          "status": "valid",
          "updated_at": 1587042697,
          "voided_at": null,
          "order_id": "or_737352",
          "qr_code_url": "https://www.tickettailor.com/userfiles/cache/barcode/st/attendee/50199/633d33a7ff6eba30a565"
        }
      ],
      "line_items": [
        {
          "object": "line_item",
          "id": "li_1505167",
          "booking_fee": 0,
          "description": "Free ticket",
          "type": "ticket",
          "total": 0,
          "value": 0,
          "quantity": 2
        }
      ],
      "payment_method": {
        "external_id": "seller222@example.com",
        "id": "pm_6691",
        "instructions": null,
        "name": null,
        "type": "paypal"
      },
      "refund_amount": 0,
      "status": "completed",
      "status_message": null,
      "subtotal": 0,
      "tax": 0,
      "total": 0,
      "txn_id": "ABCD1234"
    }
  ],
  "links": {
    "next": "/v1/orders?starting_after=or_120",
    "previous": "/v1/orders?ending_before=or_100"
  }
}

Response Schema

Status Code 200

Name Type Description
» data [Order] none
»» object string none
»» id string A unique identifier for the order
»» buyer_details object Information buyer provided in the checkout
»»» address object Information about buyer address
»»»» address_1 string First line of address
»»»» address_2 string¦null Second line of address
»»»» address_3 string¦null Third line of address
»»»» postal_code string¦null Postal code, zip code or postcode
»»» custom_questions [object] Buyer provided answers to custom questions in checkout
»»»» question string none
»»»» answer string¦null none
»»» email string Buyer email address
»»» name string Buyer full name
»»» phone string¦null Buyer phone number
»» created_at integer Order creation timestamp
»» currency object Information about order currency
»»» code string Currency used for purchase
»»» base_multiplier integer Base multiplier for conversions
»» event_summary object Short event summary this order was made for
»»» id string A unique identifier for the event
»»» name string Name of the event
»»» start_date object The start date for the event in various formats
»»»» date string ISO-8601 date for the start of the event
»»»» formatted string A formatted date string for the start of the event
»»»» iso string ISO-8601 date and time for the start of the event
»»»» time string Time for the start of the event
»»»» timezone string Timezone offset for the start of the event
»»»» unix integer Unix timestamp for the start of the event
»»» end_date object The end date for the event in various formats
»»»» date string ISO-8601 date for the end of the event
»»»» formatted string A formatted date string for the end of the event
»»»» iso string ISO-8601 date and time for the end of the event
»»»» time string Time for the end of the event
»»»» timezone string Timezone offset for the end of the event
»»»» unix integer Unix timestamp for the end of the event
»» issued_tickets [IssuedTicket]¦null Issued tickets for order
»»» object string none
»»» id string A unique identifier for the issued ticket
»»» barcode string Barcode text value
»»» barcode_url string URL to barcode image
»»» created_at integer Timestamp when issued ticket was created
»»» custom_questions [any] Buyer provided answers to custom questions in checkout
»»»» question string none
»»»» answer string¦null none
»»» description string none
»»» email string The order email address
»»» event_id string A unique identifier for the event
»»» full_name string¦null Full name of attendee
»»» first_name string¦null First name of attendee
»»» last_name string¦null Last name of attendee
»»» reservation string¦null Reservation from seating chart where applicable
»»» status string none
»»» updated_at integer Timestamp when issued ticket was last updated
»»» voided_at integer¦null Timestamp when issued ticket was voided
»»» order_id string A unique identifier for the order
»»» qr_code_url string URL to QR code image
»» line_items [object] none
»»» object string none
»»» id string A unique identifier for the basket item
»»» booking_fee integer Optional booking fee which is charged per ticket type to the customer and the funds are paid to you. We would recommend charging no more than 10% of the ticket price.
»»» description string Basket item description
»»» type string ticket is a purchased ticket, transaction_charge is a transaction fee to orders. This is charged once per order as opposed to ticket booking fees which are charged once per ticket. void means ticket was voided after the purchase, tax is sales tax eg. VAT, gift_card is discount or voucher applied and donation is for donating value
»»» total integer Total amount including tax for line item
»»» value integer Amount without tax
»»» quantity integer Amount of line item objects
»» payment_method PaymentMethod none
»»» external_id string¦null A unique identifier for the payment method
»»» id string¦null A unique identifier for internal payment methods
»»» type string The type of payment method
»»» name string¦null Name of the payment method
»»» instructions string¦null Instructions for the customer on how to pay. Used for offline payments.
»» refund_amount integer none
»» status string Possible states of the order
»» status_message string¦null Message associated with status.
»» subtotal integer Sum without tax
»» tax integer Tax sum
»» total integer Total amount including tax
»» txn_id string¦null A unique identifier for the transaction
» links object none
»» next string¦null none
»» previous string¦null none

Enumerated Values

Property Value
code gbp
code usd
code eur
code sgd
code aud
code brl
code cad
code czk
code dkk
code hkd
code huf
code ils
code jpy
code myr
code mxn
code nok
code nzd
code php
code pln
code rub
code sek
code chf
code twd
code thb
code try
status valid
status void
type ticket
type transaction_charge
type void
type tax
type gift_card
type donation
type stripe
type paypal
type offline
type operator
type no_cost
status completed
status pending
status cancelled

Status Code default

Name Type Description
» status integer Http status code
» error_code string Readable error code
» message string Detailed error message
» errors [object] Validation errors if POST request was sent. Otherwise not present.
»» field string Field name that failed validation
»» messages [string] Validation error message

Retrieve an order

Code samples

# You can also use wget
curl -X GET /v1/orders/{order_id} \
  -H 'Accept: application/json'

<?php

require 'vendor/autoload.php';

$headers = array(
    'Accept' => 'application/json',

    );

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('GET','/v1/orders/{order_id}', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json'
}

result = RestClient.get '/v1/orders/{order_id}',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/json'
}

r = requests.get('/v1/orders/{order_id}', params={

}, headers = headers)

print r.json()

GET /v1/orders/{order_id}

Returns an order belonging to the box office

Parameters

Name In Type Required Description
order_id path string true The unique identifier for the order

Example responses

200 Response

{
  "object": "order",
  "id": "or_737352",
  "buyer_details": {
    "address": {
      "address_1": "The Queen's Walk",
      "address_2": "Bishop's",
      "address_3": "London",
      "postal_code": "SE1 7PB"
    },
    "custom_questions": [],
    "email": "john@example.com",
    "name": "John Doe",
    "phone": "07123456789"
  },
  "created_at": 1587042691,
  "currency": {
    "base_multiplier": 100,
    "code": "gbp"
  },
  "event_summary": {
    "id": "ev_40980",
    "end_date": {
      "date": "2020-05-01",
      "formatted": "Fri 1 May 2020 10:30 PM",
      "iso": "2020-05-01T22:30:00+01:00",
      "time": "22:30",
      "timezone": "+01:00",
      "unix": 1588368600
    },
    "name": "Hackney Downs 2020 Tulip Festival",
    "start_date": {
      "date": "2020-05-01",
      "formatted": "Fri 1 May 2020 6:00 PM",
      "iso": "2020-05-01T18:00:00+01:00",
      "time": "18:00",
      "timezone": "+01:00",
      "unix": 1588352400
    }
  },
  "issued_tickets": [
    {
      "object": "issued_ticket",
      "id": "it_50198",
      "barcode": "al4R5",
      "barcode_url": "https://www.tickettailor.com/userfiles/cache/barcode/qr/attendee/50198/42bf63ef2a055b91a62f",
      "created_at": 1587042697,
      "custom_questions": [],
      "description": "Free ticket",
      "email": "john@example.com",
      "event_id": "ev_40980",
      "full_name": null,
      "first_name": null,
      "last_name": null,
      "status": "valid",
      "updated_at": 1587042697,
      "voided_at": null,
      "order_id": "or_737352",
      "qr_code_url": "https://www.tickettailor.com/userfiles/cache/barcode/st/attendee/50198/42bf63ef2a055b91a62f"
    },
    {
      "object": "issued_ticket",
      "id": "it_50199",
      "barcode": "dx2Fv",
      "barcode_url": "https://www.tickettailor.com/userfiles/cache/barcode/qr/attendee/50199/633d33a7ff6eba30a565",
      "created_at": 1587042697,
      "custom_questions": [],
      "description": "Free ticket",
      "email": "john@example.com",
      "event_id": "ev_40980",
      "full_name": null,
      "first_name": null,
      "last_name": null,
      "status": "valid",
      "updated_at": 1587042697,
      "voided_at": null,
      "order_id": "or_737352",
      "qr_code_url": "https://www.tickettailor.com/userfiles/cache/barcode/st/attendee/50199/633d33a7ff6eba30a565"
    }
  ],
  "line_items": [
    {
      "object": "line_item",
      "id": "li_1505167",
      "booking_fee": 0,
      "description": "Free ticket",
      "type": "ticket",
      "total": 0,
      "value": 0,
      "quantity": 2
    }
  ],
  "payment_method": {
    "external_id": "seller222@example.com",
    "id": "pm_6691",
    "instructions": null,
    "name": null,
    "type": "paypal"
  },
  "refund_amount": 0,
  "status": "completed",
  "status_message": null,
  "subtotal": 0,
  "tax": 0,
  "total": 0,
  "txn_id": "ABCD1234"
}

Response Schema

Status Code 200

Name Type Description
» object string none
» id string A unique identifier for the order
» buyer_details object Information buyer provided in the checkout
»» address object Information about buyer address
»»» address_1 string First line of address
»»» address_2 string¦null Second line of address
»»» address_3 string¦null Third line of address
»»» postal_code string¦null Postal code, zip code or postcode
»» custom_questions [object] Buyer provided answers to custom questions in checkout
»»» question string none
»»» answer string¦null none
»» email string Buyer email address
»» name string Buyer full name
»» phone string¦null Buyer phone number
» created_at integer Order creation timestamp
» currency object Information about order currency
»» code string Currency used for purchase
»» base_multiplier integer Base multiplier for conversions
» event_summary object Short event summary this order was made for
»» id string A unique identifier for the event
»» name string Name of the event
»» start_date object The start date for the event in various formats
»»» date string ISO-8601 date for the start of the event
»»» formatted string A formatted date string for the start of the event
»»» iso string ISO-8601 date and time for the start of the event
»»» time string Time for the start of the event
»»» timezone string Timezone offset for the start of the event
»»» unix integer Unix timestamp for the start of the event
»» end_date object The end date for the event in various formats
»»» date string ISO-8601 date for the end of the event
»»» formatted string A formatted date string for the end of the event
»»» iso string ISO-8601 date and time for the end of the event
»»» time string Time for the end of the event
»»» timezone string Timezone offset for the end of the event
»»» unix integer Unix timestamp for the end of the event
» issued_tickets [IssuedTicket]¦null Issued tickets for order
»» object string none
»» id string A unique identifier for the issued ticket
»» barcode string Barcode text value
»» barcode_url string URL to barcode image
»» created_at integer Timestamp when issued ticket was created
»» custom_questions [any] Buyer provided answers to custom questions in checkout
»»» question string none
»»» answer string¦null none
»» description string none
»» email string The order email address
»» event_id string A unique identifier for the event
»» full_name string¦null Full name of attendee
»» first_name string¦null First name of attendee
»» last_name string¦null Last name of attendee
»» reservation string¦null Reservation from seating chart where applicable
»» status string none
»» updated_at integer Timestamp when issued ticket was last updated
»» voided_at integer¦null Timestamp when issued ticket was voided
»» order_id string A unique identifier for the order
»» qr_code_url string URL to QR code image
» line_items [object] none
»» object string none
»» id string A unique identifier for the basket item
»» booking_fee integer Optional booking fee which is charged per ticket type to the customer and the funds are paid to you. We would recommend charging no more than 10% of the ticket price.
»» description string Basket item description
»» type string ticket is a purchased ticket, transaction_charge is a transaction fee to orders. This is charged once per order as opposed to ticket booking fees which are charged once per ticket. void means ticket was voided after the purchase, tax is sales tax eg. VAT, gift_card is discount or voucher applied and donation is for donating value
»» total integer Total amount including tax for line item
»» value integer Amount without tax
»» quantity integer Amount of line item objects
» payment_method PaymentMethod none
»» external_id string¦null A unique identifier for the payment method
»» id string¦null A unique identifier for internal payment methods
»» type string The type of payment method
»» name string¦null Name of the payment method
»» instructions string¦null Instructions for the customer on how to pay. Used for offline payments.
» refund_amount integer none
» status string Possible states of the order
» status_message string¦null Message associated with status.
» subtotal integer Sum without tax
» tax integer Tax sum
» total integer Total amount including tax
» txn_id string¦null A unique identifier for the transaction

Enumerated Values

Property Value
code gbp
code usd
code eur
code sgd
code aud
code brl
code cad
code czk
code dkk
code hkd
code huf
code ils
code jpy
code myr
code mxn
code nok
code nzd
code php
code pln
code rub
code sek
code chf
code twd
code thb
code try
status valid
status void
type ticket
type transaction_charge
type void
type tax
type gift_card
type donation
type stripe
type paypal
type offline
type operator
type no_cost
status completed
status pending
status cancelled

Status Code default

Name Type Description
» status integer Http status code
» error_code string Readable error code
» message string Detailed error message
» errors [object] Validation errors if POST request was sent. Otherwise not present.
»» field string Field name that failed validation
»» messages [string] Validation error message

Event

List all events

Code samples

# You can also use wget
curl -X GET /v1/events \
  -H 'Accept: application/json'

<?php

require 'vendor/autoload.php';

$headers = array(
    'Accept' => 'application/json',

    );

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('GET','/v1/events', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json'
}

result = RestClient.get '/v1/events',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/json'
}

r = requests.get('/v1/events', params={

}, headers = headers)

print r.json()

GET /v1/events

Returns a list of events belonging to the box office

Parameters

Name In Type Required Description
starting_after query string false A paginator cursor value of object id (e.g. "or_123") that defines place in the list. To fetch next page of results, use the last object id from the current result list, e.g. starting_after=or_223.
ending_before query string false A paginator cursor value of object id (e.g. "or_123") that defines place in the list. To fetch previous page of results, use the first object id from the current result list, e.g. ending_before=or_123.
limit query string false The number of items to retrieve

Example responses

200 Response

{
  "data": [
    {
      "object": "event",
      "id": "ev_1",
      "access_code": null,
      "call_to_action": "Buy tickets / Join the guestlist",
      "created_at": 1583771084,
      "currency": "gbp",
      "description": null,
      "end": {
        "date": "2020-05-01",
        "formatted": "Fri 1 May 2020 10:30 PM",
        "iso": "2020-05-01T22:30:00+01:00",
        "time": "22:30",
        "timezone": "+01:00",
        "unix": 1588368600
      },
      "images": {
        "header": "https://d37ecpm5it19bz.cloudfront.net/c_crop,dpr_1.0,h_1921,q_100,w_1922,x_479,y_0/c_scale,g_center,h_326,q_85,w_1024/v1/stitching/userfiles/acfi9eknr1vur6wguu5s.jpg",
        "thumbnail": "https://d37ecpm5it19bz.cloudfront.net/c_crop,dpr_1.0,h_1921,q_100,w_1922,x_479,y_0/c_scale,h_108,q_85,w_108/v1/stitching/userfiles/acfi9eknr1vur6wguu5s.jpg"
      },
      "name": "Hackney Downs 2020 Tulip Festival",
      "online_event": "false",
      "payment_methods": [
        {
          "external_id": null,
          "id": "pm_6687",
          "instructions": "Pay when you arrive to festival",
          "name": "Pay on the door",
          "type": "offline"
        },
        {
          "external_id": "seller222@example.com",
          "id": "pm_6691",
          "instructions": null,
          "name": null,
          "type": "paypal"
        }
      ],
      "private": "false",
      "start": {
        "date": "2020-05-01",
        "formatted": "Fri 1 May 2020 6:00 PM",
        "iso": "2020-05-01T18:00:00+01:00",
        "time": "18:00",
        "timezone": "+01:00",
        "unix": 1588352400
      },
      "status": "published",
      "ticket_groups": [
        {
          "id": "tg_21099",
          "max_per_order": null,
          "name": "April 20th",
          "sort_order": 50050,
          "ticket_ids": [
            "tt_230625",
            "tt_230626"
          ]
        },
        {
          "id": "tg_21100",
          "max_per_order": null,
          "name": "April 21st",
          "sort_order": 50100,
          "ticket_ids": [
            "tt_230631",
            "tt_230632"
          ]
        }
      ],
      "ticket_types": [
        {
          "object": "ticket_type",
          "id": "tt_230625",
          "access_code": null,
          "booking_fee": 0,
          "description": null,
          "group_id": "tg_21099",
          "max_per_order": 100,
          "min_per_order": 1,
          "name": "4.20 Adult (13-61) - Presale",
          "price": 800,
          "status": "hidden",
          "sort_order": 50050,
          "type": "paid",
          "quantity": 10000
        },
        {
          "object": "ticket_type",
          "id": "tt_230626",
          "access_code": null,
          "booking_fee": 0,
          "description": null,
          "group_id": "tg_21099",
          "max_per_order": 100,
          "min_per_order": 1,
          "name": "4.20 Senior (62+) - Presale",
          "price": 600,
          "status": "on_sale",
          "sort_order": 50051,
          "type": "paid",
          "quantity": 10000
        },
        {
          "object": "ticket_type",
          "id": "tt_230631",
          "access_code": null,
          "booking_fee": 0,
          "description": null,
          "group_id": "tg_21100",
          "max_per_order": 100,
          "min_per_order": 1,
          "name": "4.21 Adult (13-61) - Presale",
          "price": 800,
          "status": "on_sale",
          "sort_order": 50100,
          "type": "paid",
          "quantity": 10000
        },
        {
          "object": "ticket_type",
          "id": "tt_230632",
          "access_code": null,
          "booking_fee": 0,
          "description": null,
          "group_id": "tg_21100",
          "max_per_order": 100,
          "min_per_order": 1,
          "name": "4.21 Senior (62+) - Presale",
          "price": 600,
          "status": "on_sale",
          "sort_order": 50101,
          "type": "paid",
          "quantity": 10000
        }
      ],
      "tickets_available": "true",
      "timezone": "Europe/London",
      "total_issued_tickets": 2,
      "total_orders": 1,
      "url": "https://www.tickettailor.com/events/flowerfestival/40980",
      "venue": {
        "name": null,
        "postal_code": null
      }
    }
  ],
  "links": {
    "next": "/v1/events?starting_after=ev_123",
    "previous": "/v1/events?ending_before=ev_100"
  }
}

Response Schema

Status Code 200

Name Type Description
» data [Event] none
»» object string none
»» id string A unique identifier for the event
»» access_code string¦null Code to access a protected event
»» call_to_action string Call to action text used on the event page
»» created_at integer none
»» currency string Information about the currency the event is configured to use
»» description string¦null Description of the event
»» end object none
»»» date string ISO-8601 date for the end of the event
»»» formatted string A formatted date string for the end of the event
»»» iso string ISO-8601 date and time for the end of the event
»»» time string Time of the end of the event
»»» timezone string Timezone offset for the end of the event
»»» unix integer Unix timestamp for for the end of the event
»» event_series_id string Recurring events are grouped by an event_series_id
»» images object Images that have been uploaded to this event
»»» header string Image URL of the header image used on your event page
»»» thumbnail string Image URL of the thumbnail used on your event page
»» name string Name of the event
»» online_event string Returns whether or not the event is online
»» payment_methods [any] none
»»» external_id string A unique identifier for the payment method
»»» id string A unique identifier for internal payment methods
»»» type string The type of payment method
»»» name string Name of the payment method
»»» instructions string Instructions for the customer on how to pay. Used for offline payments.
»» private string Returns whether or not the event is private
»» start object none
»»» date string ISO-8601 date for the start of the event
»»» formatted string A formatted date string for the start of the event
»»» iso string ISO-8601 date and time for the start of the event
»»» time string Time of the start of the event
»»» timezone string Timezone offset for the start of the event
»»» unix integer Unix timestamp for the start of the event
»» status string Status of the event
»» ticket_groups [any] none
»»» id string A unique ticket group identifier
»»» max_per_order integer Maximum number of ticket types that this group can sell
»»» name string Name of the ticket types group
»»» sort_order integer Sort index of the group in the UI
»»» ticket_ids [any] Unique identifiers of ticket type ids that belong to this group
»»»» id string none
»» ticket_types [TicketType] none
»»» object string none
»»» id string A unique identifier for the event
»»» access_code string¦null Code to access a hidden ticket
»»» booking_fee integer Optional booking fee which is charged per ticket type to the customer and the funds are paid to you. We would recommend charging no more than 10% of the ticket price.
»»» description string¦null Description of the ticket type
»»» group_id string¦null ID of the group this ticket type belongs to
»»» max_per_order integer Maximum number of ticket types you can select per order
»»» min_per_order integer Minimum number of ticket types you can select per order
»»» name string Name of the ticket type
»»» price integer Cost of the ticket type
»»» status string Status of the ticket type
»»» sort_order integer Sort index of ticket type in the UI
»»» type string none
»»» quantity integer Number available for purchase
»» tickets_available string Are there any ticket types available?
»» timezone string TZ format timezone string
»» total_issued_tickets integer Total number of issued tickets
»» total_orders integer Total number of orders
»» url string Event page URL
»» venue object none
»»» name string Name of the venue
»»» postal_code string Postal code of the venue
» links object none
»» next string¦null none
»» previous string¦null none

Enumerated Values

Property Value
currency gbp
currency usd
currency eur
currency sgd
currency aud
currency brl
currency cad
currency czk
currency dkk
currency hkd
currency huf
currency ils
currency jpy
currency myr
currency mxn
currency nok
currency nzd
currency php
currency pln
currency rub
currency sek
currency chf
currency twd
currency thb
currency try
online_event true
online_event false
type stripe
type paypal
type offline
private true
private false
status draft
status published
status off_sale_temporarily
status close_sales
status on_sale
status sold_out
status unavailable
status hidden
status admin_only
status locked
type paid
type free
tickets_available true
tickets_available false

Status Code default

Name Type Description
» status integer Http status code
» error_code string Readable error code
» message string Detailed error message
» errors [object] Validation errors if POST request was sent. Otherwise not present.
»» field string Field name that failed validation
»» messages [string] Validation error message

Retrieve an event

Code samples

# You can also use wget
curl -X GET /v1/events/{event_id} \
  -H 'Accept: application/json'

<?php

require 'vendor/autoload.php';

$headers = array(
    'Accept' => 'application/json',

    );

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('GET','/v1/events/{event_id}', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json'
}

result = RestClient.get '/v1/events/{event_id}',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/json'
}

r = requests.get('/v1/events/{event_id}', params={

}, headers = headers)

print r.json()

GET /v1/events/{event_id}

Returns an event belonging to the box office

Parameters

Name In Type Required Description
event_id path string true The unique identifier for the event

Example responses

200 Response

{
  "object": "event",
  "id": "ev_1",
  "access_code": null,
  "call_to_action": "Buy tickets / Join the guestlist",
  "created_at": 1583771084,
  "currency": "gbp",
  "description": null,
  "end": {
    "date": "2020-05-01",
    "formatted": "Fri 1 May 2020 10:30 PM",
    "iso": "2020-05-01T22:30:00+01:00",
    "time": "22:30",
    "timezone": "+01:00",
    "unix": 1588368600
  },
  "images": {
    "header": "https://d37ecpm5it19bz.cloudfront.net/c_crop,dpr_1.0,h_1921,q_100,w_1922,x_479,y_0/c_scale,g_center,h_326,q_85,w_1024/v1/stitching/userfiles/acfi9eknr1vur6wguu5s.jpg",
    "thumbnail": "https://d37ecpm5it19bz.cloudfront.net/c_crop,dpr_1.0,h_1921,q_100,w_1922,x_479,y_0/c_scale,h_108,q_85,w_108/v1/stitching/userfiles/acfi9eknr1vur6wguu5s.jpg"
  },
  "name": "Hackney Downs 2020 Tulip Festival",
  "online_event": "false",
  "payment_methods": [
    {
      "external_id": null,
      "id": "pm_6687",
      "instructions": "Pay when you arrive to festival",
      "name": "Pay on the door",
      "type": "offline"
    },
    {
      "external_id": "seller222@example.com",
      "id": "pm_6691",
      "instructions": null,
      "name": null,
      "type": "paypal"
    }
  ],
  "private": "false",
  "start": {
    "date": "2020-05-01",
    "formatted": "Fri 1 May 2020 6:00 PM",
    "iso": "2020-05-01T18:00:00+01:00",
    "time": "18:00",
    "timezone": "+01:00",
    "unix": 1588352400
  },
  "status": "published",
  "ticket_groups": [
    {
      "id": "tg_21099",
      "max_per_order": null,
      "name": "April 20th",
      "sort_order": 50050,
      "ticket_ids": [
        "tt_230625",
        "tt_230626"
      ]
    },
    {
      "id": "tg_21100",
      "max_per_order": null,
      "name": "April 21st",
      "sort_order": 50100,
      "ticket_ids": [
        "tt_230631",
        "tt_230632"
      ]
    }
  ],
  "ticket_types": [
    {
      "object": "ticket_type",
      "id": "tt_230625",
      "access_code": null,
      "booking_fee": 0,
      "description": null,
      "group_id": "tg_21099",
      "max_per_order": 100,
      "min_per_order": 1,
      "name": "4.20 Adult (13-61) - Presale",
      "price": 800,
      "status": "hidden",
      "sort_order": 50050,
      "type": "paid",
      "quantity": 10000
    },
    {
      "object": "ticket_type",
      "id": "tt_230626",
      "access_code": null,
      "booking_fee": 0,
      "description": null,
      "group_id": "tg_21099",
      "max_per_order": 100,
      "min_per_order": 1,
      "name": "4.20 Senior (62+) - Presale",
      "price": 600,
      "status": "on_sale",
      "sort_order": 50051,
      "type": "paid",
      "quantity": 10000
    },
    {
      "object": "ticket_type",
      "id": "tt_230631",
      "access_code": null,
      "booking_fee": 0,
      "description": null,
      "group_id": "tg_21100",
      "max_per_order": 100,
      "min_per_order": 1,
      "name": "4.21 Adult (13-61) - Presale",
      "price": 800,
      "status": "on_sale",
      "sort_order": 50100,
      "type": "paid",
      "quantity": 10000
    },
    {
      "object": "ticket_type",
      "id": "tt_230632",
      "access_code": null,
      "booking_fee": 0,
      "description": null,
      "group_id": "tg_21100",
      "max_per_order": 100,
      "min_per_order": 1,
      "name": "4.21 Senior (62+) - Presale",
      "price": 600,
      "status": "on_sale",
      "sort_order": 50101,
      "type": "paid",
      "quantity": 10000
    }
  ],
  "tickets_available": "true",
  "timezone": "Europe/London",
  "total_issued_tickets": 2,
  "total_orders": 1,
  "url": "https://www.tickettailor.com/events/flowerfestival/40980",
  "venue": {
    "name": null,
    "postal_code": null
  }
}

Response Schema

Status Code 200

Name Type Description
» object string none
» id string A unique identifier for the event
» access_code string¦null Code to access a protected event
» call_to_action string Call to action text used on the event page
» created_at integer none
» currency string Information about the currency the event is configured to use
» description string¦null Description of the event
» end object none
»» date string ISO-8601 date for the end of the event
»» formatted string A formatted date string for the end of the event
»» iso string ISO-8601 date and time for the end of the event
»» time string Time of the end of the event
»» timezone string Timezone offset for the end of the event
»» unix integer Unix timestamp for for the end of the event
» event_series_id string Recurring events are grouped by an event_series_id
» images object Images that have been uploaded to this event
»» header string Image URL of the header image used on your event page
»» thumbnail string Image URL of the thumbnail used on your event page
» name string Name of the event
» online_event string Returns whether or not the event is online
» payment_methods [any] none
»» external_id string A unique identifier for the payment method
»» id string A unique identifier for internal payment methods
»» type string The type of payment method
»» name string Name of the payment method
»» instructions string Instructions for the customer on how to pay. Used for offline payments.
» private string Returns whether or not the event is private
» start object none
»» date string ISO-8601 date for the start of the event
»» formatted string A formatted date string for the start of the event
»» iso string ISO-8601 date and time for the start of the event
»» time string Time of the start of the event
»» timezone string Timezone offset for the start of the event
»» unix integer Unix timestamp for the start of the event
» status string Status of the event
» ticket_groups [any] none
»» id string A unique ticket group identifier
»» max_per_order integer Maximum number of ticket types that this group can sell
»» name string Name of the ticket types group
»» sort_order integer Sort index of the group in the UI
»» ticket_ids [any] Unique identifiers of ticket type ids that belong to this group
»»» id string none
» ticket_types [TicketType] none
»» object string none
»» id string A unique identifier for the event
»» access_code string¦null Code to access a hidden ticket
»» booking_fee integer Optional booking fee which is charged per ticket type to the customer and the funds are paid to you. We would recommend charging no more than 10% of the ticket price.
»» description string¦null Description of the ticket type
»» group_id string¦null ID of the group this ticket type belongs to
»» max_per_order integer Maximum number of ticket types you can select per order
»» min_per_order integer Minimum number of ticket types you can select per order
»» name string Name of the ticket type
»» price integer Cost of the ticket type
»» status string Status of the ticket type
»» sort_order integer Sort index of ticket type in the UI
»» type string none
»» quantity integer Number available for purchase
» tickets_available string Are there any ticket types available?
» timezone string TZ format timezone string
» total_issued_tickets integer Total number of issued tickets
» total_orders integer Total number of orders
» url string Event page URL
» venue object none
»» name string Name of the venue
»» postal_code string Postal code of the venue

Enumerated Values

Property Value
currency gbp
currency usd
currency eur
currency sgd
currency aud
currency brl
currency cad
currency czk
currency dkk
currency hkd
currency huf
currency ils
currency jpy
currency myr
currency mxn
currency nok
currency nzd
currency php
currency pln
currency rub
currency sek
currency chf
currency twd
currency thb
currency try
online_event true
online_event false
type stripe
type paypal
type offline
private true
private false
status draft
status published
status off_sale_temporarily
status close_sales
status on_sale
status sold_out
status unavailable
status hidden
status admin_only
status locked
type paid
type free
tickets_available true
tickets_available false

Status Code default

Name Type Description
» status integer Http status code
» error_code string Readable error code
» message string Detailed error message
» errors [object] Validation errors if POST request was sent. Otherwise not present.
»» field string Field name that failed validation
»» messages [string] Validation error message

Issued ticket

List all issued tickets

Code samples

# You can also use wget
curl -X GET /v1/issued_tickets \
  -H 'Accept: application/json'

<?php

require 'vendor/autoload.php';

$headers = array(
    'Accept' => 'application/json',

    );

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('GET','/v1/issued_tickets', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json'
}

result = RestClient.get '/v1/issued_tickets',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/json'
}

r = requests.get('/v1/issued_tickets', params={

}, headers = headers)

print r.json()

GET /v1/issued_tickets

Returns all issued tickets

Parameters

Name In Type Required Description
event_id query integer false The numeric ID of the event to filter issued tickets for
order_id query integer false The numeric ID of the order to filter issued tickets for
barcode query string false The barcode of the issued ticket (event_id must also be specified)
created_at query integer false Unix timestamp filter that returns items with matched created_at value.
created_at.gt query integer false Unix timestamp filter that returns items with created_at greater than given value.
created_at.gte query integer false Unix timestamp filter that returns items with created_at greater than or equal given value.
created_at.lt query integer false Unix timestamp filter that returns items with created_at less than given value.
created_at.lte query integer false Unix timestamp filter that returns items with created_at less than or equal given value.
starting_after query string false A paginator cursor value of object id (e.g. "or_123") that defines place in the list. To fetch next page of results, use the last object id from the current result list, e.g. starting_after=or_223.
ending_before query string false A paginator cursor value of object id (e.g. "or_123") that defines place in the list. To fetch previous page of results, use the first object id from the current result list, e.g. ending_before=or_123.
limit query string false The number of items to retrieve

Example responses

200 Response

{
  "data": [
    {
      "object": "issued_ticket",
      "id": "it_50198",
      "barcode": "al4R5",
      "barcode_url": "https://www.tickettailor.com/userfiles/cache/barcode/qr/attendee/50198/42bf63ef2a055b91a62f",
      "created_at": 1587042697,
      "custom_questions": [],
      "description": "Free ticket",
      "email": "john@example.com",
      "event_id": "ev_40980",
      "full_name": null,
      "first_name": null,
      "last_name": null,
      "status": "valid",
      "updated_at": 1587042697,
      "voided_at": null,
      "order_id": "or_737352",
      "qr_code_url": "https://www.tickettailor.com/userfiles/cache/barcode/st/attendee/50198/42bf63ef2a055b91a62f"
    }
  ],
  "links": {
    "next": "/v1/events/{event_id}/issued_tickets?starting_after=it_120",
    "previous": "/v1/events/{event_id}/issued_tickets?ending_before=it_100"
  }
}

Response Schema

Status Code 200

Name Type Description
» data [IssuedTicket] none
»» object string none
»» id string A unique identifier for the issued ticket
»» barcode string Barcode text value
»» barcode_url string URL to barcode image
»» created_at integer Timestamp when issued ticket was created
»» custom_questions [any] Buyer provided answers to custom questions in checkout
»»» question string none
»»» answer string¦null none
»» description string none
»» email string The order email address
»» event_id string A unique identifier for the event
»» full_name string¦null Full name of attendee
»» first_name string¦null First name of attendee
»» last_name string¦null Last name of attendee
»» reservation string¦null Reservation from seating chart where applicable
»» status string none
»» updated_at integer Timestamp when issued ticket was last updated
»» voided_at integer¦null Timestamp when issued ticket was voided
»» order_id string A unique identifier for the order
»» qr_code_url string URL to QR code image
» links object none
»» next string¦null none
»» previous string¦null none

Enumerated Values

Property Value
status valid
status void

Status Code default

Name Type Description
» status integer Http status code
» error_code string Readable error code
» message string Detailed error message
» errors [object] Validation errors if POST request was sent. Otherwise not present.
»» field string Field name that failed validation
»» messages [string] Validation error message

Retrieve an issued ticket

Code samples

# You can also use wget
curl -X GET /v1/issued_tickets/{issued_ticket_id} \
  -H 'Accept: application/json'

<?php

require 'vendor/autoload.php';

$headers = array(
    'Accept' => 'application/json',

    );

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('GET','/v1/issued_tickets/{issued_ticket_id}', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json'
}

result = RestClient.get '/v1/issued_tickets/{issued_ticket_id}',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/json'
}

r = requests.get('/v1/issued_tickets/{issued_ticket_id}', params={

}, headers = headers)

print r.json()

GET /v1/issued_tickets/{issued_ticket_id}

Returns an issued ticket

Parameters

Name In Type Required Description
issued_ticket_id path string true The unique identifier for the issued ticket

Example responses

200 Response

{
  "object": "issued_ticket",
  "id": "it_50198",
  "barcode": "al4R5",
  "barcode_url": "https://www.tickettailor.com/userfiles/cache/barcode/qr/attendee/50198/42bf63ef2a055b91a62f",
  "created_at": 1587042697,
  "custom_questions": [],
  "description": "Free ticket",
  "email": "john@example.com",
  "event_id": "ev_40980",
  "full_name": null,
  "first_name": null,
  "last_name": null,
  "status": "valid",
  "updated_at": 1587042697,
  "voided_at": null,
  "order_id": "or_737352",
  "qr_code_url": "https://www.tickettailor.com/userfiles/cache/barcode/st/attendee/50198/42bf63ef2a055b91a62f"
}

Response Schema

Status Code 200

Name Type Description
» object string none
» id string A unique identifier for the issued ticket
» barcode string Barcode text value
» barcode_url string URL to barcode image
» created_at integer Timestamp when issued ticket was created
» custom_questions [any] Buyer provided answers to custom questions in checkout
»» question string none
»» answer string¦null none
» description string none
» email string The order email address
» event_id string A unique identifier for the event
» full_name string¦null Full name of attendee
» first_name string¦null First name of attendee
» last_name string¦null Last name of attendee
» reservation string¦null Reservation from seating chart where applicable
» status string none
» updated_at integer Timestamp when issued ticket was last updated
» voided_at integer¦null Timestamp when issued ticket was voided
» order_id string A unique identifier for the order
» qr_code_url string URL to QR code image

Enumerated Values

Property Value
status valid
status void

Status Code default

Name Type Description
» status integer Http status code
» error_code string Readable error code
» message string Detailed error message
» errors [object] Validation errors if POST request was sent. Otherwise not present.
»» field string Field name that failed validation
»» messages [string] Validation error message

Ping

Ping server

Code samples

# You can also use wget
curl -X GET /v1/ping \
  -H 'Accept: application/json'

<?php

require 'vendor/autoload.php';

$headers = array(
    'Accept' => 'application/json',

    );

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('GET','/v1/ping', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json'
}

result = RestClient.get '/v1/ping',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/json'
}

r = requests.get('/v1/ping', params={

}, headers = headers)

print r.json()

GET /v1/ping

Checks if server is responsive

Example responses

200 Response

{
  "version": "pong"
}

Response Schema

Status Code 200

Name Type Description
» version string none

Status Code default

Name Type Description
» status integer Http status code
» error_code string Readable error code
» message string Detailed error message
» errors [object] Validation errors if POST request was sent. Otherwise not present.
»» field string Field name that failed validation
»» messages [string] Validation error message