ByCar API Endpoints Get an API key
Partner API · v1

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

1 · Get a keyByCar creates a key for you and chooses what it can access.
2 · Call the APIJSON over HTTPS. Send the key in the Authorization header.
3 · Go liveStart with a 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.

Keep the key on your server. Never put it in website JavaScript, a mobile app or a public repository. If a key leaks, ask ByCar to rotate it — the old key stops working immediately. ByCar stores only a fingerprint of your key and cannot show it again.

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.

PermissionAllows
regions.readRegions and cities we serve
tours.readTour catalogue with your prices
transfers.quoteTransfer price calculation
transfers.bookCreate transfer bookings
tours.bookCreate tour bookings
rent.cars.readRental car search and details
rent.quoteRental price and availability for dates
rent.bookCreate rental bookings / requests
bookings.readYour bookings and their status
bookings.cancelCancel your bookings (rules apply)
bookings.trackAssigned driver, vehicle, live GPS
account.readYour partner profile and commission
account.statsTurnover, earned commission, balance
account.payoutsPayouts made to you
account.statementPeriod statement for invoicing
reviews.readPublished customer reviews
club.readByCar Club discount partners

Errors & limits

Errors return a JSON body like {"error":"NOT_AVAILABLE"}.

StatusError codes
400BAD_INPUT, BAD_JSON, BAD_ROUTE, BAD_CLASS, PLACE_REQUIRED, BAD_NAME, BAD_PHONE, BAD_EMAIL, CONSENT_REQUIRED, BAD_PERIOD
401INVALID_KEY, KEY_EXPIRED
403SCOPE_REQUIRED, IP_NOT_ALLOWED, PARTNER_REQUIRED, PARTNER_NOT_LINKED, VERIFY_REQUIRED
404NOT_FOUND, TOUR_NOT_FOUND, CAR_NOT_FOUND, UNKNOWN_ENDPOINT
409NOT_AVAILABLE, CANNOT_CANCEL, DUPLICATE
429RATE_LIMIT — default 60 requests per minute per key
503MAINTENANCE, 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.

FieldDescription
km, minutesRoad distance and driving time
pickup_lat, pickup_lon, dropoff_lat, dropoff_lonInstead of km/minutes
clseco (default) · com comfort · biz business
vehiclesedan (default) · suv · van (automatic above 4 passengers)
paxPassengers, 1–19
extrasOptional: {"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:

FieldDescription
pickup, dropoffRequired. Address or place name
travel_date, travel_timeRequired date, pickup time
name, phone, emailGuest contact (name and phone required)
flight_noOptional — we track the flight for airport pickups
noteOptional 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.