Supplier API
A small, honest REST API. Register as a partner, publish deals, read anonymised demand from live itineraries, and settle payouts from travellers’ shared funds.
/api/v1JSON over HTTPSBearer authOverview
Embirea connects travellers who are actively planning with the local businesses who can make their trip. As a supplier you do three things: publish deals, watch demand from real itineraries, and get paid when a group books from their pooled fund.
/api/v1/healthcurl https://your-host/api/v1/health
{
"ok": true,
"service": "embirea-supplier-api",
"version": "1.0.0",
"catalogue": { "suppliers": 6, "deals": 6, "liveItineraries": 2 }
}Authentication
Authenticated endpoints expect your live key as a Bearer token. You receive a key the moment you register (below) - it’s shown once, so store it securely.
Authorization: Bearer emb_live_xxxxxxxx
A non-admin key only sees demand and may only publish deals for the supplier it belongs to.
Itinerary intents
Start here. Intents are the UNBOOKED items on real itineraries being planned - the transfer someone still needs, the excursion pencilled in as an idea, the hotel night without a booking. The feed is filtered to the item categories your supplier account serves (transfers → transport legs, experiences → activities, hotels → stays…) and to your country. Anonymised: shape-of-demand only, never traveller identity.
/api/v1/itinerary-intents🔒 API keyintentRef you can target a deal at.curl https://your-host/api/v1/itinerary-intents -H "Authorization: Bearer emb_live_…"
{
"ok": true,
"data": {
"count": 2,
"intents": [{
"intentRef": "dF9jeWNsYWRlc3xpdF9mZXJyeQ",
"category": "transport",
"title": "High-speed ferry · Piraeus → Santorini",
"date": "2026-09-14",
"destination": "Athens", "countryCode": "GR",
"partySize": 4, "bookingStatus": "planned",
"estimatedCost": 260, "currency": "EUR"
}]
}
}Deals
Deals are proposed FOR specific intents: pass the intentRef and the deal inherits the intent's destination and dates, then surfaces directly on that traveller's itinerary. (Suppliers can do the same manually from the partner portal - Intents page → "Propose a deal".) Your account can only target intents in categories it serves.
/api/v1/deals🔒 API keycurl -X POST https://your-host/api/v1/deals -H "Authorization: Bearer emb_live_…" -H "Content-Type: application/json" -d '{
"intentRef": "dF9jeWNsYWRlc3xpdF9mZXJyeQ",
"category": "airport-transfer",
"title": "Private night transfer · ATH → centre",
"description": "Fixed-fare meet & greet, 24/7.",
"price": 38, "wasPrice": 55, "currency": "EUR",
"unit": "per group", "servesHours": "24h",
"tags": ["meet & greet","fixed fare"], "instantConfirm": true
}'Without an intentRef, location and countryCode are required and the deal is matched to itineraries by location/dates instead.
/api/v1/deals?country=GR&category=experienceContent management
Manage your catalogue and fleet over the API: create, update and delete products (transfers, excursions, stays, services - including zone/per-passenger transfer pricing) and drivers. Suppliers on the Multi channel manager additionally get live pricing, instant bookings and driver telemetry (see the contract below).
/api/v1/products🔒 API key{ type, title, summary, area, basePrice, currency, capacity, transfer?, … }curl -X POST https://your-host/api/v1/products -H "Authorization: Bearer emb_live_…" -H "Content-Type: application/json" -d '{ "type": "transport", "title": "Airport transfer · ATH → centre",
"area": "Athens", "basePrice": 38, "currency": "EUR",
"capacity": { "maxPax": 4 } }'/api/v1/products/{id}🔒 API key/api/v1/products/{id}🔒 API key/api/v1/drivers🔒 API key{ name, phone?, vehicle? }. GET lists your roster./api/v1/drivers/{id}🔒 API key/api/v1/drivers/{id}🔒 API key/api/multi/events/{supplierId}POST /api/multi/events/s_welcome
Authorization: Bearer <multi-api-key>
{ "driverRef": "DRV-12", "event": "on_way",
"lat": 37.94, "lng": 23.94,
"bookingRef": "EMB-BK-7QF2", "at": "2026-09-14T08:30:00Z" }Outbound contract Embirea calls on your Multi URL
GET /entities·POST /entities- your bookable products, for the product sync.GET /drivers- your driver roster, for the driver sync.POST /pricing{ listingRef, date, pax }- live price + availability (cached ≤60s).POST /bookings- instant booking creation;PATCH/DELETE /bookings/:ref- amendments (incl. driver assignment) and cancellations.GET /bookings/:ref/invoice- your receipt/invoice for a booking, ascontentBase64or aurlwe fetch. Connected suppliers never upload invoices by hand.POST /inquiries{ bookingRef, from, text, at }- traveller messages raised on your Multi inbox.
Ready to list your business?
Get a live API key in two minutes.