Discovery — Events
The Discovery API allows you to search and browse events. Searches can be filters related to events, venues, or performers. Use these endpoints to display available events to your customers and to obtain the event_id needed for seat browsing, quotes, and orders.
Authentication Required
All Discovery endpoints require a valid Bearer token. See Authentication to get your token.
Endpoints
| Method | Endpoint | Description |
|---|---|---|
GET | /v1/events | Search and list events |
GET | /v1/events/{event_id} | Get a single event by ID |
1.1 — Search Events
Returns a paginated list of events matching your search criteria.
Endpoint
GET /v1/events
Query Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
q | string | No | Free text search across event name |
event_id | string | No | Filter by a specific event ID |
venue_id | string | No | Filter by venue ID |
venue_name | string | No | Partial match on venue name |
performer_id | string | No | Filter by performer ID |
performer_name | string | No | Partial match on performer name |
date_from | date | No | Events from this date YYYY-MM-DD. Defaults to today |
date_to | date | No | Events up to this date YYYY-MM-DD |
limit | integer | No | Results per page. Default: 20, Max: 100 |
offset | integer | No | Zero-based offset for pagination. Default: 0 |
Request
cURL
curl "https://api.ticketbuyback.com/partner/v1/events?q=Patriots&date_from=2026-09-01&limit=20" \
-H "Authorization: Bearer <token>" \
-H "Accept: application/json"
JavaScript
const params = new URLSearchParams({
q: "Patriots",
date_from: "2026-09-01",
limit: 20,
});
const response = await fetch(
`https://api.ticketbuyback.com/partner/v1/events?${params}`,
{
headers: {
Authorization: `Bearer ${token}`,
Accept: "application/json",
},
}
);
const { data, pagination } = await response.json();
Response — 200 OK
{
"success": true,
"data": [
{
"event_id": "9bab6d6a4b5641931cab9fd942e81242",
"event_name": "New England Patriots vs. Buffalo Bills",
"event_datetime_utc": "2026-09-13T17:00:00Z",
"event_datetime_local": "2026-09-13T13:00:00",
"event_timezone": "America/New_York",
"venue": {
"venue_id": "ven_gillette_001",
"venue_name": "Gillette Stadium",
"city": "Foxborough",
"state": "MA",
"country": "US"
},
"performers": [
{
"performer_id": "perf_ne_patriots",
"performer_name": "New England Patriots"
},
{
"performer_id": "perf_buf_bills",
"performer_name": "Buffalo Bills"
}
]
}
],
"pagination": {
"total": 47,
"limit": 20,
"offset": 0,
"has_more": true
},
"meta": {
"request_id": "abc123",
"timestamp": "2026-02-26T10:30:00Z"
}
}
Response Fields
| Field | Description |
|---|---|
event_id | Unique event identifier — used in all downstream requests |
event_name | Display name of the event |
event_datetime_utc | Event start time in UTC |
event_datetime_local | Event start time in the venue's local timezone |
event_timezone | IANA timezone string for the venue |
venue | Venue details — ID, name, city, state, country |
performers | Array of performers appearing at the event |
Pagination
Use limit and offset to page through results. When has_more is true, increment offset by limit to fetch the next page.
Fetch all pages — JavaScript
async function fetchAllEvents(query) {
const limit = 100;
let offset = 0;
let allEvents = [];
let hasMore = true;
while (hasMore) {
const params = new URLSearchParams({ q: query, limit, offset });
const res = await fetch(
`https://api.ticketbuyback.com/partner/v1/events?${params}`,
{ headers: { Authorization: `Bearer ${token}` } }
);
const { data, pagination } = await res.json();
allEvents = [...allEvents, ...data];
hasMore = pagination.has_more;
offset += limit;
}
return allEvents;
}
1.2 — Get Single Event
Returns full details for a single event by its ID.
Endpoint
GET /v1/events/{event_id}
Path Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
event_id | string | Yes | The event ID from the Search Events response |
Request
cURL
curl "https://api.ticketbuyback.com/partner/v1/events/9bab6d6a4b5641931cab9fd942e81242" \
-H "Authorization: Bearer <token>" \
-H "Accept: application/json"
JavaScript
const response = await fetch(
"https://api.ticketbuyback.com/partner/v1/events/9bab6d6a4b5641931cab9fd942e81242",
{
headers: {
Authorization: `Bearer ${token}`,
Accept: "application/json",
},
}
);
const { data } = await response.json();
Response — 200 OK
Same shape as a single item from the Search Events response above.
Error Scenarios
| Scenario | HTTP Status | Error Code |
|---|---|---|
| Missing or invalid Bearer token | 401 | UNAUTHORIZED |
| Token expired | 401 | TOKEN_EXPIRED |
| Event not found | 404 | EVENT_NOT_FOUND |
| Event date has passed | 422 | EVENT_EXPIRED |
Next Step
Once you have an event_id, browse available sections and rows: