Connector Reference

Each connector section covers the authentication method, required credentials, available data, known limitations, and a TypeScript code example.

Legend

SymbolMeaning
Fully supported
⚠️Partial / requires extra access
Not available

Using connectors in TypeScript

Install the Spekta connector package (or import directly from your repo):

import { createConnector } from '@/lib/connectors/registry';

const connector = createConnector('eventbrite', {
  type: 'oauth2',
  accessToken: process.env.EVENTBRITE_ACCESS_TOKEN!,
});

const events = await connector.getEvents({ page: 1, pageSize: 50 });

All connectors share the same interface:

interface BaseConnector {
  getEvents(options?: PaginationOptions): Promise<PaginatedResult<UnifiedEvent>>;
  getTickets(eventId: string, options?: PaginationOptions): Promise<PaginatedResult<UnifiedTicket>>;
  getAttendees(eventId: string, options?: PaginationOptions): Promise<PaginatedResult<UnifiedAttendee>>;
  getRevenue(eventId: string): Promise<UnifiedRevenue>;
  healthCheck(): Promise<HealthCheckResult>;
}

1. Eventbrite

AuthOAuth 2.0
Websitehttps://www.eventbrite.com
API Docshttps://www.eventbrite.com/platform/api

Required credentials

FieldWhere to find it
clientIdAccount Settings → Developer → Your apps → Client ID
clientSecretAccount Settings → Developer → Your apps → Client Secret
accessTokenReturned after the OAuth flow
refreshTokenReturned after the OAuth flow

Data available

EventsTicketsAttendeesRevenue

Known limitations

  • Webhook-based real-time updates require an Eventbrite-approved webhook endpoint.
  • Large organisations with thousands of events may hit the 1 000 events/page API limit; Spekta paginates automatically.

Code example

const connector = createConnector('eventbrite', {
  type: 'oauth2',
  accessToken: 'EAxxxxxx',
  refreshToken: 'RExxxxxx',
  clientId: 'your_client_id',
  clientSecret: 'your_client_secret',
});

const revenue = await connector.getRevenue('event-id-123');
console.log(revenue.grossRevenue, revenue.currency);

2. Weezevent

AuthAPI key (query parameter)
Websitehttps://www.weezevent.com
API Docshttps://api.weezevent.com/doc

Required credentials

FieldWhere to find it
apiKeyMy account → API → API key

Data available

EventsTicketsAttendeesRevenue

Known limitations

  • Weezevent returns amounts as floating-point EUR values; Spekta passes these through as-is (no minor-unit conversion needed).

Code example

const connector = createConnector('weezevent', {
  type: 'api_key',
  apiKey: 'wze_live_xxxxxxxx',
});

const attendees = await connector.getAttendees('event-id-456', { page: 1 });

3. TicketTailor

AuthAPI key (HTTP Basic — key as username, empty password)
Websitehttps://www.tickettailor.com
API Docshttps://developers.tickettailor.com

Required credentials

FieldWhere to find it
apiKeySettings → Integrations → API → Secret key

Data available

EventsTicketsAttendeesRevenue

Known limitations

  • TicketTailor returns dates as UNIX timestamps (seconds); Spekta multiplies by 1 000 to produce JS Date objects.

Code example

const connector = createConnector('ticket-tailor', {
  type: 'api_key',
  apiKey: 'sk_live_xxxxxxxx',
});

const events = await connector.getEvents({ since: new Date('2025-01-01') });

4. DICE

AuthAPI key (Bearer token)
Websitehttps://dice.fm
API Docshttps://api.dice.fm/docs

Required credentials

FieldWhere to find it
apiKeyDICE Partner Hub → Settings → API credentials

Data available

EventsTicketsAttendeesRevenue

Known limitations

  • Attendee-level data is not exposed through the DICE partner API; only aggregate ticket counts are available.

Code example

const connector = createConnector('dice', {
  type: 'api_key',
  apiKey: 'dice_live_xxxxxxxx',
});

const tickets = await connector.getTickets('event-id-789');

5. Shotgun

AuthAPI key (Bearer token)
Websitehttps://shotgun.live
API Docshttps://developers.shotgun.live

Required credentials

FieldWhere to find it
apiKeyPromoter dashboard → Settings → API

Data available

EventsTicketsAttendeesRevenue

Code example

const connector = createConnector('shotgun', {
  type: 'api_key',
  apiKey: 'sg_live_xxxxxxxx',
});

