Getting started
The public API currently supports Rental. It lets your system synchronize vehicles and Rental dossiers, launch inspections, and retrieve validated results. The API reference is the exact contract for every request and response.
1. Create a key
Section titled “1. Create a key”An organization administrator opens API & integrations in the TrakarIA application and creates an API key. API access depends on the organization’s Rental plan. Give each integration its own key; the full secret appears only once. How authentication works.
The base URL is https://api.trakaria.com. Requests made with your key affect your account’s real data.
2. Check access and effective limits
Section titled “2. Check access and effective limits”Set your key in your terminal without committing it to source control, then make a read-only request:
export TRAKARIA_API_KEY='your-api-key'curl --fail-with-body --silent --show-error \ -H "Authorization: Bearer ${TRAKARIA_API_KEY}" \ https://api.trakaria.com/v1/capabilitiesThe response states the current Rental features and limits for your organization. A 401 means the credential is invalid or expired; a 403 may mean the operation or plan is unavailable. Read about errors.
3. Synchronize a vehicle and a Rental dossier
Section titled “3. Synchronize a vehicle and a Rental dossier”For a trial, use distinct external IDs that you can identify later and avoid real customer information. The following calls create records in your account. Replace the sample values below; repeat the same external ID to update the same resource. Keep the returned public id values for later calls.
curl --fail-with-body --silent --show-error \ -X PUT 'https://api.trakaria.com/v1/vehicles/by-external/demo-vehicle-001' \ -H "Authorization: Bearer ${TRAKARIA_API_KEY}" \ -H 'Content-Type: application/json' \ -d '{"plate":"AA-123-AA","name":"Airport car","photo_url":"https://cdn.example.com/fleet/demo-vehicle-001.jpg","make":"Example","model":"Car","trim":"Business","year":2025,"registration_date":"2025-03-20","vehicle_type":"hatchback","energy":"petrol","gearbox":"automatic","transmission":"fwd","color":"Blue","mileage":12000,"source_revision":1}'
curl --fail-with-body --silent --show-error \ -X PUT 'https://api.trakaria.com/v1/rentals/by-external/demo-reservation-001' \ -H "Authorization: Bearer ${TRAKARIA_API_KEY}" \ -H 'Content-Type: application/json' \ -d '{"vehicle_external_id":"demo-vehicle-001","source_revision":1}'The second request immediately creates a visible planning entry. Its response contains both the Rental id and planning.entry_id. Only vehicle_external_id is required in the request body: planned dates, references, locations, contact and drivers are optional. You may send them ahead of time, at physical handover, or later. Without a departure time, TrakarIA uses creation time; without a return time, the planning entry stays open-ended.
Use a strictly increasing source_revision for later changed updates. Omitted fields keep their current value and the same planning entry is updated rather than duplicated. See synchronization rules.
A successful vehicle upsert also assigns the vehicle to the API key’s organization, so authorized users in that group can see it in TrakarIA. Repeating an unchanged upsert safely reconciles that assignment if it was missing.
After a trial, review the records in TrakarIA and clean them up using the actions available to your group. The public API can cancel a Rental before departure with POST /v1/rentals/{rental_id}/cancel; this also cancels its planning entry. It does not provide a general DELETE route for vehicles or Rentals. Do not assume that cancelling erases their history.
4. Continue the inspection workflow
Section titled “4. Continue the inspection workflow”Use the public Rental id returned by the second request—not its external ID or planning ID—to prepare the departure inspection. The planned departure may be in the future.
export RENTAL_ID='rental_...'export DEPARTURE_IDEMPOTENCY_KEY="departure-${RENTAL_ID}"
curl --fail-with-body --silent --show-error \ -X POST "https://api.trakaria.com/v1/rentals/${RENTAL_ID}/inspections" \ -H "Authorization: Bearer ${TRAKARIA_API_KEY}" \ -H 'Content-Type: application/json' \ -H "Idempotency-Key: ${DEPARTURE_IDEMPOTENCY_KEY}" \ -d '{"type":"departure"}'This call prepares or resumes the same inspection: 201 means it was created and 200 means it already existed. After a timeout, connection loss, 503, or REQUEST_ALREADY_PROCESSING, retry the identical method, path and body with the same Idempotency-Key. Do not create another Rental or external ID. Never send Kernel cycle IDs, revisions, ETag, If-Match or expectedRevision; TrakarIA handles those private concurrency details.
A TrakarIA user must sign in to open the returned launch_url and validate the vehicle condition. The API call does not perform that human validation. After validation, fetch the departure report; after the return, prepare a return inspection and fetch the comparison report. See the complete Rental workflow and exact API reference. You can also receive signed webhooks and recover missed events through GET /v1/events.