TicketOpus

Developers

TicketOpus External API

Use the External API to sync catalog, availability, bookings, check-in, pickup logistics, and distribution inventory with reseller, marketplace, mobile, and operations systems.

Base URL https://www.ticketopus.com/api/external/v1

Authentication

API keys are company scoped.

Each company creates API clients in Admin, then grants scopes for the integration. Send the key in X-TicketOpus-Api-Key or as a bearer token.

curl -H "X-TicketOpus-Api-Key: top_xxx" \
  https://www.ticketopus.com/api/external/v1/companies/art-and-craft-studio/items

Scopes

Grant the narrowest access the client needs.

summary:readCompany profile, locations, categories, and users.
availability:readItems, custom fields, rates, availability, crew, and pickup options.
bookings:readBooking list and detailed reservation records.
bookings:writeDry-run validation, booking creation, cancellation, and notes.
checkin:readConfigured check-in statuses.
checkin:writeBarcode-based booking or participant check-in.
crew:readStructured crew role directory.
pickup:readLodgings and availability-specific pickup choices.
distribution:readChannel listing feed with allocated capacity.

Reference

External API endpoints

Method Path Scope Purpose
GET/companies/{company}summary:readCompany metadata, branding, capabilities, locations, and categories.
GET/companies/{company}/userssummary:readActive admin users visible to integrations.
GET/companies/{company}/itemsavailability:readBookable items with rates, variants, program rules, and custom fields.
GET/companies/{company}/items/{item}availability:readSingle item by id or URL name.
GET/companies/{company}/items/{item}/custom-fieldsavailability:readCheckout question schema and priced options for one item.
GET/companies/{company}/availabilitiesavailability:readDate-range availability with status, capacity, holds, and price.
GET/companies/{company}/availabilities/{availabilityId}availability:readAvailability detail with rates, crew, fields, and pickup options.
POST/companies/{company}/availabilities/{availabilityId}/bookings/validatebookings:writeDry-run a booking without writing records.
POST/companies/{company}/availabilities/{availabilityId}/bookingsbookings:writeCreate an externally sourced booking with idempotency support.
GET/companies/{company}/bookingsbookings:readSearch booking records by date range and status.
GET/companies/{company}/bookings/{bookingId}bookings:readBooking detail, participants, payments, answers, notes, and attribution.
DELETE/companies/{company}/bookings/{bookingId}bookings:writeCancel a booking after policy evaluation.
GET/companies/{company}/bookings/{bookingId}/cancellation-previewbookings:writePreview refund and cancellation rule outcome.
POST/companies/{company}/bookings/{bookingId}/notesbookings:writeAdd an auditable partner note.
PUT/companies/{company}/checkincheckin:writeCheck in a participant or booking by barcode, ticket, voucher, or external id.
GET/companies/{company}/checkin-statusescheckin:readCompany-specific check-in status choices.
GET/companies/{company}/rolescrew:readCrew role directory for staff scheduling integrations.
GET/companies/{company}/lodgingspickup:readLodging and hotel pickup directory.
GET/companies/{company}/availabilities/{availabilityId}/lodgingspickup:readPickup options allowed for a specific availability.
GET/companies/{company}/distribution-feeddistribution:readReseller feed with channel listings and allocated capacity.

Workflow

Recommended booking flow

1Fetch item schema

Read item rates, variants, and custom fields.

2Search availability

Choose a bookable availability and pickup option.

3Validate

Dry-run quantity, custom answers, voucher, and lodging.

4Create

Post with an idempotency key, customer data, participants, and payment amount.

5Operate

Use booking detail, notes, check-in, and cancellation preview after confirmation.

Errors

HTTP status codes

400Validation failed, capacity changed, or booking operation was rejected.
401API key is missing or invalid.
403The key is valid but missing the required scope.
404Company, item, availability, booking, or barcode was not found.
429Rate limit exceeded. Retry after the returned Retry-After value.

Example

Create an external booking

curl -X POST \
  -H "Content-Type: application/json" \
  -H "X-TicketOpus-Api-Key: top_xxx" \
  https://www.ticketopus.com/api/external/v1/companies/art-and-craft-studio/availabilities/00000000-0000-0000-0000-000000000000/bookings \
  -d '{
    "customerName": "Avery Morgan",
    "customerEmail": "[email protected]",
    "requestedQuantity": 2,
    "idempotencyKey": "reseller-order-8437",
    "voucherNumber": "FH-12345",
    "externalId": "reseller-booking-8437",
    "amountPaid": 90.00,
    "customFieldAnswers": [
      { "customFieldId": "00000000-0000-0000-0000-000000000000", "value": "yes" }
    ],
    "participants": [
      { "name": "Avery Morgan", "customerTypeName": "Adult" },
      { "name": "Riley Morgan", "customerTypeName": "Adult" }
    ]
  }'