const revenue = await connector.getRevenue('event-abc');

6. See Tickets (UK)

AuthAPI key (X-API-Key header)
Websitehttps://www.seetickets.com
API Docshttps://developers.seetickets.com

Required credentials

FieldWhere to find it
apiKeyPromoter portal → Account → API keys

Data available

EventsTicketsAttendeesRevenue

Code example

const connector = createConnector('see-tickets', {
  type: 'api_key',
  apiKey: 'see_live_xxxxxxxx',
});

const events = await connector.getEvents({ pageSize: 100 });

7. Ticketmaster

AuthAPI key (query parameter)
Websitehttps://www.ticketmaster.com
API Docshttps://developer.ticketmaster.com/products-and-docs/apis/discovery-api/v2/

Required credentials

FieldWhere to find it
apiKeydeveloper.ticketmaster.com → My Apps → Consumer Key

Data available

EventsTicketsAttendeesRevenue

Known limitations

  • The Discovery API (public) provides event listings only. Ticket sales, attendees, and revenue data require the Ticketmaster Partner API, which is available only to approved venue and promoter partners. Contact Ticketmaster directly if you need this access.

Code example

const connector = createConnector('ticketmaster', {
  type: 'api_key',
  apiKey: 'your_consumer_key',
});

const events = await connector.getEvents({ page: 1, pageSize: 100 });

8. AXS

AuthOAuth 2.0
Websitehttps://www.axs.com
API Docshttps://api.axs.com/docs

Required credentials

FieldWhere to find it
clientIdAXS Developer Portal → My Apps → Client ID
clientSecretAXS Developer Portal → My Apps → Client Secret
accessTokenReturned after OAuth flow
refreshTokenReturned after OAuth flow

Data available

EventsTicketsAttendeesRevenue

Known limitations

  • AXS requires an approved partner account for API access. Contact partner@axs.com.

Code example

const connector = createConnector('axs', {
  type: 'oauth2',
  accessToken: 'axs_at_xxxxxxxx',
  refreshToken: 'axs_rt_xxxxxxxx',
  clientId: 'axs_client_id',
  clientSecret: 'axs_client_secret',
});

const attendees = await connector.getAttendees('axs-event-id');

9. FIXR

AuthAPI key (Bearer token)
Websitehttps://fixr.co
API Docshttps://api.fixr.co/docs

Required credentials

FieldWhere to find it
apiKeyFIXR Organiser → Settings → API key

Data available

EventsTicketsAttendeesRevenue

Code example

const connector = createConnector('fixr', {
  type: 'api_key',
  apiKey: 'fixr_live_xxxxxxxx',
});

const revenue = await connector.getRevenue('fixr-event-id');

10. Billetto

AuthAPI key (Token header)
Websitehttps://billetto.co.uk
API Docshttps://api.billetto.co.uk/docs

Required credentials

FieldWhere to find it
apiKeyAccount Settings → API token

Data available

EventsTicketsAttendeesRevenue

Known limitations

  • Revenue is returned in minor units (cents/pence); Spekta divides by 100 automatically.

Code example

const connector = createConnector('billetto', {
  type: 'api_key',
  apiKey: 'blt_live_xxxxxxxx',
});

const revenue = await connector.getRevenue('billetto-event-id');
// grossRevenue is already in major units (e.g. 1234.50)

11. Eventix

AuthOAuth 2.0
Websitehttps://eventix.io
API Docshttps://docs.eventix.io

Required credentials

FieldWhere to find it
clientIdEventix Dashboard → Integrations → OAuth → Client ID
clientSecretEventix Dashboard → Integrations → OAuth → Client Secret
accessTokenReturned after OAuth flow
refreshTokenReturned after OAuth flow

Data available

EventsTicketsAttendeesRevenue

Code example

const connector = createConnector('eventix', {
  type: 'oauth2',
  accessToken: 'evx_at_xxxxxxxx',
  refreshToken: 'evx_rt_xxxxxxxx',
  clientId: 'evx_client_id',
  clientSecret: 'evx_client_secret',
});

const events = await connector.getEvents();

12. Yurplan

AuthAPI key (Bearer token)
Websitehttps://www.yurplan.com
API Docshttps://api.yurplan.com/docs

Required credentials

FieldWhere to find it
apiKeyYurplan organiser account → API → Generate key

Data available

