Connect your business to ByCar
Airport transfers, private tours and car rental across Georgia — live prices, instant bookings, driver tracking and commission statements, directly from your website, PMS or booking platform.
ByCar-ის პარტნიორების API — სასტუმროებისთვის, ტურისტული სააგენტოებისთვის და დაჯავშნის პლატფორმებისთვის.
Quick start
Authorization header.bc_test_ key, switch to bc_live_ when ready.Base URL:
https://nrefgyljobbfflytctry.supabase.co/functions/v1/partner-api/v1
# check your key curl https://nrefgyljobbfflytctry.supabase.co/functions/v1/partner-api/v1/me \ -H "Authorization: Bearer bc_live_xxxxxxxx…"
Authentication
Every request needs your key, either as Authorization: Bearer <key> or X-API-Key: <key>. Keys look like bc_live_ + 64 characters.
Optional extra protection: ByCar can restrict a key to your server's IP addresses and set an expiry date.
Permissions
Each key has its own set of permissions. Calling an endpoint without the permission returns 403 SCOPE_REQUIRED. Booking and account permissions are tied to your partner account — bookings are created under your name and you only ever see your own data.
| Permission | Allows |
|---|---|
| regions.read | Regions and cities we serve |
| tours.read | Tour catalogue with your prices |
| transfers.quote | Transfer price calculation |
| transfers.book | Create transfer bookings |
| tours.book | Create tour bookings |
| rent.cars.read | Rental car search and details |
| rent.quote | Rental price and availability for dates |
| rent.book | Create rental bookings / requests |
| bookings.read | Your bookings and their status |
| bookings.cancel | Cancel your bookings (rules apply) |
| bookings.track | Assigned driver, vehicle, live GPS |
| account.read | Your partner profile and commission |
| account.stats | Turnover, earned commission, balance |
| account.payouts | Payouts made to you |
| account.statement | Period statement for invoicing |
| reviews.read | Published customer reviews |
| club.read | ByCar Club discount partners |
Errors & limits
Errors return a JSON body like {"error":"NOT_AVAILABLE"}.
| Status | Error codes |
|---|---|
| 400 | BAD_INPUT, BAD_JSON, BAD_ROUTE, BAD_CLASS, PLACE_REQUIRED, BAD_NAME, BAD_PHONE, BAD_EMAIL, CONSENT_REQUIRED, BAD_PERIOD |
| 401 | INVALID_KEY, KEY_EXPIRED |
| 403 | SCOPE_REQUIRED, IP_NOT_ALLOWED, PARTNER_REQUIRED, PARTNER_NOT_LINKED, VERIFY_REQUIRED |
| 404 | NOT_FOUND, TOUR_NOT_FOUND, CAR_NOT_FOUND, UNKNOWN_ENDPOINT |
| 409 | NOT_AVAILABLE, CANNOT_CANCEL, DUPLICATE |
| 429 | RATE_LIMIT — default 60 requests per minute per key |
| 503 | MAINTENANCE, PARTNERS_PAUSED |
Idempotency: send an Idempotency-Key header (a UUID) with booking requests. Retrying with the same key returns 409 DUPLICATE instead of creating a second booking.
All prices are in Georgian lari (GEL), dates are YYYY-MM-DD, times HH:MM (Asia/Tbilisi).
Test mode
Keys starting with bc_test_ work exactly like live keys and run every validation, but booking and cancel calls are rolled back: nothing is created and the response contains "test": true. Use it to build and verify your integration.
Transfers & tours
GET/regionsregions.read
[{"id":"tbilisi","name":{"ka":"თბილისი","en":"Tbilisi"},"lat":41.7151,"lon":44.8271}, …]
GET/tours · /tours/{id}tours.read
Active tours with your price (price_gel, including your markup). The single-tour call adds description, itinerary, highlights, what is included/excluded and pickup info.
{"id":7,"name":{"ka":"…","en":"Kazbegi day tour"},"duration":"10 h","price_gel":320,
"route":{"en":"Tbilisi – Ananuri – Gudauri – Stepantsminda"},"photos":["https://…"],"url":"https://bycar.ge/tours/7"}
POST/transfers/quotetransfers.quote
Send either the road distance (km, minutes) or coordinates — ByCar calculates the route.
| Field | Description |
|---|---|
| km, minutes | Road distance and driving time |
| pickup_lat, pickup_lon, dropoff_lat, dropoff_lon | Instead of km/minutes |
| cls | eco (default) · com comfort · biz business |
| vehicle | sedan (default) · suv · van (automatic above 4 passengers) |
| pax | Passengers, 1–19 |
| extras | Optional: {"seats":1,"langs":["en"]} child seats, driver languages |
curl -X POST …/v1/transfers/quote -H "Authorization: Bearer $KEY" -H "Content-Type: application/json" \
-d '{"pickup_lat":41.669,"pickup_lon":44.954,"dropoff_lat":41.6938,"dropoff_lon":44.8015,"pax":2,"cls":"com"}'
{"price_gel":96,"currency":"GEL","commission_pct":10,"class":"com","vehicle":"sedan","km":21.4,"minutes":29}
POST/transferstransfers.book
Same fields as the quote, plus:
| Field | Description |
|---|---|
| pickup, dropoff | Required. Address or place name |
| travel_date, travel_time | Required date, pickup time |
| name, phone, email | Guest contact (name and phone required) |
| flight_no | Optional — we track the flight for airport pickups |
| note | Optional note for the driver (max 500) |
{"id":"dacd62dd-82f5-43a7-811c-92d9bc84c4bc","price":71,"commission_pct":10}
POST/tours/{id}/booktours.book
Body: travel_date, pax, name, phone, optional email, travel_time, note, extras.
Car rental
GET/rent/cars · /rent/cars/{id}rent.cars.read
Query: city, from, to, mode (self or driver), class (economy, comfort, business, premium, suv, minivan), instant, transmission, seats, max_price, limit. With dates, only cars free for the whole period are returned. Details include features, conditions, booked days and reviews.
POST/rent/quoterent.quote
{"car_id":12,"from":"2027-02-10","to":"2027-02-13","mode":"self","options":{"cdw":true}}
{"days":3,"price_day":140,"total":435,"deposit":400,"service_fee":15,"available":true, …}
POST/rent/bookingsrent.book
Same as the quote, plus name, phone, email, note and consents. You must confirm that the renter accepted the rental terms, privacy policy and age/licence requirements:
"consents":{"terms":true,"privacy":true,"age_license":true}
{"ref":"90678969","status":"pending","instant":false,"total":435,"deposit":400,"days":3,"expires_at":"…"}
Instant-book cars return "status":"confirmed". Otherwise the owner confirms within 12 hours. The renter signs the electronic contract at https://rent.bycar.ge/contract?ref=….
Your bookings
GET/bookings · /bookings/{id}bookings.read
Transfers, tours and rentals made by your account. Query: from, to (travel date), status, type (transfer, tour, rent), limit (max 200). Transfers and tours use the UUID id; rentals use the 8-character ref.
{"id":"dacd62dd-…","type":"transfer","status":"pending","ops_status":"assigned","travel_date":"2026-12-05","travel_time":"10:30",
"pickup":"Tbilisi Airport","dropoff":"Rustaveli Hotel","pax":2,"guest":{"name":"John Smith","phone":"+995…"},
"price_gel":71,"commission_pct":10,"commission_gel":7.1,"driver_assigned":true,"ticket_url":"https://bycar.ge/ticket/?id=…"}
ops_status: new → assigned → en_route → in_progress → completed (or cancelled).
POST/bookings/{id}/cancelbookings.cancel
Transfers and tours can be cancelled before a driver is assigned. Rentals follow the car's cancellation policy (a fee may apply close to the start date).
GET/bookings/{id}/trackbookings.track
{"ops_status":"en_route","driver":{"name":"Giorgi","phone":"+995…","languages":"ka,en,ru"},
"vehicle":{"brand":"Toyota","model":"Camry","color":"white","plate":"AA-123-BB"},
"location":{"lat":41.71,"lon":44.79,"speed":42,"updated_at":"…","age_s":6}}
Location is shared only while the driver is on the way or the trip is in progress.
Account
GET/accountaccount.read
Your partner name, code, commission percentages, markup and your personal booking link.
GET/account/statsaccount.stats
{"count":10,"value":2235,"earned":166.4,"pending":57.1,"paid":0,"balance":166.4,"currency":"GEL"}
GET/account/payoutsaccount.payouts
GET/account/statement?from=2026-11-01&to=2026-11-30account.statement
All non-cancelled bookings in the period with price and commission, payouts and totals — ready for your accounting or invoice. Defaults to the current month.
Public data
GET/reviewsreviews.read
Published reviews with average rating — show them on your site.
GET/clubclub.read
Restaurants and places that give ByCar customers a discount.
Need a key or help?
Write to us on WhatsApp +995 599 09 60 30 or info@bycar.ge. Become a partner at partner.bycar.ge.