API Documentation
The Ticket Pulse Partner API lets you integrate our ticketing platform directly into your website or application. Create orders, retrieve event and ticket data, and manage ticket personalisation — all from your own platform.
Authentication
Every request must include your private API key as a query string parameter named key. There are no request headers required.
GET https://ticket-pulse.com/tp-api/events?key=YOUR_PRIVATE_KEY
Authentication errors
| Response | Cause |
|---|---|
403 Unauthorized |
The key parameter is missing, empty, or does not match any account. |
Error handling
The API uses standard HTTP status codes. Error responses return a plain-text body with a short description of the problem.
| Status | Meaning |
|---|---|
| 200 OK | Request succeeded. |
| 400 Bad Request | A required parameter is missing or has an invalid value. |
| 401 Unauthorized | The resource was not found or the caller is not permitted to access it. |
| 403 Forbidden | Authentication failed or the authenticated account cannot access the resource. |
| 404 Not Found | The requested resource does not exist. |
Get all events
Returns every event belonging to the authenticated account, including child events (sub-dates) and all associated ticket types.
Query parameters
| Parameter | Type | Description | |
|---|---|---|---|
key | string | required | Your private API key. |
Response 200
[
{
"id": 12,
"name": "Summer Festival 2025",
"city": "Amsterdam",
"start_date": 1753920000, // Unix timestamp, nullable
"end_date": 1754006400,
"price": "29.95",
"stock": 500,
"status": 1,
"tickets": [
{
"id": 45,
"name": "General Admission",
"stock": 400,
"price": 29.95,
"status": 1,
"date": 1753920000, // Unix timestamp, nullable
"enabled": true
}
],
"children": [ // sub-events / multi-day dates
{
"id": 13,
"name": "Day 1 — Saturday",
"status": 1,
"stock": 250,
"price": "15.00",
"featured": false,
"tickets": [ /* same structure as above */ ],
"manage_price_per_ticket": true,
"manage_stock_per_ticket": true,
"start_date": 1753920000,
"end_date": 1753963200,
"event_params": {},
"password": null,
"thumbnail": "event-13.jpg",
"location": "Vondelpark",
"deleted_at": null
}
]
}
]
Get events by user
Returns a summary of every event that a specific external user has purchased tickets for.
Path parameters
| Parameter | Type | Description | |
|---|---|---|---|
userId | integer | required | The external user ID from your platform (e.g. WooCommerce user ID). |
Query parameters
| Parameter | Type | Description | |
|---|---|---|---|
key | string | required | Your private API key. |
Response 200
[
{
"id": 12,
"name": "Summer Festival 2025",
"start_date": "2025-07-31T18:00:00+00:00"
}
]
Error responses
| Status | Body | Cause |
|---|---|---|
| 404 | External user has no orders |
No orders were found for the given external user ID. |
Get tickets by event
Returns all tickets for a specific event that belong to a given external user. Includes personalisation details for each ticket.
Path parameters
| Parameter | Type | Description | |
|---|---|---|---|
eventId | integer | required | The Ticket Pulse event ID. |
Query parameters
| Parameter | Type | Description | |
|---|---|---|---|
key | string | required | Your private API key. |
wp_user_id | integer | required | The external user ID. |
Response 200
[
{
"id": "a3f9b", // ticket reference — use this as ticket_id in other calls
"event_name": "Summer Festival 2025",
"event_start_date": "2025-07-31T18:00:00+00:00",
"start_date": "2025-07-31T18:00:00+00:00",
"order_id": "TP-00123",
"name": "General Admission",
"first_name": "Jane",
"last_name": "Doe",
"email": "[email protected]",
"phone": "+31612345678",
"status": 2,
"is_deprecated": false
}
]
Ticket status values
| Value | Meaning |
|---|---|
1 | Created — awaiting personalisation. |
2 | Active — personalised and valid for entry. |
3 | Scanned in. |
4 | Scanned out. |
5 | Cancelled. |
Error responses
| Status | Body | Cause |
|---|---|---|
| 404 | Event not found | No event with the given ID exists. |
| 400 | Wordpress user not specified | The wp_user_id parameter is missing. |
Personalise tickets
Assigns attendee details to one or more tickets for an event. Once all tickets for that event within an order are personalised, the PDF is automatically generated and emailed to the customer.
Path parameters
| Parameter | Type | Description | |
|---|---|---|---|
eventId | integer | required | The Ticket Pulse event ID. |
Query parameters
| Parameter | Type | Description | |
|---|---|---|---|
key | string | required | Your private API key. |
wp_user_id | integer | required | The external user ID who owns the order. |
Request body
{
"tickets": [
{
"ticket_id": "a3f9b", // string, required — ticket reference (id field)
"first_name": "Jane", // string, required
"last_name": "Doe", // string, required
"email": "[email protected]", // string, required
"tel": "+31612345678" // string, required
}
]
}
Response 200
{
"tickets": [ /* echo of the submitted tickets array */ ],
"all_personalized": true // true when all tickets for this event in the order are done
}
Error responses
| Status | Body | Cause |
|---|---|---|
| 404 | Event not found ({id}) | No event with the given ID exists. |
| 400 | Wordpress user not specified | wp_user_id is missing. |
| 400 | Tickets not specified | Request body is missing the tickets array. |
| 400 | User unauthorized for ticket | The API key's account does not own the ticket's order. |
| 400 | Wordpress user unauthorized for ticket | wp_user_id does not match the order's external user. |
Get single ticket
Returns a temporary signed download URL for the QR code image of a single ticket. Use this URL to display or download the ticket in your own interface.
Query parameters
| Parameter | Type | Description | |
|---|---|---|---|
key | string | required | Your private API key. |
wp_user_id | integer | required | The external user ID. |
ticket_id | string | required | The ticket reference (id field from the tickets endpoint). |
Response 200
"https://ticket-pulse.com/files/tickets/ticket_a3f9b.png?secret=eyJ0..."
Error responses
| Status | Body | Cause |
|---|---|---|
| 400 | Wordpress user not specified | wp_user_id is missing. |
| 400 | Ticket id not specified | ticket_id is missing. |
| 401 | Ticket not found | No ticket with the given reference exists. |
| 401 | Not allowed to see this ticket | The ticket does not belong to the specified external user. |
| 401 | File not found | The ticket QR image has not been generated yet (ticket may not be active). |
Create order
Creates a new order in Ticket Pulse and links it to your external platform's order. Stock is reserved for each ticket type. If you pass a tp_order_id, the existing order's status is updated to Processing instead of creating a new order.
Query parameters
| Parameter | Type | Description | |
|---|---|---|---|
key | string | required | Your private API key. |
Request body
{
// Pass tp_order_id to update an existing order to Processing.
// Omit it to create a new order — order_lines is then required.
"tp_order_id": 123, // integer, optional
"wp_order_id": "wc_456", // string, optional — your platform's order ID
"wp_user_id": 789, // integer, optional — your platform's user ID
"payment_method_title": "iDEAL", // string, optional
"payment_method": "ideal", // string, optional
"ip_address": "1.2.3.4", // string, optional
"currency": "EUR", // string, optional
"order_total": 59.90, // float, optional
"date_created": "2025-04-11T10:00:00Z", // string, optional — ISO 8601
"date_paid": "2025-04-11T10:01:00Z", // string, optional — ISO 8601
"locale": "nl", // string, optional
"my_tickets_url": "https://yoursite.com/my-tickets", // string, optional
"billing_information": {
"first_name": "Jane",
"last_name": "Doe",
"address": "Kerkstraat 1",
"city": "Amsterdam",
"postal_code": "1234 AB",
"country": "NL",
"email": "[email protected]",
"phone": "+31612345678"
},
"order_lines": [ // required when creating a new order
{
"tp_event_ticket_id": 45, // integer, optional — Ticket Pulse ticket type ID
"name": "General Admission", // string, required
"quantity": 2, // integer, required
"product_id": 101, // integer, required — your platform's product ID
"order_item_type": "line_item", // string, required — see type values below
"unit_price": 29.95 // float, required
}
]
}
Order line types
order_item_type value | Maps to |
|---|---|
line_item | Ticket / digital item |
shipping | Shipping fee |
fee | Surcharge |
coupon | Coupon / discount |
| any other value | Other |
Response 200
Order created
Error responses
| Status | Body | Cause |
|---|---|---|
| 404 | Incorrect request | Request body is empty or not valid JSON. |
| 404 | Ticket Pulse order does not exist | tp_order_id was provided but no matching order was found. |
| 403 | You do not have access to this order | The order belongs to a different account. |
| 404 | No order lines specified | Creating a new order requires at least one entry in order_lines. |
Get order tickets
Returns a temporary signed download URL for the complete ticket PDF for an order. The PDF includes all personalised tickets for that order.
Query parameters
| Parameter | Type | Description | |
|---|---|---|---|
key | string | required | Your private API key. |
wp_user_id | integer | required | The external user ID. |
order_id | string | required | The Ticket Pulse order reference (order_id field from the tickets endpoint). |
Response 200
"https://ticket-pulse.com/files/tickets/order_123_tickets?secret=eyJ0..."
Error responses
| Status | Body | Cause |
|---|---|---|
| 400 | Wordpress user not specified | wp_user_id is missing. |
| 401 | Order not specified | order_id is missing. |
| 401 | Order not found | No order with the given reference exists. |
| 401 | Not allowed to see this order | The order does not belong to the specified external user. |
| 401 | File not found | The ticket PDF has not been generated yet — all tickets for each event in the order must be personalised first. |