EventsTicketsAttendeesRevenue

Code example

const connector = createConnector('yurplan', {
  type: 'api_key',
  apiKey: 'yur_live_xxxxxxxx',
});

const attendees = await connector.getAttendees('yurplan-event-id');

13. Mapado

AuthAPI key (Bearer token)
Websitehttps://www.mapado.com
API Docshttps://developers.mapado.com

Required credentials

FieldWhere to find it
apiKeyMapado Partner Portal → Settings → API key

Data available

EventsTicketsAttendeesRevenue

Code example

const connector = createConnector('mapado', {
  type: 'api_key',
  apiKey: 'map_live_xxxxxxxx',
});

const events = await connector.getEvents({ pageSize: 50 });

14. HelloAsso

AuthOAuth 2.0
Websitehttps://www.helloasso.com
API Docshttps://api.helloasso.com/v5/docs

Required credentials

FieldWhere to find it
clientIdHelloAsso → Your organisation → API → Client ID
clientSecretHelloAsso → Your organisation → API → Client Secret
accessTokenReturned after OAuth flow
refreshTokenReturned after OAuth flow

Data available

EventsTicketsAttendeesRevenue

Known limitations

  • HelloAsso is primarily a non-profit/association platform. Events sold by for-profit entities may not be accessible.

Code example

const connector = createConnector('helloasso', {
  type: 'oauth2',
  accessToken: 'ha_at_xxxxxxxx',
  refreshToken: 'ha_rt_xxxxxxxx',
  clientId: 'ha_client_id',
  clientSecret: 'ha_client_secret',
});

const revenue = await connector.getRevenue('helloasso-event-id');

15. Festicket

AuthAPI key (Bearer token)
Websitehttps://www.festicket.com
API Docshttps://api.festicket.com/api/v1/docs/

Required credentials

FieldWhere to find it
apiKeyFesticket Partner Portal → Integrations → API key

Data available

EventsTicketsAttendeesRevenue

Code example

const connector = createConnector('festicket', {
  type: 'api_key',
  apiKey: 'fk_live_xxxxxxxx',
});

const tickets = await connector.getTickets('festicket-event-id');

16. Resident Advisor

AuthAPI key (X-Api-Key header)
Websitehttps://ra.co
API Docshttps://ra.co/api/v1/docs

Required credentials

FieldWhere to find it
apiKeyRA Pro → Settings → API integration → API key

Data available

EventsTicketsAttendeesRevenue

Known limitations

  • API access requires an RA Pro account. Standard promoter accounts do not have API access.

Code example

const connector = createConnector('resident-advisor', {
  type: 'api_key',
  apiKey: 'ra_live_xxxxxxxx',
});

const events = await connector.getEvents({ since: new Date('2025-06-01') });

17. Skiddle

AuthAPI key (query parameter)
Websitehttps://www.skiddle.com
API Docshttps://www.skiddle.com/api/

Required credentials

FieldWhere to find it
apiKeySkiddle Promoter → Account → API key

Data available

EventsTicketsAttendeesRevenue

Code example

const connector = createConnector('skiddle', {
  type: 'api_key',
  apiKey: 'skd_live_xxxxxxxx',
});

const revenue = await connector.getRevenue('skiddle-event-id');

18. Ticket Arena

AuthAPI key (Bearer token)
Websitehttps://www.ticketarena.co.uk
API Docshttps://api.ticketarena.co.uk/docs

Required credentials

FieldWhere to find it
apiKeyTicket Arena Promoter → Settings → API credentials

Data available

EventsTicketsAttendeesRevenue

Code example

const connector = createConnector('ticket-arena', {
  type: 'api_key',
  apiKey: 'ta_live_xxxxxxxx',
});

const attendees = await connector.getAttendees('ta-event-id');

19. TicketSellers

AuthAPI key (Token header)
Websitehttps://www.ticketsellers.co.uk
API Docshttps://api.ticketsellers.co.uk/docs

Required credentials

FieldWhere to find it
apiKeyTicketSellers account → Integrations → API key

Data available

EventsTicketsAttendeesRevenue

Code example

const connector = createConnector('ticketsellers', {
  type: 'api_key',
  apiKey: 'ts_live_xxxxxxxx',
});

const events = await connector.getEvents();

20. SeeTickets US

AuthAPI key (X-API-Key header)
Websitehttps://www.seetickets.us
API Docshttps://api.seetickets.us/docs

