Flovi B2B Partner API v2

Welcome to the Flovi Partner Reservation API v2 documentation. Flovi is a professional car relocation logistics platform that connects car dealers, leasing companies, rental firms, and garages with a network of vetted drivers to manage vehicle transfers. This API allows B2B partners to seamlessly request real-time pricing quotes, check vehicle delivery schedules, and book relocation jobs—such as home deliveries, inter-branch transfers, service/maintenance transport, or collections of purchased vehicles—with absolute pricing certainty.

Seamless Logistics Integration: The Flovi Partner API provides a unified, RESTful interface for all your vehicle transport and relocation needs. From fetching office locations to requesting binding price quotes and confirming reservations, the API is designed to be easily embedded directly into your existing ERP, booking systems, or customer portals.

Quick Start: How to Create a Reservation

Our B2B API leverages a guaranteed 2-step reservation workflow designed to eliminate pricing friction, handle electric vehicle schedules accurately, and secure slots before confirming. For details on how to authenticate your integration, please refer to the Authentication section.

1

Step 1: Request a Guaranteed Quote

Send the pickup location, dropoff location, ready time, and vehicle characteristics to POST /customers/v2/reservation/quote. Partner offices can be queried dynamically from GET /customers/v2/offices. Providing the registration number enables automatic charging-break checks and heavy truck license checks.

2

Step 2: Present Options to Customer

The response contains a unique quoteId valid for 15 minutes and multiple binding delivery options. Each option includes its own optionId, binding total price, and the exact earliest/latest pickup and delivery timestamps.

3

Step 3: Confirm the Reservation

Once the customer picks their preference, send the chosen quoteId (which uniquely locks in both the price and chosen schedule option), vehicle details, and contact names/phone numbers to POST /customers/v2/reservation. This locks in the price and schedule, writing them directly to the Flovi database. Warning: In Production, this creates a real transport job dispatched to freelance drivers immediately!

Authentication

How to Obtain your API Key

All B2B v2 requests require authentication via a secure Partner API Key. You can generate and retrieve your key directly from the stage.customer.flovi.io/profile dashboard (for Staging) or customer.flovi.io/profile dashboard (for Production). Keep this key strictly confidential, as it grants full programmatic access to your Flovi account.

API Base URL & Environments

Depending on your environment, prepend all endpoint paths with one of the following base URLs:

Environment Base URL Description
Staging https://flovi-customer-api-sg3z5hpkva-lz.a.run.app Staging environment for testing and integration.
Production https://flovi-customer-api-portuwrnaa-lz.a.run.app Live production API gateway.

Required HTTP Header

You must include your API Key in the HTTP headers of every request:

Header Key Type Description
x-api-key string Your secure B2B partner API key (e.g. flo_partner_...).

Errors & Validation

The API uses standard HTTP response status codes to indicate the success or failure of requests. When an error occurs, the response body contains a JSON object with structured details to help you diagnose and handle the problem.

Correlation ID: Every error response includes a unique correlationId. Please include this ID when contacting support to help us trace and debug the request instantly.

Error Response Structure

Every error payload adheres to the following consistent structure:

{
  "statusCode": 400,
  "errorCode": "VALIDATION_ERROR",
  "timestamp": "2026-06-01T15:55:05.123Z",
  "path": "/customers/v2/reservation",
  "correlationId": "8f7d9a1b-1234-5678-abcd-ef0123456789",
  "message": [
    "vehicle.regNo is required for creating a reservation."
  ]
}
Property Type Description
statusCode number The HTTP status code matching the response header (e.g. 400).
errorCode string A machine-readable string key representing the error category (e.g. VALIDATION_ERROR).
timestamp string ISO 8601 formatted timestamp of when the error occurred.
path string The API request URL path that triggered the error.
correlationId string A unique UUID generated for request tracing and support references.
message string | array A descriptive error message. For request validation failures, this is a JSON array listing the exact constraints that failed.

Standard Error Codes

Here are the typical machine-readable error codes you should handle in your integration:

