Skip to content

REST API Overview

REST API Overview

Building a custom frontend, syncing events with a mobile app, or integrating with a third-party service requires programmatic access to your event data. Tickets Please exposes a full REST API that covers events, venues, organizers, tickets, attendees, cart operations, checkout, and more. The API follows WordPress REST conventions, so if you have worked with the WordPress REST API before, you already know how authentication and request patterns work.

API Namespaces

Tickets Please registers endpoints under two namespaces:

NamespaceResourcesPurpose
tribe/events/v1Events, Venues, OrganizersEvent content management
tribe/tickets/v1Tickets, Attendees, Cart, Checkout, Refund Requests, My Tickets, Guest OrderTicketing and purchasing

All endpoints are prefixed with your site’s REST URL. For a site at example.com, the base URLs are:

https://example.com/wp-json/tribe/events/v1/
https://example.com/wp-json/tribe/tickets/v1/

Authentication

The API uses standard WordPress REST API authentication. Which method you use depends on where your requests originate.

Logged-in users (same site): WordPress nonce authentication. Include the X-WP-Nonce header with a nonce generated by wp_create_nonce( 'wp_rest' ). This is the default method for JavaScript running on your WordPress site.

External applications: Use Application Passwords (built into WordPress 5.6+) or HTTP Basic Auth over HTTPS. Generate an Application Password under Users > Profile > Application Passwords in the WordPress admin.

Public endpoints: Some read-only endpoints (event listings, venue details) are accessible without authentication, following the same visibility rules as your site’s frontend.

Events Endpoints

The events resource at tribe/events/v1/events supports full CRUD operations.

List Events

GET /wp-json/tribe/events/v1/events

Query parameters:

ParameterTypeDescription
pageIntegerPage number for pagination (default: 1)
per_pageIntegerEvents per page (default: 10, max: 50)
start_dateStringFilter events starting on or after this date (YYYY-MM-DD)
end_dateStringFilter events starting on or before this date (YYYY-MM-DD)
searchStringSearch event titles and content
categoriesStringComma-separated category term IDs
tagsStringComma-separated tag term IDs
featuredBooleanFilter to featured events only
venueIntegerFilter by venue post ID
organizerIntegerFilter by organizer post ID
statusStringPost status (publish, draft, pending, etc.)

Single Event

GET /wp-json/tribe/events/v1/events/{id}

Create Event

POST /wp-json/tribe/events/v1/events

Requires authentication with edit_posts capability.

Update Event

PUT /wp-json/tribe/events/v1/events/{id}

Delete Event

DELETE /wp-json/tribe/events/v1/events/{id}

Venues and Organizers

Venues and organizers follow the same CRUD pattern:

GET /wp-json/tribe/events/v1/venues
GET /wp-json/tribe/events/v1/venues/{id}
POST /wp-json/tribe/events/v1/venues
PUT /wp-json/tribe/events/v1/venues/{id}
DELETE /wp-json/tribe/events/v1/venues/{id}
GET /wp-json/tribe/events/v1/organizers
GET /wp-json/tribe/events/v1/organizers/{id}
POST /wp-json/tribe/events/v1/organizers
PUT /wp-json/tribe/events/v1/organizers/{id}
DELETE /wp-json/tribe/events/v1/organizers/{id}

Tickets Endpoints

The tickets namespace handles everything related to purchasing and attendee management.

GET /wp-json/tribe/tickets/v1/tickets
GET /wp-json/tribe/tickets/v1/tickets/{id}
POST /wp-json/tribe/tickets/v1/tickets
PUT /wp-json/tribe/tickets/v1/tickets/{id}
DELETE /wp-json/tribe/tickets/v1/tickets/{id}
GET /wp-json/tribe/tickets/v1/attendees
GET /wp-json/tribe/tickets/v1/attendees/{id}
POST /wp-json/tribe/tickets/v1/attendees
PUT /wp-json/tribe/tickets/v1/attendees/{id}
DELETE /wp-json/tribe/tickets/v1/attendees/{id}

Cart and Checkout

GET /wp-json/tribe/tickets/v1/cart
POST /wp-json/tribe/tickets/v1/cart
POST /wp-json/tribe/tickets/v1/checkout

Additional Resources

POST /wp-json/tribe/tickets/v1/refund-requests
GET /wp-json/tribe/tickets/v1/my-tickets
GET /wp-json/tribe/tickets/v1/guest-order

The my-tickets endpoint returns tickets for the authenticated user. The guest-order endpoint lets unauthenticated buyers look up their order by email and order ID.

Auto-Generated Documentation

Send a GET request to the documentation endpoint for a machine-readable list of all available routes, parameters, and response schemas:

GET /wp-json/tribe/events/v1/doc

This returns a JSON document describing every endpoint in the tribe/events/v1 namespace with parameter types, required fields, and descriptions.

Response Format

All endpoints return standard WordPress REST API response structures. List endpoints include pagination headers:

  • X-WP-Total — total number of items
  • X-WP-TotalPages — total number of pages

Responses use standard HTTP status codes: 200 for success, 201 for created, 400 for bad requests, 401 for unauthorized, 404 for not found, and 500 for server errors.

Common Questions

Can I access the API without authentication? Read-only access to published events, venues, and organizers works without authentication. Creating, updating, deleting resources, and accessing attendee or order data requires authentication.

What permissions do I need to create events via the API? The same WordPress capabilities as creating events in the admin. Any user with the edit_posts capability can create events. Managing tickets and attendees requires edit_others_posts.

Is there rate limiting? Tickets Please does not add rate limiting beyond what your server or hosting provider enforces. If you are building a high-traffic integration, consider caching responses on your end.

Can I filter the API response fields? Yes. Use the standard WordPress _fields parameter to request only specific fields: GET /wp-json/tribe/events/v1/events?_fields=id,title,start_date.

Does the API support batch requests? The WordPress REST API batch endpoint (/wp-json/batch/v1) works with Tickets Please routes, allowing you to combine multiple operations into a single HTTP request.

How do I look up attendees for a specific event? Filter the attendees endpoint by event: GET /wp-json/tribe/tickets/v1/attendees?event_id=123.

Next Steps