Required credentials

FieldWhere to find it
apiKeySeeTickets US account → API → Generate key

Data available

EventsTicketsAttendeesRevenue

Code example

const connector = createConnector('seetickets-us', {
  type: 'api_key',
  apiKey: 'seus_live_xxxxxxxx',
});

const revenue = await connector.getRevenue('seus-event-id');

21. Universe

AuthOAuth 2.0
Websitehttps://www.universe.com
API Docshttps://www.universe.com/api-docs

Required credentials

FieldWhere to find it
clientIdUniverse Developer → Apps → Client ID
clientSecretUniverse Developer → Apps → Client Secret
accessTokenReturned after OAuth flow
refreshTokenReturned after OAuth flow

Data available

EventsTicketsAttendeesRevenue

Code example

const connector = createConnector('universe', {
  type: 'oauth2',
  accessToken: 'uni_at_xxxxxxxx',
  refreshToken: 'uni_rt_xxxxxxxx',
  clientId: 'uni_client_id',
  clientSecret: 'uni_client_secret',
});

const events = await connector.getEvents();

22. Accelevents

AuthAPI key (X-API-Key header)
Websitehttps://www.accelevents.com
API Docshttps://api.accelevents.com/v1/docs

Required credentials

FieldWhere to find it
apiKeyAccelevents account → Integrations → API key

Data available

EventsTicketsAttendeesRevenue

Code example

const connector = createConnector('accelevents', {
  type: 'api_key',
  apiKey: 'ae_live_xxxxxxxx',
});

const attendees = await connector.getAttendees('ae-event-id');

23. RegFox

AuthAPI key (query parameter)
Websitehttps://www.regfox.com
API Docshttps://developer.webconnex.com/docs

Required credentials

FieldWhere to find it
apiKeyRegFox / Webconnex account → Integrations → API token

Data available

EventsTicketsAttendeesRevenue

Code example

const connector = createConnector('regfox', {
  type: 'api_key',
  apiKey: 'rfx_live_xxxxxxxx',
});

const revenue = await connector.getRevenue('regfox-event-id');

24. RSVPify

AuthAPI key (Bearer token)
Websitehttps://rsvpify.com
API Docshttps://api.rsvpify.com/v1/docs

Required credentials

FieldWhere to find it
apiKeyRSVPify account → Settings → Integrations → API key

Data available

EventsTicketsAttendeesRevenue

Code example

const connector = createConnector('rsvpify', {
  type: 'api_key',
  apiKey: 'rsvp_live_xxxxxxxx',
});

const attendees = await connector.getAttendees('rsvpify-event-id');

25. Pretix

AuthAPI key (Token header) — self-hosted or Pretix-hosted
Websitehttps://pretix.eu
API Docshttps://docs.pretix.eu/en/latest/api/index.html

Required credentials

FieldWhere to find it
apiKeyPretix admin → Your account → API access → Create token
baseUrlYour Pretix instance URL (e.g. https://pretix.your-domain.com)
organizerYour organiser short-form slug (visible in Pretix URLs)

Data available

EventsTicketsAttendeesRevenue

Known limitations

  • baseUrl is required; Pretix supports self-hosted instances so there is no single API host.
  • The organiser slug is part of all API paths — incorrect slug → 404 errors.

Code example

const connector = createConnector('pretix', {
  type: 'api_key',
  apiKey: 'pretix_live_xxxxxxxx',
  baseUrl: 'https://pretix.your-domain.com',
  organizer: 'your-organizer-slug',
});

const events = await connector.getEvents({ pageSize: 100 });
const revenue = await connector.getRevenue('pretix-event-id');

Provider capability matrix

ProviderAuthEventsTicketsAttendeesRevenue
EventbriteOAuth2
WeezeventAPI key
TicketTailorAPI key
DICEAPI key
ShotgunAPI key
See Tickets (UK)API key
TicketmasterAPI key
AXSOAuth2
FIXRAPI key
BillettoAPI key
EventixOAuth2
YurplanAPI key
MapadoAPI key
HelloAssoOAuth2
FesticketAPI key
Resident AdvisorAPI key
SkiddleAPI key
Ticket ArenaAPI key
TicketSellersAPI key
SeeTickets USAPI key
UniverseOAuth2
AcceleventsAPI key
RegFoxAPI key
RSVPifyAPI key
PretixAPI key