HTTP Status errorCode When it is returned
400 Bad Request VALIDATION_ERROR The request payload is invalid. For example, a required parameter is missing, has an incorrect type, or vehicle specs could not be resolved from Traficom.
401 Unauthorized UNAUTHORIZED The x-api-key header is missing, expired, or invalid.
403 Forbidden FORBIDDEN The API key is valid but you do not have permission to access the requested resource or customer store.
404 Not Found NOT_FOUND The requested resource (e.g. office, quote option, or reservation ID) does not exist.
409 Conflict CONFLICT A conflict occurs, such as when a reservation is already created using the specified quoteId or an option ID has expired.
422 Unprocessable UNPROCESSABLE_ENTITY The request is syntactically valid but business rules prevent its execution (e.g., trying to book too close to pickup time).
429 Too Many Requests RATE_LIMITED You have exceeded the rate limit threshold. Please implement back-off and retry strategies.
500 Internal Error INTERNAL_ERROR An unexpected internal error occurred on the Flovi platform.
GET /customers/v2/offices

Retrieves all active offices (stores) belonging to the authenticated B2B customer (partner). These office IDs (e.g. off_1, off_2) are compatible with the origin/destination officeId fields in quotes and bookings.

Response

Response Properties

Returns a JSON array of office objects with the following fields:

Field Type Description
id string The Office ID (e.g. off_5) to be used as officeId in quotes/bookings.
name string The descriptive name of the office (e.g. "Helsinki HQ").
street string The street address of the office.
zip string Postal code (e.g. "00100").
city string City (e.g. "Helsinki").
country string Country (e.g. "FI").
lat number Latitude coordinate.
lng number Longitude coordinate.
isCostCenter boolean Whether this office can be used as a valid cost center.
POST /customers/v2/reservation/quote

Calculates the binding, guaranteed price and delivery schedule. It verifies if the vehicle is electric (dynamically adding charging breaks if needed) and locks the resulting terms for 15 minutes.

Request

Request Parameters

Field Type Description
reservationType string Type of transport. Must be one of: officeToOffice, homeDelivery, serviceDrive, purchaseCar, replacementCar.
costCenter string Billing cost center reference. Must be a valid preconfigured office/store ID fetched from the GET /customers/v2/offices endpoint (e.g. 1234).
origin object Pickup location. Must contain EITHER an officeId OR structured address fields.
Show Allowed Schemas (Choice)
Option 1: Office
  • officeId Required - The ID must be fetched from the offices endpoint
Option 2: Custom Address
  • address Required - An object containing:
    • street Required - Street name (e.g. Mannerheimintie)
    • street_number Required - Street/house number (e.g. 1)
    • zip Required - Postal code (e.g. 00100)
    • city Required - City (e.g. Helsinki)
    • country Optional - 2-character uppercase country code (e.g. FI)
    • title Optional - Custom label/title (e.g. Home)
destination object Dropoff location. Must contain EITHER an officeId OR structured address fields.
Show Allowed Schemas (Choice)
Option 1: Office
  • officeId Required - The ID must be fetched from the offices endpoint
Option 2: Custom Address
  • address Required - An object containing:
    • street Required - Street name (e.g. Mannerheimintie)
    • street_number Required - Street/house number (e.g. 1)
    • zip Required - Postal code (e.g. 00100)
    • city Required - City (e.g. Helsinki)
    • country Optional - 2-character uppercase country code (e.g. FI)
    • title Optional - Custom label/title (e.g. Home)
pickupTime string (ISO Date) Earliest pickup timestamp in ISO format (e.g. 2026-06-20T09:00:00Z). If the vehicle is immediately ready for pickup, you can use the timestamp of the next quarter hour.
vehicle object Vehicle characteristics. Providing this block with at least the registration number (regNo) is required to calculate accurate EV/C1 specs, binding schedule windows, and prices.
Show object schema
  • regNo string (Required) - Registration plate number (e.g. "ABC-123"). Used for automatic specs resolution.
  • make string (Optional) - Manufacturer/make (e.g. "Toyota").
  • model string (Optional) - Model name (e.g. "Corolla").
  • year number (Optional) - Production year (e.g. 2022).
  • vin string (Optional) - Vehicle identification number (VIN).
  • fuelType string (Optional) - The fuel type of the vehicle. Options: gasoline, electric, diesel, gas. Default: gasoline.
  • fastCharge boolean (Optional) - Whether the vehicle supports fast charging. Default: false.
  • transmission string (Optional) - The transmission type of the vehicle. Options: manual, automatic. Default: manual.
  • requiresC1 boolean (Optional) - Requires C1 heavy license. Default: false.
  • testPlates boolean (Optional) - Whether test/dealer plates (koekilvet) are required for transport. Default: false.
  • vehicleType string (Optional) - Type of the vehicle. E.g. car.
