Wild Card
Wild CardTicketing API

API reference

Authenticate every request with your client API key as a bearer token. All amounts are in pence and all times are ISO 8601. Every request is scoped to your own events and sales.

Sell a sharable ticket (a group, such as a table of 10): create a ticket type with is_sharable and a group_size, then issue a group to an owner by email with POST /events/{id}/allocations. Wild Card emails the owner a code to add the group in the app and share the seats; each friend claims one.

This is API v1. Within v1 we only add fields and endpoints, never remove or repurpose them.

Base URL

https://api.thewildcardapp.com/api/v1

Authentication

Authorization: Bearer wc_live_...

Your account

GET/me

Your client profile and Stripe Connect status.

Example request

curl https://api.thewildcardapp.com/api/v1/me \
  -H "Authorization: Bearer wc_live_..."

Example response

{
  "organiser": {
    "id": 3,
    "name": "The Brickworks",
    "type": "standard",
    "status": "active"
  },
  "stripe": { "connect_ready": true }
}

Events

Create and manage the events you sell tickets to.

GET/events

List your events, each with its ticket types.

Example request

curl https://api.thewildcardapp.com/api/v1/events \
  -H "Authorization: Bearer wc_live_..."

Example response

{
  "events": [
    {
      "id": 7,
      "name": "Friday Live Session",
      "start_date": "2026-12-05T20:00:00+00:00",
      "is_active": true,
      "ticket_types": []
    }
  ]
}
POST/events

Create an event.

Body

namestringrequiredEvent name.
descriptionstringOptional description.
start_datedate-timeISO 8601 start.
end_datedate-timeISO 8601 end, on or after start.

Example request

curl -X POST https://api.thewildcardapp.com/api/v1/events \
  -H "Authorization: Bearer wc_live_..." \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Friday Live Session",
    "start_date": "2026-12-05T20:00:00+00:00"
  }'

Example response

{
  "event": {
    "id": 7,
    "name": "Friday Live Session",
    "start_date": "2026-12-05T20:00:00+00:00",
    "is_active": true,
    "ticket_types": []
  }
}
GET/events/{id}

Get one event with its ticket types.

Parameters

idintegerrequiredEvent id (path).

Example request

curl https://api.thewildcardapp.com/api/v1/events/7 \
  -H "Authorization: Bearer wc_live_..."

Example response

{
  "event": {
    "id": 7,
    "name": "Friday Live Session",
    "is_active": true,
    "ticket_types": [
      { "id": 42, "name": "General admission", "price_pence": 1500, "sold": 37 }
    ]
  }
}
PATCH/events/{id}

Update an event.

Body

namestring
descriptionstring
start_datedate-time
end_datedate-time
is_activebooleanOn/off sale.

Example request

curl -X PATCH https://api.thewildcardapp.com/api/v1/events/7 \
  -H "Authorization: Bearer wc_live_..." \
  -H "Content-Type: application/json" \
  -d '{ "is_active": true }'

Example response

{ "event": { "id": 7, "is_active": true } }

Ticket types

The tickets on an event. Prices are in pence; 0 is a free allocation.

POST/events/{id}/ticket-types

Add a ticket type to an event.

Body

namestringrequirede.g. General admission.
price_penceintegerrequiredPrice in pence (0 = free).
descriptionstring
currencystringDefaults to gbp.
capacityintegerNull = unlimited.
max_per_orderintegerCap per order.
plus_onlybooleanRestrict to Wild Card Plus members.
is_sharablebooleanMake this a sharable group ticket (e.g. a table of N). Issue groups with POST /events/{id}/allocations.
group_sizeintegerSeats per group. Required when is_sharable is true.
is_activebooleanOn/off sale.

Set is_sharable + group_size to make a group ticket (the example below).

Example request

curl -X POST https://api.thewildcardapp.com/api/v1/events/7/ticket-types \
  -H "Authorization: Bearer wc_live_..." \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Ringside table",
    "price_pence": 0,
    "is_sharable": true,
    "group_size": 10
  }'

Example response

{
  "ticket_type": {
    "id": 42,
    "event_id": 7,
    "name": "Ringside table",
    "price_pence": 0,
    "is_sharable": true,
    "group_size": 10,
    "is_active": true,
    "sold": 0
  }
}
PATCH/ticket-types/{id}

Update a ticket type (same fields as create, all optional).

Example request

curl -X PATCH https://api.thewildcardapp.com/api/v1/ticket-types/42 \
  -H "Authorization: Bearer wc_live_..." \
  -H "Content-Type: application/json" \
  -d '{ "is_active": false }'

Example response

{ "ticket_type": { "id": 42, "is_active": false } }

Sharable tickets

A sharable ticket type is a group, for example a table of 10. Issue a group to an owner by email: Wild Card emails them a code to add the group in the app, then they share a link and each friend claims one seat. Available to every client.

POST/events/{id}/allocations

Issue a sharable (group) ticket to an owner.

Parameters

idintegerrequiredEvent id (path).

Body

ticket_type_idintegerrequiredA sharable ticket type on this event.
owner_emailemailrequiredThe owner is emailed a claim code.
owner_namestringShown on the share page.
quantityintegerSeats in this group. Defaults to the type's group_size.
labelstringe.g. Ringside table.
codestringOptional preferred share code; auto-generated if omitted.

Example request

curl -X POST https://api.thewildcardapp.com/api/v1/events/7/allocations \
  -H "Authorization: Bearer wc_live_..." \
  -H "Content-Type: application/json" \
  -d '{
    "ticket_type_id": 42,
    "owner_email": "owner@example.com",
    "quantity": 10
  }'

Example response

{
  "allocation": {
    "id": 5,
    "uuid": "9d1f7c2a-4b6e-4f0a-9c3d-2e1b5a7c8d9e",
    "event_id": 7,
    "ticket_type_id": 42,
    "label": "Ringside table",
    "quantity": 10,
    "owner_email": "owner@example.com",
    "share_url": "https://thewildcardapp.com/t/7KQ4M1P2",
    "claimed": 0,
    "remaining": 10,
    "is_active": true
  }
}

Orders

What has been purchased from you. Amounts in pence.

GET/events/{id}/orders

List orders for an event.

Parameters

statusstringFilter: pending, paid, failed, cancelled.
per_pageintegerPage size, up to 100.

Example request

curl "https://api.thewildcardapp.com/api/v1/events/7/orders?status=paid" \
  -H "Authorization: Bearer wc_live_..."

Example response

{
  "orders": [
    {
      "uuid": "1b2c3d4e-0000-1111-2222-333344445555",
      "status": "paid",
      "total_pence": 3225,
      "tickets": 2,
      "paid_at": "2026-11-20T18:04:11+00:00"
    }
  ]
}
GET/orders/{uuid}

Get one order by its uuid.

Example request

curl https://api.thewildcardapp.com/api/v1/orders/1b2c3d4e-0000-1111-2222-333344445555 \
  -H "Authorization: Bearer wc_live_..."

Example response

{
  "order": {
    "uuid": "1b2c3d4e-0000-1111-2222-333344445555",
    "event_id": 7,
    "status": "paid",
    "subtotal_pence": 3000,
    "booking_fee_pence": 225,
    "total_pence": 3225,
    "tickets": 2,
    "paid_at": "2026-11-20T18:04:11+00:00"
  }
}