Till integrations
Read-only endpoints for a venue’s till integrations - connecting a
point-of-sale system so its sales link up to Sidedoor reservations. See
Integrations for the full setup
guide, and Tables & floorplan for the
backfill and reconcile actions that use the connection once it’s live. Every
endpoint is operator (client, organiser or admin role, venue-scoped)
- send an
Authorization: Bearertoken from the Authentication flow.
Endpoints
Section titled “Endpoints”| Method | Path | Purpose | Auth |
|---|---|---|---|
| GET | /api/my-venues/:venueId/integrations |
List available providers and this venue’s connection state | operator |
| GET | /api/my-venues/:venueId/integrations/:provider/table-audit |
Table-naming mismatches between the till and your floorplan | operator |
List providers
Section titled “List providers”GET /api/my-venues/:venueId/integrations returns every integration
provider Sidedoor supports, merged with this venue’s own connection state:
whether it’s enabled, its saved config, whether a secret is set (never the
secret itself), and the result of the last connection test.
curl "https://thesidedoor.co/api/my-venues/VENUE_ID/integrations" \ -H "Authorization: Bearer $SIDEDOOR_TOKEN"const res = await fetch("https://thesidedoor.co/api/my-venues/VENUE_ID/integrations", { headers: { Authorization: `Bearer ${process.env.SIDEDOOR_TOKEN}` },});const data = await res.json();$ch = curl_init("https://thesidedoor.co/api/my-venues/VENUE_ID/integrations");curl_setopt_array($ch, [ CURLOPT_RETURNTRANSFER => true, CURLOPT_HTTPHEADER => ["Authorization: Bearer {$token}"],]);$data = json_decode(curl_exec($ch), true);{ "providers": [ { "id": "alliance", "name": "Alliance iPos", "category": "pos", "capabilities": ["sales_by_daterange", "line_items"], "state": { "enabled": true, "secretSet": true, "lastTestAt": "2026-07-01T09:00:00Z", "lastTestOk": true } } ]}Table-naming audit
Section titled “Table-naming audit”Till sales and your Sidedoor floorplan sometimes name or number tables
differently, which can stop sales matching up to reservations
automatically. GET /api/my-venues/:venueId/integrations/:provider/table-audit compares table
names seen in recent till sales against your floorplan’s own table names, so
you can fix any mismatches, plus the integration’s recent sync log.
curl "https://thesidedoor.co/api/my-venues/VENUE_ID/integrations/alliance/table-audit" \ -H "Authorization: Bearer $SIDEDOOR_TOKEN"const res = await fetch( "https://thesidedoor.co/api/my-venues/VENUE_ID/integrations/alliance/table-audit", { headers: { Authorization: `Bearer ${process.env.SIDEDOOR_TOKEN}` } },);const data = await res.json();$ch = curl_init("https://thesidedoor.co/api/my-venues/VENUE_ID/integrations/alliance/table-audit");curl_setopt_array($ch, [ CURLOPT_RETURNTRANSFER => true, CURLOPT_HTTPHEADER => ["Authorization: Bearer {$token}"],]);$data = json_decode(curl_exec($ch), true);{ "audit": { "till_only": ["Table 12A"], "floorplan_only": ["12A"], "matched": 24 }, "syncLog": [{ "at": "2026-07-17T22:00:00Z", "status": "ok", "sales_synced": 18 }]}This only works for a provider whose integration supports reading sales by date range - currently Alliance iPos.