returnDrive object Optional return drive details. If provided, details for a return trip transport will be included.
Show object schema
  • destination object (Optional) - Dropoff location for the return drive. If not provided, it defaults to the origin of the outbound delivery. Must contain EITHER an officeId OR structured address fields.
  • vehicle object (Optional) - Vehicle specifications for the return drive. If not provided, the same vehicle as the outbound delivery is assumed. Same format as the main vehicle parameter.
Response

Response Properties

Returns a JSON object with the following fields:

Field Type Description
expiresAt string (ISO Date) The absolute timestamp when the generated quote options expire (guaranteed for 15 minutes).
reservationType string The type of reservation requested (must be one of: officeToOffice, homeDelivery, serviceDrive, purchaseCar, replacementCar).
origin object Resolved details of the origin pickup location.
Show object schema
  • officeId string (Optional) - Resolved office ID.
  • costCenter string (Optional) - Resolved cost center reference.
  • address object - Standardized address components:
    • street string - Street name (without house number).
    • street_number string - Street/house number.
    • zip string - Postal code.
    • city string - City name.
    • country string - Country name.
    • formattedAddress string - Full formatted single-line address.
  • lat number - Latitude coordinate.
  • lng number - Longitude coordinate.
destination object Resolved details of the destination dropoff location.
Show object schema
  • officeId string (Optional) - Resolved office ID.
  • costCenter string (Optional) - Resolved cost center reference.
  • address object - Standardized address components:
    • street string - Street name (without house number).
    • street_number string - Street/house number.
    • zip string - Postal code.
    • city string - City name.
    • country string - Country name.
    • formattedAddress string - Full formatted single-line address.
  • lat number - Latitude coordinate.
  • lng number - Longitude coordinate.
route object Calculated optimal route characteristics.
Show object schema
  • distanceMeters number - Total route distance in meters.
  • durationSeconds number - Estimated pure driving time in seconds.
options array (object) Available binding transport and speed schedule options.
Show item schema
  • quoteId string - The unique binding quote ID for this option (passed as quoteId in the confirm reservation request).
  • name string - Speed profile name (e.g. "Standard", "Express", "Saver (Flexible)").
  • default boolean - Indicates if this is the default quote option (exactly one option in the options array is always true).
  • price number - Total partner price (in decimal currency units).
  • currency string - Three-letter ISO currency code (e.g. "EUR").
  • priceBreakdown array (object) - Breakdown of price components.
  • schedule object - Service delivery window:
    • departAtEarliest string (ISO Date) - Earliest pickup window start.
    • departAtLatest string (ISO Date) - Latest pickup window end.
    • arriveAtEarliest string (ISO Date) - Earliest dropoff window start.
    • arriveAtLatest string (ISO Date)
  • returnDrive object (Optional) - Return drive details. Included only if return drive was requested.
    Show returnDrive schema
    • schedule object - Service delivery window for the return drive (starts as soon as outbound drive arrives):
      • departAtEarliest string (ISO Date) - Earliest return pickup window start (matches outbound arriveAtEarliest).
      • departAtLatest string (ISO Date) - Latest return pickup window end (matches outbound arriveAtLatest).
      • arriveAtEarliest string (ISO Date) - Earliest return dropoff window start.
      • arriveAtLatest string (ISO Date) - Latest return dropoff window end.
vehicle object Resolved specifications of the transport vehicle.
Show object schema
  • fuelType string - The fuel type of the vehicle (gasoline, electric, diesel, gas).
  • fastCharge boolean - Whether the vehicle supports fast charging.
  • transmission string - The transmission type of the vehicle (manual, automatic).
  • isElectric boolean - Whether the vehicle is electric (kept for backward compatibility).
  • requiresC1 boolean - Whether a C1 heavy driver license is required.
  • make string - Vehicle make/brand.
  • model string - Vehicle model.
  • year number - Vehicle model year.
  • vin string - Vehicle Identification Number (VIN).
  • gearbox string (Optional) - Detected transmission type (e.g. "automatic", "manual").
