SpeakerTravel Blog

Automate Speaker Travel with the SpeakerTravel API


For most conferences, importing speakers from Sessionize or a spreadsheet is all you need. But some organizers run recurring events, have speakers coming from multiple systems, or want travel data flowing into their own dashboards. That's what the API is for.

It's a REST API. Authenticate with a bearer token, make requests against https://app.speaker.travel/api/v1/, get JSON back. The full OpenAPI spec lives at https://app.speaker.travel/swagger/v1/swagger.json, and there's an interactive playground in the API docs if you want to poke around before writing any code.

What you can do

The API covers two areas: events and travellers.

For events, you can list all your events and get their details: dates, location, nearest airport, recommended arrival and departure dates.

For travellers, you can list everyone invited to an event (with their status, budget, and amount spent), get full booking details for a specific traveller (flight segments, train segments, PNR, ticket numbers), and invite new travellers programmatically.

That last one is the interesting bit. Instead of uploading a spreadsheet, you POST a traveller invitation and the speaker gets their booking link right away. Handy if your speaker data lives somewhere other than Sessionize, or if you're scripting the setup for multiple events.

Getting an access token

Go to your profile page in SpeakerTravel and find API & access tokens. Create a token, give it a name that reminds you what it's for ("Power Automate integration", "reporting script", whatever), and optionally set an expiration date.

Then pass it as a bearer token:

Authorization: Bearer your-token-here

Inviting a speaker

Here's what inviting a speaker looks like in practice:

POST /api/v1/events/my-conference-2026/travellers
Content-Type: application/json
Authorization: Bearer your-token-here

{
"name": "Jane Speaker",
"email": "jane@example.com",
"nearestAirportIataCode": "AMS",
"allowedBookingClass": 10,
"allowBookingRoundTrip": true,
"allowBookingOneWay": false,
"allowBookingMultiCity": false,
"budgetType": 10,
"budgetAmount": 500.00,
"allowedPassengers": 1
}

The numeric values for booking class and budget type are documented in the API playground. The short version: set allowedBookingClass to the cabin you want (economy, premium economy, business, first) and budgetType to fixed, disabled, or default. The response gives you back the full traveller record including their status and booking page link.

You can set the same options here that you'd set through the import wizard: budget, booking class, allowed trip types, number of passengers, and travel date window. If you've enabled auto-approval for your event, speakers invited via the API benefit from it too.

Checking booking status

Once speakers are invited, you can check where they are in the process:

GET /api/v1/events/my-conference-2026/travellers/123

The status field tells you what's happening:

Status What it means
10 Invitation sent, speaker hasn't started yet
20 Speaker is browsing options
30 Booking request submitted, waiting for your approval
40 Approved, tickets being issued
60 Done. Tickets confirmed
9999 Cancelled

Once a traveller hits status 60, the response includes everything: PNR, ticket numbers, individual flight segments with times and airports, or rail segments with stations and operators. Enough to feed into your own travel overview, calendar system, or reporting dashboard.

When to use the API vs. the import wizard

The import wizard is the right choice when you have a list of speakers in Sessionize or a spreadsheet and just want to get them invited. No code needed.

The API makes more sense when:

  • You run multiple events per year and want to script the setup
  • Your speakers come from somewhere other than Sessionize (your own CMS, a custom CfP tool, an internal database)
  • You want booking data flowing back into your own reporting
  • You're building something with Power Automate, Logic Apps, Zapier, or a custom integration
  • You want to react to status changes (like posting to Slack when a speaker's tickets are confirmed)

Rate limits

Operation Limit
Read (GET) 40 requests per minute
Write (POST) 20 requests per minute

If you go over, you'll get a 429 back. For bulk invitations, just space your requests a bit.

Generating a client SDK

The OpenAPI spec is compatible with standard code generators. If you're working in C#, TypeScript, Python, or something else, tools like NSwag, openapi-generator, or Kiota can generate a typed client from the spec.

Getting started

  1. Create an API token from your profile page
  2. GET /api/v1/events to see your events
  3. Pick an event slug and GET /api/v1/events/{slug}/travellers to see who's invited
  4. Try inviting a test speaker with a POST

The interactive playground lets you try all of this in the browser.

Frequently Asked Questions

Does the SpeakerTravel API support webhooks? Not yet. For now, poll the traveller endpoint. If webhook support would unblock something for you, tell us.

Can I create events via the API? Not currently. Events are created in the web interface. The API is focused on the traveller side: inviting, tracking, and pulling booking data.

Is there a sandbox or test environment? No separate sandbox. Create a test event and invite yourself as a speaker to try the full flow end-to-end.

What format are dates in? ISO 8601. Timestamps come back as 2026-09-15T00:00:00.000Z, and the invitation endpoint accepts date-only values like 2026-09-15.

Simplify your conference speaker flight and train booking