Introduction
Welcome to the 1Ticket API!
Authentication
1Ticket uses API keys to allow access to the API. To request an API key, email the support team at support@1ticket.com.
1Ticket expects for the API key to be included in all API requests to the server in a header that looks like the following:
x-api-key: YOUR_API_KEY
PDF Management
The pdfs API is a collection of tools to process, manipulate and/or extract pertinent information from event tickets distributed in PDF format.
POST /v1/decoder
import requests
response = requests.post(
'https://apis.dti1ticketapps.com/pdfs/v1/decoder/',
headers={
'x-api-key': 'YOUR_API_KEY'
},
json={
'url': 'https://www.example.com/path/to/your/ticket_file.pdf'
}
)
curl -X POST \
https://apis.dti1ticketapps.com/pdfs/v1/decoder/ \
-H 'x-api-key: YOUR_API_KEY' \
-d '{
"url": "https://www.example.com/path/to/your/ticket_file.pdf",
}'
The following an example of a normal (non-legacy) output:
{
"tickets": [
{
"page_number": 1, // Page number in the PDF for this ticket
"producer": "Ticketmaster", // Ticket's producer
"buyer_id": "ABC123", // Producer's ID for the buyer
"buyer_name": "John Doe", // Buyer's name
"buyer_type": "A1B", // Type of buyer as specified by producer
"order_date": "YYYY-MM-DDTHH:MM:SS", // Datetime the ticket was purchased
"order_id": "ABCD - 123456", // Order ID specified by producer
"event_name": "Generic Event Spectacular", // Name of the event
"event_date": "YYYY-MM-DDTHH:MM:SS", // Datetime of the event
"venue_name": "Awesome Venue", // Name of the venue
"section": "100", // Section location of ticket
"row": "A", // Row location of ticket
"seat": "1", // Seat location of ticket
"portal": "Gate A", // Best entrance for ticket location
"disclosures": [ // Any disclosures specified on ticket
{
"id": 27, // Internal ID for this disclosure string
"string": "lim.vu", // Raw disclosure found in ticket
"normalized": "Limited View" // Normalized version of disclosure
}
],
"barcodes": [ // Any barcode data found on ticket
{
"data": "ABC123ABC123", // Decoded barcode data
"type": "ITF" // Type of barcode
}
]
}
]
}
The following is an example of an output if given the "async" option:
{
"job_id": "db3d0f36-c57f-45f6-9fc6-8cc1f782352d"
}
Description
The decoder function enables the extraction of ticket information (e.g. seat number, venue, and date) from an event ticket in PDF format.
HTTP Request
POST https://apis.dti1ticketapps.com/pdfs/v1/decoder/
JSON Body
Required
| Key | Description |
|---|---|
| url | URL of the ticket PDF file to decode. |
Optional
| Key | Type | Default | Effect |
|---|---|---|---|
| async | bool | false | If true: Immediately return with a job ID to be used in Job Status endpoint. |
Possible Return Payload Values
The following is a glossary of possible return values for various keys in the return payload.
Barcode Type
| Type | Description |
|---|---|
| AZTEC | Aztec 2D barcode format |
| CODABAR | CODABAR 1D format. |
| CODE_128 | Code 128 1D format. |
| CODE_39 | Code 39 1D format. |
| CODE_93 | Code 93 1D format. |
| DATA_MATRIX | Data Matrix 2D barcode format. |
| EAN_13 | EAN-13 1D format. |
| EAN_8 | EAN-8 1D format. |
| ITF | ITF (Interleaved Two of Five) 1D format. |
| MAXICODE | MaxiCode 2D barcode format. |
| PDF_417 | PDF417 format. |
| QR_CODE | QR Code 2D barcode format. |
| RSS_14 | RSS 14 |
| RSS_EXPANDED | RSS EXPANDED |
| UPC_A | UPC-A 1D format. |
| UPC_E | UPC-E 1D format. |
| UPC_EAN_EXTENSION | UPC/EAN extension format. |
GET /v1/decoder/{job_id}
import requests
response = requests.get(
'https://apis.dti1ticketapps.com/pdfs/v1/decoder/{job_id}/',
headers={
'x-api-key': 'YOUR_API_KEY'
}
)
curl -X GET \
https://apis.dti1ticketapps.com/pdfs/v1/decoder/{job_id}/ \
-H 'x-api-key: YOUR_API_KEY'
The above command returns JSON structured like this:
{
"job_id": "{job_id}",
"status": "SUCCEEDED",
"tickets": [
{
"page_number": 1, // Page number in the PDF for this ticket
"producer": "Ticketmaster", // Ticket's producer
"buyer_id": "ABC123", // Producer's ID for the buyer
"buyer_name": "John Doe", // Buyer's name
"buyer_type": "A1B", // Type of buyer as specified by producer
"order_date": "YYYY-MM-DDTHH:MM:SS", // Datetime the ticket was purchased
"order_id": "ABCD - 123456", // Order ID specified by producer
"event_name": "Generic Event Spectacular", // Name of the event
"event_date": "YYYY-MM-DDTHH:MM:SS", // Datetime of the event
"venue_name": "Awesome Venue", // Name of the venue
"section": "100", // Section location of ticket
"row": "A", // Row location of ticket
"seat": "1", // Seat location of ticket
"portal": "Gate A", // Best entrance for ticket location
"disclosures": [ // Any disclosures specified on ticket
{
"id": 27, // Internal ID for this disclosure string
"string": "lim.vu", // Raw disclosure found in ticket
"normalized": "Limited View" // Normalized version of disclosure
}
],
"barcodes": [ // Any barcode data found on ticket
{
"data": "ABC123ABC123", // Decoded barcode data
"type": "ITF" // Type of barcode
}
]
}
]
}
Description
Get the execution status of a decoder job run with the async option.
HTTP Request
GET https://apis.dti1ticketapps.com/pdfs/v1/decoder/{job_id}/
URL Path Parameters
| Parameter | Description |
|---|---|
| job_id | The ID of the job of interest. |
POST /v1/splitter
import requests
response = requests.post(
'https://apis.dti1ticketapps.com/pdfs/v1/splitter/',
headers={
'x-api-key': 'YOUR_API_KEY'
},
json={
'url': 'https://www.example.com/path/to/your/ticket_file.pdf'
}
)
curl -X POST \
https://apis.dti1ticketapps.com/pdfs/v1/splitter/ \
-H 'x-api-key: YOUR_API_KEY' \
-d '{
"url": "https://www.example.com/path/to/your/ticket_file.pdf",
}'
Output:
{
"job_id": "{job_id}"
}
Description
The splitter function is able to split a multi-page PDF file, generally consisting of multiple PDF event tickets, into individual PDFs/tickets.
This request returns immediately with a job ID that you need to use to poll with using the GET request below.
HTTP Request
POST https://apis.dti1ticketapps.com/pdfs/v1/splitter/
JSON Body
Required
| Key | Description |
|---|---|
| url | URL of the ticket PDF file to split. |
GET /v1/splitter/{job_id}
import requests
response = requests.get(
'https://apis.dti1ticketapps.com/pdfs/v1/splitter/{job_id}/',
headers={
'x-api-key': 'YOUR_API_KEY'
}
)
curl -X GET \
https://apis.dti1ticketapps.com/pdfs/v1/splitter/{job_id}/ \
-H 'x-api-key: YOUR_API_KEY'
Output:
{
"job_id": "{job_id}",
"status": "SUCCEEDED",
"pdf_urls": ["https://www.example.com/path/to/your/ticket_page_1.pdf", "https://www.example.com/path/to/your/ticket_page_2.pdf", "etc"]
}
Description
Get the status of a splitter job. This is a long poll request that will wait about 25 seconds for the job to complete if it is still status "RUNNING" before returning to you. If the status is "SUCCEEDED" or "FAILED" it will return immediately.
The URLs you get in the response are S3 presigned URLs and expire after 1 hour, so you'll have to download them all if you wish to persist them.
HTTP Request
GET https://apis.dti1ticketapps.com/pdfs/v1/splitter/{job_id}/
URL Path Parameters
| Parameter | Description |
|---|---|
| job_id | The ID of the job of interest. |
POST /v1/merger
import requests
response = requests.post(
'https://apis.dti1ticketapps.com/pdfs/v1/merger/',
headers={
'x-api-key': 'YOUR_API_KEY'
},
json={
'urls': ['https://www.example.com/path/to/your/ticket_page_1.pdf', 'https://www.example.com/path/to/your/ticket_page_2.pdf', 'etc']
}
)
curl -X POST \
https://apis.dti1ticketapps.com/pdfs/v1/merger/ \
-H 'x-api-key: YOUR_API_KEY' \
-d '{
"urls": ["https://www.example.com/path/to/your/ticket_page_1.pdf", "https://www.example.com/path/to/your/ticket_page_2.pdf", "etc"]
}'
Output:
{
"job_id": "{job_id}",
"status": "SUCCEEDED",
"url": "https://{s3_presigned_url_to_merged_pdf}",
"error": ""
}
Description
A reverse function from the splitter job, the merger function is able to merge PDF event tickets into single PDF file.
If the job is unable to complete within 25 seconds, you will receive a response with status "RUNNING" and will have to poll for the result (see request below).
If the status is "FAILED", there will be an error message in the "error" field.
The URL you get in the response is an S3 presigned URL and expires after 1 hour, so you'll have to download it if you need it to persist.
HTTP Request
POST https://apis.dti1ticketapps.com/pdfs/v1/merger/
JSON Body
Required
| Key | Description |
|---|---|
| urls | List of URLs of ticket PDF files to merge. |
GET /v1/merger/{job_id}
import requests
response = requests.get(
'https://apis.dti1ticketapps.com/pdfs/v1/merger/{job_id}/',
headers={
'x-api-key': 'YOUR_API_KEY'
}
)
curl -X GET \
https://apis.dti1ticketapps.com/pdfs/v1/merger/{job_id}/ \
-H 'x-api-key: YOUR_API_KEY'
Output:
{
"job_id": "{job_id}",
"status": "SUCCEEDED",
"pdf_urls": "https://{s3_presigned_url_to_merged_pdf}",
"error": ""
}
Description
Get the status of a merger job. This is a long poll request that will wait about 25 seconds for the job to complete if it is still status "RUNNING" before returning to you. If the status is "SUCCEEDED" or "FAILED" it will return immediately.
HTTP Request
GET https://apis.dti1ticketapps.com/pdfs/v1/merger/{job_id}/
URL Path Parameters
| Parameter | Description |
|---|---|
| job_id | The ID of the job of interest. |
Broadcast Inventory Management
Marketplace Deletes
MPDeleter is a 1Ticket service that deletes a listing from multiple marketplaces.
DELETE /mpdeleter/v2
import requests
import json
payload = {
'user_id': 'YOUR 1TICKET USERID',
'listing_id': 'POS Listing ID',
'marketplaces': ['list', 'of', 'marketplaces', 'to', 'delete', 'from'],
'inverse': False
}
response = requests.delete(
'https://apis.dti1ticket.com/mpdeleter/v2',
headers={
'Authorization': 'YOUR_API_KEY',
'Content-Type': 'application/json'
},
data=json.dumps(payload)
)
curl -X DELETE \
https://apis.dti1ticket.com/mpdeleter/v2 \
-H 'Authorization: YOUR_API_KEY' \
-H 'Content-Type': 'application/json' \
-d '{
'user_id': 'YOUR 1TICKET USERID',
'listing_id': 'POS Listing ID',
'marketplaces': ['list', 'of', 'marketplaces', 'to', 'delete', 'from'],
'inverse': False
}'
The following an example of a successful output:
{
"statusCode": 200,
"results": [
{
"marketplace": "TicketMonster",
"status": "fail",
"message": "Market place TicketMonster not supported.",
"statusCode": 500,
"detail": "Market place TicketMonster not supported."
},
{
"marketplace": "Skybox",
"status": "fail",
"message": "Market place Skybox not supported.",
"statusCode": 500,
"detail": "Market place Skybox not supported."
},
{
"marketplace": "SeatSmart",
"status": "fail",
"message": "Market place SeatSmart not supported.",
"statusCode": 500,
"detail": "Market place SeatSmart not supported."
},
{
"marketplace": "FanXchange",
"status": "fail",
"message": "Market place FanXchange not supported.",
"statusCode": 500,
"detail": "Market place FanXchange not supported."
},
{
"statusCode": 404,
"marketplaceid": "25",
"status": "fail",
"detail": "Not Found",
"marketplace": "Gametime"
},
{
"statusCode": 200,
"marketplaceid": "41",
"status": "success",
"detail": "deleted",
"marketplace": "SeatGeek"
},
{
"statusCode": 200,
"marketplaceid": "4",
"status": "success",
"detail": "Successfully deleted listing.",
"marketplace": "Vivid"
}
]
}
Error responses:
{
"message": "Invalid input: user_id and listing_id are required."
}
{
"message": "Unauthorized"
}
{
"message": "Forbidden."
}
Description
Deletes listings from marketplaces using a POS listing ID.
HTTP Request
DELETE https://apis.dti1ticket.com/mpdeleter/v2
JSON Body
Required
| Key | Description | Location | Required |
|---|---|---|---|
| Authorization | API Key provided by 1ticket | header | true |
| user_id | user_id provided by 1ticket | body | true |
| listing_id | POS listing id | body | true |
| marketplaces | List of marketplaces to delete from | body | false (deletes from all if empty list or not proveded) |
| inverse | If true, deletes from all marketplaces not in "marketplaces" | body | false (default is false) |
StubHub Updates
StubHub Sync X (shsyncx) synchronizes with StubHub marketplace listings. Given an inventory CSV file, shsyncx finds the differences and calls StubHub APIs to broadcast the changes.
POST /v1/item
import requests
import json
response = requests.post(
'https://apis.dti1ticketapps.com/shsyncx/v1/item',
headers={
'x-api-key': 'YOUR_API_KEY',
'Content-Type': 'application/json'
},
data=json.dumps({
"user_id": 9147,
"ticket_id": "23140895",
"currency": "USD",
"do_predeliver": true,
"event_date": "08/23/2018",
"event_name": "EventName",
"event_time": "07:05 PM",
"first_seat": "105",
"has_barcodes": true,
"has_edit": true,
"has_pdf": false,
"hide_seats": true,
"in_hand_date": "2018-03-28",
"internal_action": null,
"last_seat": "108",
"notes": null,
"price": "133.0",
"quantity": 4,
"row": "10",
"section": "127",
"split_option": "Split Type",
"split_quantity": "Split value",
"venue_name": "Wrigley Field"
})
)
curl -X POST \
https://apis.dti1ticketapps.com/shsyncx/v1/item \
-H 'x-api-key: YOUR_API_KEY' \
-H 'Content-Type: application/json' \
-d '{
"user_id": 9147,
"ticket_id": "23140895",
"currency": "USD",
"do_predeliver": true,
"event_date": "08/23/2018",
"event_name": "EventName",
"event_time": "07:05 PM",
"first_seat": "105",
"has_barcodes": true,
"has_edit": true,
"has_pdf": false,
"hide_seats": true,
"in_hand_date": "2018-03-28",
"internal_action": null,
"last_seat": "108",
"notes": null,
"price": "133.0",
"quantity": 4,
"row": "10",
"section": "127",
"split_option": "Split Type",
"split_quantity": "Split value",
"venue_name": "Wrigley Field"
}'
Description
Used to update the price of a listing.
HTTP Request
POST https://apis.dti1ticketapps.com/shsyncx/v1/item
JSON Body
Body
| Name | Type | Required |
|---|---|---|
| user_id | integer | Yes |
| ticket_id | integer | Yes |
| price | string | Yes |
| hide_seats | boolean | Yes |
| do_predeliver | boolean | Yes |
| has_pdf | boolean | Yes |
| has_barcodes | boolean | Yes |
| internal_action | string (aka 1T_Action) | Yes |
| has_edit | boolean | Yes |
| event_name | string | Yes |
| venue_name | string | Yes |
| event_date | string ("MM/DD/YYYY") | Yes |
| event_time | string ("HH:MM %P") | Yes |
| quantity | integer | Yes |
| section | string | Yes |
| row | string | Yes |
| first_seat | string | Yes |
| last_seat | string | Yes |
| notes | string | Yes |
| in_hand_date | string ("YYYY-MM-DD") | Yes |
| split_option | string | Yes |
| split_quantity | integer | Yes |
| electronic_transfer | booleam or NULL | No |
| sh_listing_id | integer (akak stubhub_id) | No |
| event_id | integer or NULL | No |
POST /v2/item
import requests
import json
response = requests.post(
'https://apis.dti1ticketapps.com/shsyncx/v2/item',
headers={
'x-api-key': 'YOUR_API_KEY',
'Content-Type': 'application/json'
},
data=json.dumps({
"user_id": 9147,
"ticket_id": 23140895,
"price": "133.0",
})
)
curl -X POST \
https://apis.dti1ticketapps.com/shsyncx/v2/item \
-H 'x-api-key: YOUR_API_KEY' \
-H 'Content-Type: application/json' \
-d '{
"user_id": 9147,
"ticket_id": 23140895,
"price": "133.0"
}'
Description
Update price of a listing.
HTTP Request
POST https://apis.dti1ticketapps.com/shsyncx/v2/item
JSON Body
Body
| Name | Type | Required |
|---|---|---|
| user_id | integer | Yes |
| ticket_id | integer | Yes |
| price | string | Yes |
Sale Order Processing
DTI/1Ticket's sales order processing APIs enable ticket inventory to be reserved and invoiced out in the event of a sale.
POST HOLD
import requests
import json
response = requests.post(
'https://apis.dti1ticketapps.com/sales/v1/{marketplace_name}',
headers={
'Content-Type': "application/json",
'x-api-key' : "{your_token}"
},
data=json.dumps({
"hold_length": 15,
"order_id": "Marketplace OrderID",
"section": "SECTION",
"tickets": [
{
"row": "ROW",
"seat": "SeatNumber",
},
{
"row": "ROW",
"seat": "SeatNumber"
}
],
"broker": "Broker indentifier",
"listing_id": "POS Listing ID"
})
)
curl -X POST \
'https://apis.dti1ticketapps.com/sales/v1/{marketplace_name}', \
-H 'x-api-key" : "{your_token}' \
-H 'content-type" : "application/json' \
-d '
{
"hold_length": 15,
"order_id": "Marketplace OrderID",
"section": "SECTION",
"tickets": [
{
"row": "ROW",
"seat": "SeatNumber",
},
{
"row": "ROW",
"seat": "SeatNumber"
}
],
"broker": "Broker indentifier",
"listing_id": "POS Listing ID"
}
'
Description
Use this endpoint to request that 1Ticket reserve seats in a listing, thereby making them unavailable for purchase on other marketplaces. A sale must only be processed upon receiving a successful response from this endpoint.
HTTP Request
POST https://apis.dti1ticketapps.com/sales/v1/{marketplace_name}
Header
Required
| Key | Description | Type | Required |
|---|---|---|---|
| x-api-key | Token provided to the MP by 1ticket. | string | Yes |
| content-type | application/json | string | Yes |
JSON Body
Required
| Key | Description | Type | Required |
|---|---|---|---|
| order_id | Marketplace's order id | string | Yes |
| hold_length | The length of time (in minutes) the tickets should be reserved for (max 20 mins) | integer | Yes |
| section | Section of requested tickets | string | Yes |
| broker | Marketplace Broker ID or similar | string | Yes |
| listing_id | POS listing id of the listing | string | Yes |
| tickets | list of TicketModel | list[TicketModel] | Yes |
| predelivered | Predelivery status of the listing | bool | No |
| delivery_option | The fulfillment option of an order | Enum: PDF/BARCODE/FLASH/HARD/MOBILE/MOBILE_TRANSFER | No |
| in_hand_date | The in hand date of the order (YYYY-MM-DD) | string | No |
TicketModel
| Key | Description | Type | Required |
|---|---|---|---|
| row | the row of the ticket seat | string | Yes |
| seat | the seat number. Can be empty string for GA seats | string | No |
Status Codes
| HTTP Code | Description | Marketplace Actions |
|---|---|---|
| 200 | Successfully reserved requested tickets | Continue processing sale |
| 404 | Requested listing could not be found | Cancel the sale and delete the listing |
| 400 | Invalid seats / broker requested | Cancel the sale |
| 409 | Listing could not be deleted from other marketplaces | Cancel the sale |
| 500 | Internal error | Cancel the sale |
RELEASE HOLD
import requests
import json
response = requests.delete(
'https://apis.dti1ticketapps.com/sales/v1/{marketplace_name}',
headers={
'Content-Type': "application/json",
'x-api-key' : "{your_token}"
},
data=json.dumps({
"order_id": "Marketplace OrderID",
"broker": "Broker indentifier",
"listing_id": "POS Listing ID"
})
)
curl -X DELETE \
'https://apis.dti1ticketapps.com/sales/v1', \
-H 'x-api-key" : "{your_token}' \
-H 'content-type" : "application/json' \
-d '
{
"order_id": "Marketplace OrderID",
"broker": "Broker indentifier",
"listing_id": "POS Listing ID"
}
'
Description
Use this endpoint to request 1Ticket release the reserved seats in a listing.
HTTP Request
DELETE https://apis.dti1ticketapps.com/sales/v1/{marketplace_name}
Header
Required
| Key | Description | Type | Required |
|---|---|---|---|
| x-api-key | Token provided to the MP by 1ticket. | string | Yes |
| content-type | application/json | string | Yes |
JSON Body
Required
| Key | Description | Type | Required |
|---|---|---|---|
| order_id | Marketplace's order id | string | Yes |
| broker | Marketplace Broker ID or similar | string | Yes |
| listing_id | POS listing id of the listing | string | Yes |
| section | Section of requested tickets | string | No |
| tickets | list of TicketModel | list[TicketModel] | No |
| predelivered | Predelivery status of the listing | bool | No |
| delivery_option | The fulfillment option of an order | Enum: PDF/BARCODE/FLASH/HARD/MOBILE/MOBILE_TRANSFER | No |
| in_hand_date | The in hand date of the order (YYYY-MM-DD) | string | No |
TicketModel
| Key | Description | Type | Required |
|---|---|---|---|
| row | the row of the ticket seat | string | Yes |
| seat | the seat number. Can be empty string for GA seats | string | No |
Status Codes
| HTTP Code | Description | Marketplace Actions |
|---|---|---|
| 200 | Successfully released reserved tickets | Cancel sale |
| 404 | Requested listing could not be found | |
| 400 | Invalid seats / broker requested | |
| 500 | Internal error |
POST Invoice
import requests
import json
response = requests.post(
'https://apis.dti1ticketapps.com/sales/v1/{marketplace_name}/invoice',
headers={
'Content-Type': "application/json",
'x-api-key' : "{your_token}"
},
data=json.dumps({
"order_id": "Marketplace OrderID",
"predelivered":True,
"delivery_option":"PDF",
"payout": {
"price": 35.5,
"currency": "USD"
},
"section": "SECTION",
"tickets": [
{
"row": "ROW",
"seat": "SeatNumber",
},
{
"row": "ROW",
"seat": "SeatNumber"
}
],
"broker": "Broker indentifier",
"listing_id": "POS Listing ID"
})
)
curl -X POST \
'https://apis.dti1ticketapps.com/sales/v1/{marketplace_name}/invoice', \
-H 'x-api-key" : "{your_token}' \
-H 'content-type" : "application/json' \
-d '
{
"order_id": "Marketplace OrderID",
"predelivered":True,
"delivery_option":"PDF",
"section": "SECTION",
"payout": {
"price": 35.5,
"currency": "USD"
},
"tickets": [
{
"row": "ROW",
"seat": "SeatNumber",
},
{
"row": "ROW",
"seat": "SeatNumber"
}
],
"broker": "Broker indentifier",
"listing_id": "POS Listing ID"
}
'
Description
Use this endpoint to make an invoice request to 1Ticket so as to invoice it out in the broker member's point-of-sale. Upon receiving a successful response from 1Ticket for a purchase request the sale should be considered confirmed.
HTTP Request
POST https://apis.dti1ticketapps.com/sales/v1/{marketplace_name}/invoice
Header
Required
| Key | Description | Type | Required |
|---|---|---|---|
| x-api-key | Token provided to the MP by 1ticket. | string | Yes |
| content-type | application/json | string | Yes |
JSON Body
Required
| Key | Description | Type | Required |
|---|---|---|---|
| order_id | Marketplace's order id | string | Yes |
| predelivered | Predelivery status of a listing | bool | Yes |
| delivery_option | The fulfillment option of an order | Enum: PDF/BARCODE/FLASH/HARD/MOBILE/MOBILE_TRANSFER | Yes |
| payout | Payout information for the order | PayoutModel | Yes |
| section | Section of requested tickets | string | Yes |
| broker | Marketplace Broker ID or similar | string | Yes |
| listing_id | POS listing id of the listing | string | Yes |
| tickets | list of TicketModel | list[TicketModel] | Yes |
| in_hand_date | In hand date of the order (YYYY-MM-DD) | string | No |
PayoutModel
| Key | Description | Type | Required |
|---|---|---|---|
| price | Price of the tickets | float | Yes |
| currency | Currency of the price | string | No (Defaults to USD) |
TicketModel
| Key | Description | Type | Required |
|---|---|---|---|
| row | the row of the ticket seat | string | Yes |
| seat | the seat number. Can be empty string for GA seats | string | No |
Status Codes
| HTTP Code | Description | Marketplace Actions |
|---|---|---|
| 200 | Successfully invoiced requested tickets | Continue processing sale |
| 404 | Requested listing could not be found | Cancel the sale and delete the listing |
| 400 | Invalid seats / broker requested | Cancel the sale |
| 500 | Internal error | Cancel the sale |
GET Sale status
import requests
response = requests.get(
'https://apis.dti1ticketapps.com/sales/v1/{marketplace_name}/order',
params={
'user_id': "{1ticket_user_id}",
'order_id': "{order_id}"
},
headers={
'x-api-key' : "{your_token}"
}
)
curl -X GET \
'https://apis.dti1ticketapps.com/sales/v1/{marketplace_name}/order?user_id={1ticket_user_id}&order_id={order_id}' \
-H 'x-api-key: {your_token}'
'
Description
This endpoint returns the status of any order on a marketplace. This includes orders not processed by 1Ticket/sales.
HTTP Request
GET https://apis.dti1ticketapps.com/sales/v1/{marketplace_name}/order
Headers
| Key | Description | Type | Required |
|---|---|---|---|
| x-api-key | Token provided to the broker by 1ticket. | string | Yes |
Parameters
| Key | Description | Type | Location | Required |
|---|---|---|---|---|
| marketplace_name | Name of the marketplace the order is on | string | Path | Yes |
| user_id | Your 1ticket user ID | int | Query | Yes |
| order_id | Order ID on the marketplace | string | Query | Yes |
Marketplaces supported
| Name | ID |
|---|---|
| Agora | 52 |
| EventInventory | 3 |
| FanXChange | 15 |
| Gametime | 25 |
| Goldstar | 55 |
| Seatgeek | 41 |
| SeatSmart | 27 |
| Stubhub | 1 |
| TicketEvolution | 9 |
| TicketMonster | 20 |
| TicketNetwork | 2 |
| Tickpick | 16 |
| Viagogo | 12 |
| Vivid | 4 |
Post Sale Integration
Confirm Sale
Once we create an invoice in the broker member's POS, 1Ticket will notify you confirming the sale.
Inputs:
- Broker identifier
- Order ID
Outputs:
- Success: true/false
This call will be us acknowledging that we will be able to fill the sale. You can expect this call to happen within 15 mins of the purchase request you send us, often considerably faster.
Reject Sale
If we are unable to invoice out the seats requested, 1Ticket notifies you to cancel the sale using this endpoint.
Inputs:
- Broker identifier
- Order ID
Outputs:
- Success: true/false
The opposite of the confirm call, this will be 1Ticket letting you know that we will be unable to fill the sale, for example if the seats are not longer available. Please be aware this feature is not used by every broker member.
Fulfill Sale
After confirmation, we will upload PDFs or proof of transfer to you using this endpoint.
Inputs:
- Broker identifier
- Order ID
- List of PDFs (if it's a PDF delivery sale)
- Transfer ID (if it's a Mobile Transfer/Flash sale - this is just us confirming we have transferred the seats to the buyer)
Outputs:
- Success: true/false
For a PDF sale, we will upload PDFs to this endpoint. For a transfer sale, we will be uploading a transfer ID as proof indicating a successful transfer to the buyer directly.
Generate Airbill
For a hard delivery order, 1Ticket downloads airbills from this endpoint in order to ship the tickets.
Inputs:
- Broker identifier
- Order ID
Outputs:
- Airbill PDF data OR
- Airbill download URL
Once we are ready to ship tickets to the buyer, we will download shipping labels from this endpoint.
Get Order
1Ticket uses this endpoint to keep track of the status of an order over the course of the lifetime of the sale (Hold->Delivery).
Inputs:
- Broker identifier
- Order ID
Outputs:
| Key | Description | Required |
|---|---|---|
| Order ID | Identifier of the Sale | Yes |
| Order Status | Status of the sale - Pending (Unconfirmed), Confirmed (confirmed by 1ticket), Shipped (If you're tracking a hard shipment), Completed (buyer has tickets) | Yes |
| In Hand Date | Last date the sale can be filled | Yes |
| Delivery Method | Delivery type of the sale | Yes |
| Order Date/time | Date and time of the sale | No |
| Event Name | Name of the event the tickets are for | No |
| Venue Name | Name of the venue the tickets are in | No |
| Event date/time | Date and time of the event | Nos |
| Quantity | Number of tickets in the sale | No |
| Section | Section of the seats | No |
| Row | Row(s) of the seats | No |
| Seats | Seat numbers (array or comma separated string) | No |
| Marketplace Listing id | Marketplace identifier for the listing the tickets belong to | No |
| External Listing id | Identifier for the listing on the Broker's POS (provided in CSV) | No |
| Payout | The payout to the broker of the sale | No |
| Buyer information | First name, last name, email | Yes for transfer |
POST Catalogue sale
import requests
response = requests.get(
'https://apis.dti1ticketapps.com/sales/v1/catalogue',
json={
"user_id": "1234",
"order_id": "98765",
"marketplace": "stubhub",
"invoice_id": "11111",
"seats": "1,2,3,4"
},
headers={
'x-api-key' : "{your_token}",
'Content-Type': "application/json"
}
)
curl -X POST \
'https://apis.dti1ticketapps.com/sales/v1/catalogue' \
-H 'x-api-key: {your_token}' \
-H 'Content-Type: application/json' \
-d '{
"user_id": "1234",
"order_id": "98765",
"marketplace": "stubhub",
"invoice_id": "11111",
"seats": "1,2,3,4"
}'
Description
This endpoint runs the catalogue job for provided sale info.
HTTP Request
POST https://apis.dti1ticketapps.com/sales/v1/catalogue
Headers
| Key | Description | Type | Required |
|---|---|---|---|
| x-api-key | Token provided to the broker by 1ticket. | string | Yes |
| Content-Type | application/json | string | Yes |
JSON Body
Required
| Key | Type | Description |
|---|---|---|
| user_id | string | 1Ticket user ID |
| order_id | string | order ID |
| marketplace | string | marketplace name (if marketplace ID not provided) |
| marketplace_id | string | marketplace ID (if marketplace name not provided) |
| invoice_id | string | invoice ID |
| seats | string | comma separated string of seat numbers |
Optional
| Key | Type | Description |
|---|---|---|
| listing_id | string | listing ID |
| recipient_info | object | Dictionary containing name and email |
| delivery_method | string | Delivery method for sale |
| fulfill_now | bool | Should try fulfill, default is true |
Webhooks
Sale Notification
Description
This webhook must be a POST HTTP Request and will accept the following JSON
Possible messages
- Invoice {invoice_id} cancelled
- Invoice {invoice_id} created and fulfilled
- Invoice {invoice_id} fulfilled
- Invoice {invoice_id} created
- Invoice {invoice_id} notification with price update
- Invoice {invoice_id} notification with recipient update
JSON Body
The following an example of a JSON body your webhook will receive:
{
"message": "Invoice 12121221 created",
"invoice": {
"data": {
"type": "sales",
"id": 12121221,
"attributes": {
"sale_date": "2021-05-19T10:31:36.400000+00:00",
"completed_date": null,
"cancelled_date": null,
"invoice_status": "Electronic Delivery",
"cust_first_name": "fname",
"cust_last_name": "lname",
"ticket_quantity": 1,
"total_cost": 182.00,
"ROI": null,
"ROI_percentage": null,
"total": null,
"commission": null,
"amount_due": null,
"total_sold": null,
"net_profit": null,
"profit_margin_percentage": null,
"sns_status": "invoice with recipient update",
"broker_direct": null,
"buyer_po_id": "xx33",
"items": {
"data": [
{
"type": "items",
"id": 2626262,
"attributes": {
"listing_id": 87878987,
"listing_historic_id": [
"87878987"
],
"section": "21",
"row": "8",
"seat": 4,
"item_status": "Sold",
"event_id": 655555,
"event_date": "2021-05-19T00:00:00+00:00",
"event_time": "07:20 PM",
"event_name": "New York Mets at Atlanta Braves",
"event_headliner": "Atlanta Braves",
"event_headliner_id": 101,
"event_headliner_type": "Sport",
"event_headliner_category": "MLB",
"venue_id": 35,
"venue_name": "Truist Park",
"venue_city": "Atlanta",
"venue_state": "GA",
"venue_country_code": "US",
"item_price": 10.00,
"item_sold_price": null,
"item_sold_price_usd": null,
"item_cost": 9.00,
"face": 9.00,
"location": "MOBILE_XFR",
"is_hard": false,
"external_notes": "Xfer MOBILE ENTRY. Scan your tickets from your phone for this event. Do not print these tickets",
"owner_notes": "",
"inhand": true,
"purchaser": null,
"order_number": null,
"payment_id": null,
"payment_status": "Unpaid",
"payment_date": null,
"owner": null,
"inhand_date": null,
"barcode": null
}
}
]
}
},
"links": {
"self": "/v0/sales/12121221"
}
},
"links": {
"self": "/v0/sales/12121221"
},
"meta": {
"total_data": 1
}
},
"invoice_recipient": {
"first_name": "me",
"last_name": "R",
"email": "me@mail.com"
},
"recipient": {
"data": [
{
"type": "invoicerecipient",
"id": 12121221,
"attributes": {
"first_name": "me",
"last_name": "R",
"email": "me@mail.com",
"event_id": 655555,
"event_name": "New York Mets at Atlanta Braves",
"section": "21",
"row": "8",
"seat": "03"
},
"links": {
"self": "/v0/sales/12121221/recipient"
}
}
]
}
}
Transfer Service
Primary Transfers
The inventory1ticket service handles transfers on primary seller marketplaces, ensuring tickets are transferred from the primary marketplace account to the end-user following a successful sale.
Supported primary sellers:
- Ticketmaster
- Tickets.com
- Ticketmaster Account Manager
- MLB Ballpark App
- Seatgeek
- AXS
To access the endpoints below, an Authorization Token is required.
GET /public/v1/tickets
curl -X GET \
'https://apis.dti1ticketapps.com/inventory1ticket/public/v1/tickets?date_from=2019-03-23&date_to=2019-03-24&event=diamondbacks&venue=scottsdale§ion=215&row=N&seat=1' \
-H 'Authorization: Bearer YOUR_AUTHORIZATION_TOKEN'
import requests
url = "https://apis.dti1ticketapps.com/inventory1ticket/public/v1/tickets"
querystring = {"date_from":"2019-03-23","date_to":"2019-03-24","event":"diamondbacks","venue":"scottsdale","section":"215","row":"N","seat":"1"}
payload = ""
headers = {
'Authorization': "Bearer YOUR_AUTHORIZATION_TOKEN"
}
response = requests.request("GET", url, data=payload, headers=headers, params=querystring)
print(response.text)
Successful Response
{
"count": 1,
"tickets": [
{
"id": 1111,
"user_id": 8060,
"account_id": 166889,
"username": "10330707",
"event": "Diamondbacks at Giants",
"venue": "Scottsdale Stadium",
"local_date": "2019-03-23T13:05:00",
"section": "215",
"row": "N",
"seat": "1",
"transferred": true,
"expired": false
}
]
}
Description
Filters inventory based on Event, Venue, Date Range, etc. Has support for pagination.
Headers
| Key | Required | Description | Example |
|---|---|---|---|
| Authorization | One or the other | Your API access token in the format 'Bearer {token}' | Bearer 11b9932ffa3d4311be7a3fb677291ade |
| x-api-key | One or the other | Your API access token | 11b9932ffa3d4311be7a3fb677291ade |
Query Parameters
| Name | Required | Location | Description | Examples |
|---|---|---|---|---|
| id | No | Query | A single ticket ID or comma-separated list of ticket IDs to include. | 1111/ 123,456 |
| account_id | No | Query | A single account ID or comma-separated list of account IDs, in which to search for tickets | 166889 / 399315, 377806 |
| date_from | No | Query | Start date of date range to search in | 2019-02-24/2019-01-04T11:00:00 |
| date_to | No | Query | End date of date range to search in | 2019-02-25/2019-01-18T13:00:00 |
| venue | No | Query | The name of the venue being searched for. Does a case-insensitive substring search on the table. | scottsdale |
| event | No | Query | The event name being searched for. Does a case-insensitive substring search on the table | giants |
| section | No | Query | The section on the ticket. Must be an exact match. | 215 |
| row | No | Query | Row on the ticket . Must be an exact match. | K |
| seat | No | Query | Seat on the ticket . Must be an exact match. | 17 |
| primary_id | No | Query | Query based on the Marketplace-specific ticket ID, which is assumed to be unique within a marketplace | host-ticket/SEA/22-12007/1550501685000/ESM0622/0x2E05000B |
| expired | No | Query | Query for tickets that have the expired boolean flag set to a certain value | true/false |
| page_size | No | Query | Size of the page of tickets returned in the response. Defaults to a thousand | 500 |
| page | No | Query | Page number starting from zero, defaults to zero | 1 |
Output Body
| Name | Description | Examples |
|---|---|---|
| count | The total number of results matching the query | 1 |
| tickets | A single page of tickets matching the query | See below |
Output Tickets Body
| Name | Description | Examples |
|---|---|---|
| id | ID of the ticket in the system. | 1111 |
| user_id | User ID of the account owner | 8060 |
| account_id | ID of the account containing the ticket | 166889 |
| username | Username of the account containing the ticket | 10330707 |
| account_type | Website/Portal in which the tickets are present | Tickets.com |
| event | Name of the Event | Diamondbacks at Giants |
| venue | Name of the Venue | Scottsdale Stadium |
| local_date | Date and time of the event, in the local timezone | 2019-03-23T13:05:00" |
| section | Section given on the ticket | 215 |
| row | Row given on the ticket | N |
| seat | Seat given on the ticket | 1 |
| transferred | Whether or not the given ticket has already been emailed within the system. Defaults to false, gets set to true whenever a successful transfer occurs. Gets set back to false in case of a successful recall | true |
| expired | The expired flag indicates whether or not the ticket is currently present in the account | false |
POST /public/v1/map
curl -X POST \
https://apis.dti1ticketapps.com/inventory1ticket/public/v1/map \
-H 'Authorization: Bearer YOUR_AUTHORIZATION_TOKEN' \
-d '{
"tickets": [{
"event": "White Sox at Giants",
"venue": "Scottsdale Stadium",
"local_date": "2019-02-25T13:05:00",
"section": "213",
"row": "K",
"seat": "17"
}]
}'
import requests
url = "https://apis.dti1ticketapps.com/inventory1ticket/public/v1/map"
payload = "{\n\t\"tickets\": [{\n \"event\": \"White Sox at Giants\",\n \"venue\": \"Scottsdale Stadium\",\n \"local_date\": \"2019-02-25T13:05:00\",\n \"section\": \"213\",\n \"row\": \"K\",\n \"seat\": \"17\"\n\t}]\n}"
headers = {
'Authorization': "Bearer YOUR_AUTHORIZATION_TOKEN"
}
response = requests.request("POST", url, data=payload, headers=headers)
print(response.text)
Successful Response
{
"user_id": 8060,
"requests": [
{
"username": "10330707",
"account_type": "Tickets.com",
"account_id": 166889,
"tickets": [
{
"id": 1111,
"event": "White Sox at Giants",
"venue": "Scottsdale Stadium",
"local_date": "2019-02-25T13:05:00",
"section": "213",
"row": "K",
"seat": "17",
"transferred": false,
"expired": false
}
]
}
]
}
Description
This function maps a list of tickets to inventory stored in 1Ticket's system, returning the grouped transfer requests that would need to be made in order to transfer the tickets successfully.
If any of the tickets are missing, we will display an error message with status 400 instead. The contents of the error message will be the missing ticket.
Headers
| Key | Required | Description | Example |
|---|---|---|---|
| Authorization | One or the other | Your API access token in the format 'Bearer {token}' | Bearer 11b9932ffa3d4311be7a3fb677291ade |
| x-api-key | One or the other | Your API access token | 11b9932ffa3d4311be7a3fb677291ade |
Input Body
| Name | Required | Location | Description | Examples |
|---|---|---|---|---|
| force | No | Body | Whether or not to force a transfer for already transferred/expired tickets | true |
| tickets | Yes | Body | A list of tickets to map into the inventory tables. Must contain at least one ticket. | See below |
Input Tickets Body
| Name | Required | Location | Description | Examples |
|---|---|---|---|---|
| id | No | Body | ID of the ticket in the system. This can be acquired by using the query tickets endpoint. (If this parameter is provided, none of the other parameters are required). | 1111 |
| event | No | Body | Name of the event. Must be an exact match. | White Sox at Giants |
| venue | No | Body | Name of the venue. Must be an exact match. | Scottsdale Stadium |
| local_date | No | Body | Date & Time of the event. Only needs to be accurate within an hour. | 2019-02-25T13:05:00 |
| section | No | Body | Section on the ticket. Must be an exact match. | 213 |
| row | No | Body | Row on the ticket . Must be an exact match. | K |
| seat | No | Body | Seat on the ticket . Must be an exact match. | 17 |
Output Body
| Name | Description | Examples |
|---|---|---|
| user_id | 1Ticket user ID | 8060 |
| requests | A list of requests that should be made to transfer the tickets | See below |
Output Requests Body
| Name | Description | Examples |
|---|---|---|
| username | Account username | 10330707 |
| account_type | Account website/portal | Tickets.com |
| account_id | ID of the account associated with the request | 166889 |
| tickets | List of tickets from the account associated with the transfer | See below |
Output Tickets Body
| Name | Description | Examples |
|---|---|---|
| id | ID of the ticket in the system. | 1111 |
| event | Name of the event. | White Sox at Giants |
| venue | Name of the venue. | Scottsdale Stadium |
| local_date | Date & Time of the event. | 2019-02-25T13:05:00 |
| section | Section on the ticket. | 213 |
| row | Row on the ticket . | K |
| seat | Seat on the ticket. | 17 |
| transferred | Whether this ticket has been successfully transferred | true |
| expired | Whether this ticket is no longer associated with the given account | false |
POST /public/v1/transfer
curl -X POST \
https://apis.dti1ticketapps.com/inventory1ticket/public/v1/transfer \
-H 'Authorization: Bearer YOUR_AUTHORIZATION_TOKEN' \
-d '{
"order_id": "test1234",
"invoice_id": "test223",
"marketplace": "ticketmaster",
"recipient_email": "jason@1ticket.com",
"first_name": "Jason",
"last_name": "Knieriem",
"note": "Testing",
"tickets": [{
"event": "White Sox at Giants",
"venue": "Scottsdale Stadium",
"local_date": "2019-02-25T13:05:00",
"section": "213",
"row": "K",
"seat": "17",
"barcode": "843883426230857"
}]
}'
import requests
url = "https://apis.dti1ticketapps.com/inventory1ticket/public/v1/transfer"
payload = {
"order_id": "test1234",
"invoice_id": "test223",
"marketplace": "ticketmaster",
"recipient_email": "jason@1ticket.com",
"first_name": "Jason",
"last_name": "Knieriem",
"note": "Testing",
"tickets": [{
"event": "White Sox at Giants",
"venue": "Scottsdale Stadium",
"local_date": "2019-02-25T13:05:00",
"section": "213",
"row": "K",
"seat": "17",
"barcode": "660258794538"
}]
}
headers = {
'Authorization': "Bearer YOUR_AUTHORIZATION_TOKEN"
}
response = requests.request("POST", url, json=payload, headers=headers)
print(response.text)
Successful Response
{
"transfer_id": 19
}
Description
Initiates a transfer for a given order, recipient and list of tickets. Returns a transfer ID, which can be polled with the GET transfers endpoint.
Headers
| Key | Required | Description | Example |
|---|---|---|---|
| Authorization | One or the other | Your API access token in the format 'Bearer {token}' | Bearer 11b9932ffa3d4311be7a3fb677291ade |
| x-api-key | One or the other | Your API access token | 11b9932ffa3d4311be7a3fb677291ade |
Query Parameters
| Name | Required | Location | Description | Examples |
|---|---|---|---|---|
| upload_proof | No | Query | Indicates if transfer service should try to upload proof of transfer to the marketplace. | true/false |
Input Body
| Name | Required | Location | Description | Examples |
|---|---|---|---|---|
| order_id | No | Body | ID of the order, provided by the marketplace | abc123 |
| invoice_id | No | Body | ID of the invoice | abc123 |
| marketplace | No | Body | Name of the marketplace on which the tickets were sold | StubHub |
| recipient_email | Yes | Body | Email Address of the Transfer Recipient | xyz@1ticket.com |
| first_name | Yes | Body | First Name of the Transfer Recipient | XYZ |
| last_name | Yes | Body | Last Name of the Transfer Recipient | ABC |
| note | No | Body | Note to attach to the transfer. This note gets sent to the Transfer Recipient | Test Note |
| force | No | Body | Whether or not to force a transfer for already transferred/expired tickets | true |
| tickets | Yes | Body | A list of tickets to map into the inventory tables. Must contain atleast one ticket. | See below |
Input Tickets Body
| Name | Required | Location | Description | Examples |
|---|---|---|---|---|
| id | No | Body | ID of the ticket in the system. This can be acquired by using the query tickets endpoint. (If this parameter is provided, none of the other parameters are required). | 1111 |
| event | No | Body | Name of the event. Must be an exact match. | White Sox at Giants |
| venue | No | Body | Name of the venue. Must be an exact match. | Scottsdale Stadium |
| local_date | No | Body | Date & Time of the event. Only needs to be accurate within an hour. | 2019-02-25T13:05:00 |
| section | No | Body | Section on the ticket. Must be an exact match. | 213 |
| row | No | Body | Row on the ticket . Must be an exact match. | K |
| seat | No | Body | Seat on the ticket . Must be an exact match. | 17 |
| barcode | No | Body | Barcode on the ticket . Must be an exact match. | 660258794538 |
Note: fields { barcode, local_date, venue and event } are required when a transfer by barcode want to be attempt even when tickets are not in the database (Ticketmaster Only). Otherwise the tickets must exist in the database to execute the transfer.
Output Body
| Name | Description | Examples |
|---|---|---|
| transfer_id | ID of the Transfer, which can be used to poll | 1 |
GET /public/v1/transfers
curl -X GET \
'https://apis.dti1ticketapps.com/inventory1ticket/public/v1/transfers?id=18' \
-H 'Authorization: Bearer YOUR_AUTHORIZATION_TOKEN' \
import requests
url = "https://apis.dti1ticketapps.com/inventory1ticket/public/v1/transfers"
querystring = {"id":"18"}
payload = ""
headers = {
'Authorization': "Bearer YOUR_AUTHORIZATION_TOKEN"
}
response = requests.request("GET", url, data=payload, headers=headers, params=querystring)
print(response.text)
Successful Response
{
"count": 1,
"transfers": [
{
"id": 18,
"start_time": "2019-02-20T09:58:43.078739",
"user_id": 8060,
"order_id": "test1234",
"invoice_id": "abc123",
"marketplace": "stubhub",
"recipient_email": "jason@1ticket.com",
"recipient_first_name": "Jason",
"recipient_last_name": "Knieriem",
"note": "This is a Test",
"status": "RECALLED",
"status_code": 11,
"mapping_error": null,
"requests": [
{
"id": 14,
"account_id": 166889,
"username": "10330707",
"account_type": "Tickets.com",
"status": "RECALLED",
"status_code": 11,
"transfer_job_id": "ed247193bf384d95b1d2fc31660747e7",
"fulfillment_id": "34971427",
"response": {
"transaction_id": "34971427",
"tickets": [
"663338312"
]
},
"error_message": null,
"tickets": [
{
"id": 1111,
"event": "Diamondbacks at Giants",
"venue": "Scottsdale Stadium",
"local_date": "2019-03-23T13:05:00",
"section": "215",
"row": "N",
"seat": "1",
"transferred": false,
"expired": false
}
]
}
]
}
]
}
Description
Filters transfers based on Transfer ID, Time Range, Recipient, Ticket information, etc. Has support for pagination.
Headers
| Key | Required | Description | Example |
|---|---|---|---|
| Authorization | One or the other | Your API access token in the format 'Bearer {token}' | Bearer 11b9932ffa3d4311be7a3fb677291ade |
| x-api-key | One or the other | Your API access token | 11b9932ffa3d4311be7a3fb677291ade |
Query Parameters
| Name | Required | Location | Description | Examples |
|---|---|---|---|---|
| id | No | Query | Transfer ID | 1 |
| order_id | No | Query | Order ID | abc123 |
| invoice_id | No | Query | Invoice ID | abc123 |
| account_id | No | Query | A single account ID or comma-separated list of account IDs, from which requests were made | 166889 / 399315, 377806 |
| date_time_from | No | Query | Start date & time of transfer date & time range to search in | 2019-02-12T13:00:00 |
| date_time_to | No | Query | End date & time of transfer date & time range to search in | 2019-02-12T13:00:00 |
| venue | No | Query | The name of the venue for a ticket being transferred. Does a case-insensitive substring search on the table. | scottsdale |
| event | No | Query | The event name for a ticket being transferred. Does a case-insensitive substring search on the table | giants |
| event_date_from | No | Query | Start date of event date range to search in | 2019-02-24 |
| event_date_to | No | Query | End date of event date range to search in | 2019-02-25 |
| section | No | Query | The section for a ticket being transferred. Must be an exact match. | 215 |
| row | No | Query | Row for a ticket being transferred . Must be an exact match. | K |
| seat | No | Query | Seat for a ticket being transferred . Must be an exact match. | 17 |
| page_size | No | Query | Size of the page of tickets returned in the response. Defaults to a thousand | 500 |
| page | No | Query | Page number starting from zero, defaults to zero | 1 |
Output Body
| Name | Description | Examples |
|---|---|---|
| count | The total number of results matching the query | 1 |
| transfers | A single page of transfers matching the query | See below |
Output Transfers Body
| Name | Description | Examples |
|---|---|---|
| id | Transfer ID | 18 |
| start_time | Date & Time when the transfer was initiated, in UTC | 2019-02-20T09:58:43.078739 |
| user_id | User ID of the owner of the tickets | 8060 |
| order_id | Marketplace Order ID | abc123 |
| invoice_id | Invoice ID | abc123 |
| marketplace | Marketplace Name | stubhub |
| recipient_email | Email Address of the Transfer Recipient | jason@1ticket.com |
| recipient_first_name | First Name of the Transfer Recipient | Jason |
| recipient_last_name | Last Name of the Transfer Recipient | Knieriem |
| note | Note attached to the transfer, viewable by the Recipient | Test Note |
| status | Current status of the transfer | See Transfer Statuses below |
| status_code | Status Code of the current status | See Transfer Statuses below |
| mapping_error | Error message for failed attempts to map tickets into the database (status: FAILED_MAPPING) | No Results Found |
| requests | List of Requests made to primary marketplaces. Each request consists of a single account, with a list of tickets for each account. Requests are carried out independently, the attempt is only successful if all succeed. | See below |
Output Requests Body
| Name | Description | Examples |
|---|---|---|
| id | Request ID | 14 |
| account_id | ID of the account associated with the request | 166889 |
| username | Account username | 10330707 |
| account_type | Account website/portal | Tickets.com |
| transfer_type | The method by which the transfer was carried out | tradedesk, seatgeek, etc. |
| tradedesk_token | If the transfer_type parameter is tradedesk, the token used to perform the transfer is included | 7D9FD3E4BFE34EA9B20F0D0AEE905F5A |
| status | Current status of the request | See Request Statuses below |
| status_code | Status Code of the current status | See Request Statuses below |
| transfer_job_id | Job ID of the transfer from the primary service | b1df6b8388ae46f39f7aa8729d4cdad3 |
| fulfillment_id | Identifier that can be used to complete orders on a marketplace | 34685265 |
| response | Response from the primary marketplace | |
| error_message | Error message for failed transfer requests (status: FAILED) | Service error: Can not confirm transfer |
| tickets | List of tickets from the account associated with the transfer | See below |
Output Tickets Body
| Name | Description | Examples |
|---|---|---|
| id | ID of the ticket in the system. | 1111 |
| event | Name of the event. | White Sox at Giants |
| venue | Name of the venue. | Scottsdale Stadium |
| local_date | Date & Time of the event. | 2019-02-25T13:05:00 |
| section | Section on the ticket. | 213 |
| row | Row on the ticket . | K |
| seat | Seat on the ticket. | 17 |
| transferred | Whether this ticket has been successfully transferred | true |
| expired | Whether this ticket is no longer associated with the given account | false |
Transfer Statuses
| status_code | status | status_description |
|---|---|---|
| 1 | PENDING | Transfer has been initiated. |
| 10 | EMAILED | Transfer has been successfully emailed to recipient. |
| 20 | FAILED | Transfer was unsuccessful. |
| 22 | PARTIAL | Transfer is partially successful, i.e. One or more of the requests succeeded and one or more failed. |
| 30 | FAILED_MAPPING | Transfer could not be initiated, Tickets were not found. |
| 2 | RECALLING | Recall has been initiated. |
| 11 | RECALLED | Transfer has been successfully recalled. |
| 21 | FAILED_RECALL | Recall Attempt was unsuccessful. |
Request Statuses
| status_code | status | status_description |
|---|---|---|
| 1 | PENDING | Transfer has been initiated. |
| 10 | EMAILED | Transfer has been successfully emailed to recipient. |
| 20 | FAILED | Transfer was unsuccessful. |
| 2 | RECALLING | Recall has been initiated. |
| 11 | RECALLED | Transfer has been successfully recalled. |
| 21 | FAILED_RECALL | Recall Attempt was unsuccessful. |
| 3 | VERIFYING | Verifying if tickets are still available for transfer. |
| 12 | VERIFIED | Tickets requested for transfer were successfully verified. |
| 36 | FAILED_VERIFY | Transfer could not be verified, tickets are not available for transfer. |
POST /public/v1/recall
curl -X POST \
https://apis.dti1ticketapps.com/inventory1ticket/public/v1/recall \
-H 'Authorization: Bearer YOUR_AUTHORIZATION_TOKEN' \
-d '{
"transfer_id": 19
}'
import requests
url = "https://apis.dti1ticketapps.com/inventory1ticket/public/v1/recall"
payload = "{\n\t\"transfer_id\": 19\n}"
headers = {
'Authorization': "Bearer YOUR_AUTHORIZATION_TOKEN",
}
response = requests.request("POST", url, data=payload, headers=headers)
print(response.text)
Successful Response
{
"transfer_id": 19
}
Description
Initiates a transfer recall attempt for a given transfer ID. After calling this endpoint, the transfer status can be retrieved using the GET transfers endpoint.
Headers
| Key | Required | Description | Example |
|---|---|---|---|
| Authorization | One or the other | Your API access token in the format 'Bearer {token}' | Bearer 11b9932ffa3d4311be7a3fb677291ade |
| x-api-key | One or the other | Your API access token | 11b9932ffa3d4311be7a3fb677291ade |
Input Body
| Name | Required | Location | Description | Examples |
|---|---|---|---|---|
| transfer_id | Yes | Body | ID of the Transfer, which must be recalled | 18 |
Output Body
| Name | Description | Examples |
|---|---|---|
| transfer_id | ID of the Transfer, which can be used to poll | 18 |
POST public/v1/crawl/refresh
curl -X POST \
https://apis.dti1ticketapps.com/inventory1ticket/public/v1/crawl/refresh \
-H 'Authorization: Bearer YOUR_AUTHORIZATION_TOKEN' \
-d '{
"account_ids": [1234, 5678, ...]
}'
import requests
url = "https://apis.dti1ticketapps.com/inventory1ticket/public/v1/crawl/refresh"
payload = {
"account_ids": [1234, 5678, ...] # List of account ids to crawl
}
headers = {
'x-api-key': "YOUR_API_KEY"
}
response = requests.request("POST", url, json=payload, headers=headers)
print(response.text)
Successful Response
{
"1234": {
"job_id": "nw2n4lknwelkn2lfnsdg01",
"err_msg": ""
},
"5678": {
"job_id": "",
"err_msg": "No credentials found."
}
}
Description
Performs manual crawls of the associated primary accounts given a list of account IDs. Status is returned by account and all crawls direct information into the Inventory1ticket database.
Either user ID or list of account IDs is accepted. Providing both defaults to the user ID option.
Headers
| Key | Required | Description | Example |
|---|---|---|---|
| Authorization | One or the other | Your API access token in the format 'Bearer {token}' | Bearer 11b9932ffa3d4311be7a3fb677291ade |
| x-api-key | One or the other | Your API access token | 11b9932ffa3d4311be7a3fb677291ade |
Input Body
| Name | Required | Location | Description | Examples |
|---|---|---|---|---|
| account_ids | Yes | Body | A list containing account ids to perform crawls | [1234, 5678] |
Output Body
| Name | Description | Examples |
|---|---|---|
| account_id | The status associated with the job. | Account ID Body |
Output Account ID Body
| Name | Description | Examples |
|---|---|---|
| job_id | The primary job id associated a successful job. | nw2n4lknwelkn2lfnsdg01 |
| err_msg | The error message associated with a failed job. | "No credentials found." |
Recipient Data
The marketplaceapis API is a collection of tools that integrates with marketplaces to retrieve pertinent receipt data for transfer of tickets.
GET transfer/v1
import requests
response = requests.get(
'https://apis.dti1ticketapps.com/marketplaceapis/transfer/v1',
headers={
'x-api-key': 'YOUR_API_KEY'
},
params={
'marketplace_id': '1Ticket Marketplace ID',
'user_id': '1Ticket User ID',
'order_id': 'Marketplace Order ID'
}
)
curl -X GET \
https://apis.dti1ticketapps.com/marketplaceapis/transfer/v1?marketplace_id={}&user_id={}&order_id={} \
-H 'x-api-key: YOUR_API_KEY'
The above command returns JSON structured like this:
{
"order_number": "Marketplace Order ID",
"vendor": "Marketplace Name",
"email": "Buyer email address",
"first_name": "Buyer first name",
"last_name": "Buyer last name"
}
Description
Get buyer information for a transfer order.
HTTP Request
GET https://apis.dti1ticketapps.com/marketplaceapis/transfer/v1?marketplace_id={}&user_id={}&order_id={}
URL Query Parameters
| Parameter | Description |
|---|---|
| marketplace_id | 1Ticket Marketplace ID |
| user_id | 1Ticket User ID |
| order_id | Marketplace Order ID |