POST /customers/v2/reservation

Vaporizes booking friction by turning your guaranteed quoteId into a confirmed job. The details specified in the quote must match the booking parameters.

PRODUCTION DISPATCH WARNING

Calling this endpoint in the Production environment (https://flovi-customer-api-portuwrnaa-lz.a.run.app) creates a live, binding transport order. The job is immediately dispatched to real freelance drivers! All integration development and testing MUST be conducted exclusively in the Staging environment (https://flovi-customer-api-sg3z5hpkva-lz.a.run.app).

Request

Request Parameters

Field Type Description
quoteId string The active, unexpired quote UUID obtained from the `/quote` endpoint.
contactInfo object Operational contact name and phone number at pickup site.
Show object schema
  • name *string - Full name.
  • phone *string - Phone number in E.164 format.
recipientContactInfo object (Optional) Contact name and phone number at dropoff site.
Show object schema
  • name *string - Full name.
  • phone *string - Phone number in E.164 format.
publicNotes string (Optional) Public notes visible to all drivers searching for gigs.
privateNotes string (Optional) Driver instructions (keys, parking info, etc.) visible only after the driver has accepted the gig.
deliveryTimeWindow object (Optional) Precise delivery time window. Overrides the time window from the quote. Must fall entirely within the original quote time window, must be at least 1 hour long, and will be automatically rounded to the nearest 15 minutes.
Show object schema
  • earliest *string (ISO Date) - The exact earliest arrival time requested. Must not be earlier than the quote's earliest arrival time.
  • latest *string (ISO Date) - The exact latest arrival time requested. Must not be later than the quote's latest arrival time.
externalId string (Optional) External identifier from your system. Use this to link the reservation to your own records (e.g. order ID, work order number). Returned in all reservation responses and webhook payloads.
Response

Response Properties

Returns a JSON object with the following fields:

Field Type Description
reservationId string The unique system ID generated for the confirmed transport order.
reservationType string The type of reservation requested (must be one of: officeToOffice, homeDelivery, serviceDrive, purchaseCar, replacementCar).
status string The booking status, always confirmed.
externalId string | null External identifier from your system, if provided when creating the reservation.
quoteId string The exact speed-profile quote ID confirmed from the quote calculation.
price number The final binding cost billed for the transport order.
currency string Three-letter ISO currency code (e.g. EUR).
schedule object The definitive pickup and dropoff schedule window.
Show object schema
  • departAtEarliest string (ISO Date) - Earliest pickup window start.
  • departAtLatest string (ISO Date) - Latest pickup window end.
  • arriveAtEarliest string (ISO Date) - Earliest dropoff window start.
  • arriveAtLatest string (ISO Date) - Latest dropoff window end.
vehicle object The transport vehicle specs confirmed.
Show object schema
  • regNo string - Registration number.
  • fuelType string - Fuel type of the vehicle.
  • fastCharge boolean - Whether the vehicle confirms fast charging.
  • transmission string - The transmission type of the vehicle (manual, automatic).
  • isElectric boolean - Electric status (kept for backward compatibility).
  • testPlates boolean - Whether test/dealer plates (koekilvet) are required for transport.
  • vehicleType string - Vehicle category (e.g., "car").
PUT /customers/v2/reservation/:id/edit

Allows editing basic reservation details after creation. Details like contact info, recipient contact info, and public notes can be modified. Note that any changes that affect the quote (e.g. locations, schedules) cannot be updated via this endpoint and require a reschedule.

Request

Request Parameters

Field Type Description
contactInfo object (Optional) Operational contact name and phone number at pickup site.
Show object schema
  • name *string - Full name of the contact person.
  • phone *string - Phone number in international format starting with + (e.g. +358501231234).
recipientContactInfo object (Optional) Contact name and phone number at dropoff site.
Show object schema
  • name *string - Full name of the recipient contact person.
  • phone *string - Phone number in international format starting with + (e.g. +358501231234).
publicNotes string (Optional) Public notes visible to all drivers searching for gigs.
privateNotes string (Optional) Driver instructions (keys, parking info, etc.) visible only after the driver has accepted the gig.
vehicle object (Optional) Vehicle details to update. Note that modifying quote-affecting fields (isElectric/fuelType, fastCharge, testPlates, requiresC1) will return a Bad Request validation error.
Show object schema
  • regNo string (Optional) - Registration plate number (e.g. "ABC-123").
  • make string (Optional) - Manufacturer/make (e.g. "Toyota").
  • model string (Optional) - Model name (e.g. "Corolla").
  • year number (Optional) - Production year (e.g. 2022).
  • vin string (Optional) - Vehicle identification number (VIN).
  • fuelType string (Optional) - Fuel type of the vehicle (gasoline, electric, diesel, gas). Note: changing this to or from electric will return a 400 validation error.
  • fastCharge boolean (Optional) - Whether the vehicle supports fast charging. Note: modifying this will return a 400 validation error.
  • transmission string (Optional) - Transmission type of the vehicle (manual, automatic).
  • requiresC1 boolean (Optional) - Requires C1 heavy license. Note: modifying this to true will return a 400 validation error.
  • testPlates boolean (Optional) - Requires test/dealer plates. Note: modifying this to true will return a 400 validation error.
  • vehicleType string (Optional) - Type of the vehicle (e.g. "car").
returnDrive object (Optional) Optional return drive update details.
Show object schema
  • vehicle object (Optional) - Vehicle details to update for the return drive. Note that modifying quote-affecting fields (isElectric/fuelType, fastCharge, testPlates, requiresC1) will return a Bad Request validation error.
    Show vehicle schema
    • regNo string (Optional) - Registration plate number (e.g. "ABC-123").
    • make string (Optional) - Manufacturer/make (e.g. "Toyota").
    • model string (Optional) - Model name (e.g. "Corolla").
    • year number (Optional) - Production year (e.g. 2022).
    • vin string (Optional) - Vehicle identification number (VIN).
    • fuelType string (Optional) - Fuel type of the vehicle (gasoline, electric, diesel, gas). Note: changing this to or from electric will return a 400 validation error.
    • fastCharge boolean (Optional) - Whether the vehicle supports fast charging. Note: modifying this will return a 400 validation error.
    • transmission string (Optional) - Transmission type of the vehicle (manual, automatic).
    • requiresC1 boolean (Optional) - Requires C1 heavy license. Note: modifying this to true will return a 400 validation error.
    • testPlates boolean (Optional) - Requires test/dealer plates. Note: modifying this to true will return a 400 validation error.
    • vehicleType string (Optional) - Type of the vehicle (e.g. "car").
PUT /customers/v2/reservation/:id/reschedule

NOT YET SUPPORTED

This endpoint is not yet supported in the backend. Currently, calling this returns a placeholder stub response.

GET /customers/v2/reservations

Retrieves all reservations (and their associated drives/trips) belonging to the authenticated B2B customer (partner), sorted by ID in descending order (newest first). Supports cursor-based pagination.

Request

Query Parameters

Parameter Type Required Description
start string Optional The reservation ID cursor (BigInt string) to start fetching after. If omitted, retrieves the first page.
limit number Optional Maximum number of items to return. Default is 20, maximum is 100.
status string Optional Filter reservations by simplified status. Possible values: confirmed, sealed, cancelled, driving.
regNo string Optional Filter reservations by vehicle registration number (e.g. ABC-123).
Response

Response Properties

Returns a paginated JSON object containing the reservations:

Property Type Description
data array An array of reservation objects, containing the following fields:
Show Reservation Fields
  • reservationId string - Unique reservation ID.
  • reservationType string - The type of reservation (must be one of: officeToOffice, homeDelivery, serviceDrive, purchaseCar, replacementCar).
  • createdAt string - ISO timestamp of reservation creation.
  • status string - The reservation status. Possible values: confirmed, sealed, cancelled.
  • price number - Billed reservation price.
  • currency string - Currency code (e.g. EUR).
  • priceBreakdown array - Detailed cost breakdown items (containing type, amount, and label).
  • route object - Route details (containing distanceMeters and durationSeconds).
  • origin object - Pickup location details (containing officeId, address, lat, and lng).
  • destination object - Dropoff location details (containing officeId, address, lat, and lng).
  • schedule object - Schedule details (containing departAtEarliest, departAtLatest, arriveAtEarliest, and arriveAtLatest).
  • vehicle object - Vehicle details (containing regNo, make, model, year, vin, fuelType, fastCharge, isElectric, vehicleType, transmission, fuel, and testPlates).
nextStart string | null The cursor ID to pass as the start query parameter to retrieve the next page of results. Null when there are no more pages.
GET /customers/v2/reservation/:id

Retrieves the full details and real-time status of a specific B2B reservation by its unique BigInt ID string.

Request

Path Parameters

Parameter Type Required Description
id string Yes The unique BigInt reservation ID string.
Response

Response Properties

Returns the full reservation object, identical to the response format of creating a reservation.

Field Type Description
reservationId string Unique reservation ID.
reservationType string The type of reservation (must be one of: officeToOffice, homeDelivery, serviceDrive, purchaseCar, replacementCar).
createdAt string ISO timestamp of reservation creation.
status string The reservation status. Possible values: confirmed, sealed, cancelled.
price number Billed reservation price.
currency string Currency code (e.g. EUR).
priceBreakdown array Detailed cost breakdown items.
Show object schema
  • type string - Type of price component.
  • amount number - Amount in currency units.
  • label string - Human-readable description.
route object Route details.
Show object schema
  • distanceMeters number - Route distance in meters.
  • durationSeconds number - Estimated drive duration in seconds.
origin object Pickup location details.
Show object schema
  • officeId string | null - Office ID if starting at an office.
  • address object - Address details.
  • lat number - Latitude.
  • lng number - Longitude.
destination object Dropoff location details.
Show object schema
  • officeId string | null - Office ID if ending at an office.
  • address object - Address details.
  • lat number - Latitude.
  • lng number - Longitude.
schedule object Schedule details.
Show object schema
  • departAtEarliest string (ISO Date) - Earliest departure time.
  • departAtLatest string (ISO Date) - Latest departure time.
  • arriveAtEarliest string (ISO Date) - Earliest arrival time.
  • arriveAtLatest string (ISO Date) - Latest arrival time.
vehicle object Vehicle details.
Show object schema
  • regNo string - Registration number.
  • make string - Vehicle make.
  • model string - Vehicle model.
  • year number | null - Vehicle year.
  • vin string | null - VIN.
  • fuelType string - Fuel type.
  • fastCharge boolean - Whether the vehicle supports fast charging.
  • isElectric boolean - Whether the vehicle is electric.
  • vehicleType string - Type of vehicle (e.g. "car").
  • transmission string - Transmission type.
  • fuel string - Fuel info.
  • testPlates boolean - Whether test plates are used.
returnDrive object | null Return drive details if configured.
Show object schema
  • destination object - Return destination location details.
  • route object - Return drive route details.
  • schedule object - Return drive schedule details.
  • vehicle object - Return vehicle details.

Webhooks

Flovi supports webhooks to notify your application in real-time about important events. This allows your system to react to changes automatically without polling the API.

Creating Webhooks

Go to https://customer.flovi.io/organisation/settings, click on Webhooks -> Add. Enter your desired URL and choose the events you want to subscribe to.

Webhook reservation_status_change

The reservation_status_change webhook is triggered whenever the status of a reservation is updated.

Supported Events

This webhook may be triggered for the following events:

  • created - A reservation has been created.
  • taken – All the drives in reservation has assigned.
  • driving – The driver has started driving.
  • sealed – The reservation is completed and sealed.
  • final_costs - After two weeks of reservation sealing webhook is called to inform total costs. Format is the same as state: sealed, but also includes vehicles information.
  • cancelled - The reservation is cancelled.

Cancelled event also adds cancellation_reason field. Possible reasons are: DOUBLE_BOOKING, NO_DRIVER_WAS_FOUND, DRIVER_CANCELED_OR_NOT_ARRIVED, SCHEDULE_ISSUE, DRIVER_WAS_FOUND_THROUGH_ANOTHER_WAY, UNTRANSPORTABLE_VEHICLE and OTHER_REASON

Webhook Security

To ensure the authenticity of incoming webhook requests, each request includes a signature header that can be used to verify the request was sent by Flovi.

Secret & Signature

When you configure a webhook endpoint, you'll receive a webhook secret. This secret is used to sign each payload using HMAC SHA256.

  • Header: x-hub-signature
  • Signature Method: HMAC SHA256
  • Secret: Provided in the Flovi Dashboard

Calculating Signature

To verify that a webhook request is legitimate, you can compute the HMAC SHA256 signature of the request body using your webhook secret. Here's how to calculate the signature:

  1. Obtain the webhook secret
    You can find your secret in the Flovi Dashboard. Keep it safe and never expose it publicly.
  2. Extract the request body
    Read the raw request body exactly as it was received, without any modifications.
  3. Compute the HMAC SHA256 hash
    Use the webhook secret as the key and the raw request body as the message. The output should be a lowercase hexadecimal string.
  4. Compare with the x-hub-signature header
    The signature sent by Flovi is included in the x-hub-signature header. Compare it against your computed hash to confirm authenticity.

Example (in Node.js)

const crypto = require("crypto");

function computeSignature(secret, rawBody) {
  return crypto
    .createHmac("sha256", secret)
    .update(rawBody, "utf8")
    .digest("hex");
}
            

Example Headers

content-length: 16
x-hub-signature: sha256=981c0223305427406b22a4694022562be103419c89e31ee06de2dd9f96f92238
content-type: application/json
user-agent: GuzzleHttp/7
host: webhook.site
            

Model Context Protocol (MCP)

Flovi supports the Model Context Protocol (MCP), allowing you to connect your AI agents, IDEs, and developer assistants (such as Claude Desktop, Cursor, or Windsurf) directly to the Flovi API.

By configuring the Flovi MCP server, your AI assistants can query offices, calculate quotes, and create or list reservations directly through chat interface using natural language.

Client Configuration

To connect your AI assistant, configure the MCP server by adding the following block to your client's configuration file (e.g. claude_desktop_config.json).

Production Environment

Live / Real Cars
Loading...

Staging Environment

Testing / Sandbox
Loading...

Exposed AI Tools

The Flovi MCP server exposes the following tools directly to the AI model:

  • list_offices
    Retrieve the list of active B2B offices / cost centers for the authenticated partner. Use these IDs to specify origin/destination offices and cost centers in quotes and reservations.
  • calculate_quote
    Calculate guaranteed price options and alternative schedules for a transport order before booking. Accepts either office IDs or custom address fields.
  • create_reservation
    Confirm and book a live, binding transport order using a guaranteed quoteId. Supports an optional externalId to link the reservation to your own system. WARNING: In production, this is immediately binding, dispatches to real drivers, and incurs real costs. Even cancelling the reservation afterwards may incur cancellation fees and costs.
  • list_reservations
    Retrieve all reservations and associated drives/trips belonging to the authenticated partner.

B2B Flow Sandbox

Step through real B2B integration scenarios: get a quote, then confirm a reservation.

Environment:
Your API Key:
Interactive GET /customers/v2/offices
Fetch Offices
GET /customers/v2/offices
Loading...
Example 1 Office-to-Office: Step 1 – Calculate Quote
Step 1: Calculate Quote
POST /customers/v2/reservation/quote
Loading...
Example 2 Office-to-Office: Step 2 – Confirm Reservation
Step 2: Confirm Reservation
POST /customers/v2/reservation
Loading...
Example 3 Home Delivery: Step 1 – Calculate Quote
Step 1: Calculate Quote
POST /customers/v2/reservation/quote
Loading...
Example 4 Home Delivery: Step 2 – Confirm Reservation
Step 2: Confirm Reservation
POST /customers/v2/reservation
Loading...
Interactive PUT /customers/v2/reservation/:id/edit
Edit Reservation
PUT /customers/v2/reservation/:id/edit
Loading...
Interactive GET /customers/v2/reservations
List Reservations
GET /customers/v2/reservations
Loading...
Interactive GET /customers/v2/reservation/:id
Get Reservation Details
GET /customers/v2/reservation/:id
Loading...
Interactive Webhook Payloads
reservation_status_change
POST YOUR_WEBHOOK_URL
Loading...