API de importación
Mantén tu inventario de Driv.one sincronizado con tu DMS o sistema de stock. Crea y actualiza vehículos, envía inventarios completos, gestiona fotos, a través de una API REST versionada y limitada a tu taller.
La API está pensada para vendedores profesionales, grupos de concesionarios, proveedores de DMS y socios de integración. Los registros que crees aparecen en driv.one bajo tu taller, igual que los autos añadidos a mano.
Primeros pasos
1. Crea una clave de API
Inicia sesión en {link}, elige el taller, ponle un nombre a la clave y cópiala. La clave se muestra una sola vez; si la pierdes, revócala y crea otra.
2. Prueba la autenticación
curl https://api.driv.one/v1/me \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Accept: application/json"
3. Crea un vehículo
curl -X POST https://api.driv.one/v1/vehicles \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"external_id": "STOCK-4821",
"external_updated_at": "2026-09-05T08:30:00Z",
"make": "Volkswagen",
"model": "Golf",
"year": 2022,
"vin": "WVWZZZAUZNW123456",
"license_plate": "1-ABC-123",
"mileage": 41200,
"first_registration": "2022-03-15",
"fuel_type": "petrol",
"gearbox_type": "dct",
"body_type": "hatchback",
"power_hp": 150,
"num_doors": 5,
"num_seats": 5,
"color": "gray",
"interior_material": "fabric",
"vehicle_condition": "used",
"asking_price": 24950,
"is_tax_vehicle": true,
"short_description": "Golf 1.5 TSI Life, first owner, full history",
"seller_description": "Serviced at the dealership, two keys, winter tyres included.",
"features": [
"appleCarplay",
"androidAuto",
"adaptiveCruiseControl",
"ledHeadlights",
"alloyWheels"
],
"parking_assist": [
"sens_front",
"sens_rear",
"cam_rear"
],
"image_urls": [
"https://cdn.example-dealer.be/stock/4821/front.jpg",
"https://cdn.example-dealer.be/stock/4821/interior.jpg"
]
}'
La respuesta es el vehículo guardado con su uuid, public_url, currency y fotos, más un arreglo warnings cuando ocurrió algo no fatal (una foto que no se pudo descargar, un modelo que se creó).
URL base y versiones
https://api.driv.one/v1
La versión mayor forma parte de la ruta. Los cambios incompatibles reciben una nueva versión mayor; /v1 conserva su comportamiento. Los cambios aditivos (campos opcionales nuevos, valores nuevos en enumeraciones) pueden aparecer dentro de v1: lee GET /v1/options en lugar de fijar listas en el código.
Las rutas se muestran sin barra final; también se acepta con ella.
Autenticación
Autenticación con token Bearer y una clave de API del taller. Las claves empiezan por wsk_.
Authorization: Bearer wsk_…
Se acepta X-API-Key: wsk_… como cabecera alternativa. Una clave es de lectura y escritura o de solo lectura; una clave de solo lectura recibe 403 read_only_key en cualquier escritura.
Cabeceras de la petición
| Cabecera | Valor | Propósito |
|---|---|---|
Authorization | Bearer wsk_… | Autentica el taller. |
Content-Type | application/json | Para cuerpos JSON. La subida de archivos de foto usa multipart/form-data. |
Accept | application/json | Las respuestas siempre son JSON. |
Modelo de datos del vehículo
Campos aceptados en POST, PUT y PATCH. Las respuestas devuelven los mismos nombres, más los campos de solo lectura uuid, status (published / unlisted), public_url, currency, images, for_sale_since y created_at.
GET /v1/options; no se acepta nada más.| Campo | Tipo | Al crear | Descripción |
|---|---|---|---|
| Identidad | |||
external_id | string ≤120 | recomendado | Tu propio id estable del vehículo (número de stock, id del DMS). Permite referirse al auto por él y habilita el upsert y la sincronización. |
external_updated_at | datetime | no | Cuándo cambió tu sistema el vehículo por última vez. Una marca de tiempo más antigua que la guardada se rechaza con 409 stale_update. |
license_plate | string ≤20 | no | Debe ser única en toda la plataforma. |
vin | string (17) | no | Número de chasis, único en toda la plataforma. Se guarda en mayúsculas. |
| Marca, modelo y matrícula | |||
make / make_id | string / integer | sí | Marca, por nombre (sin distinguir mayúsculas) o id. GET /v1/makes. |
model / model_id | string / integer | sí | Modelo dentro de la marca. Los nombres desconocidos se rechazan salvo que create_missing_model sea true. |
create_missing_model | boolean | no | Añade un nombre de modelo desconocido bajo la marca en lugar de fallar. Por defecto false. |
vehicle_type / vehicle_type_id | string / integer | no | Car, Motorcycle, SUV, Truck, Van. Por defecto Car. |
year | integer | sí | Año del modelo, 1990–2027. |
first_registration | date | no | AAAA-MM-DD. |
color | string ≤50 | no | Usa un valor de la enumeración de colores para que se traduzca; otras palabras se muestran tal cual. |
mileage | integer | no | Lectura del odómetro, en mileage_unit. |
mileage_unit | enum | no | km (por defecto) o mi. Usa mi para autos de EE. UU./Reino Unido vendidos en el extranjero; el sitio muestra la unidad tal como se envía. |
| Motor y transmisión | |||
motor_type | string ≤100 | no | Denominación del motor, p. ej. "2.0 TDI 150hp". |
fuel_type | enum | no | Ver enumeraciones.petroldieselelectrichybrid_petrolhybrid_dieselphev_petrolphev_diesellpgcnghydrogenmild_hybridotheretiquetas ↓ |
power_hp / power_kw | integer | no | Envía uno de los dos; el otro se deriva. |
cylinder_capacity | integer cc | no | Cilindrada en cm³, p. ej. 1998. |
gearbox_type | enum | no | Manual, automática, semiautomática, CVT o una sola marcha (eléctrico). |
drivetrain | enum | no | front, rear o 4wd. |
emission_standard | enum | no | Norma Euro. |
co2_gkm | integer | no | CO₂ en g/km. |
battery_capacity_kwh | decimal kWh | no | Vehículos eléctricos: capacidad útil de la batería, p. ej. 77.4. Se muestra en lugar de la norma Euro cuando fuel_type es electric. |
battery_soh_pct | integer 0–100 | no | Estado de salud de la batería en %. |
battery_certificate_url | url | no | Enlace al certificado de salud de la batería; se muestra como enlace en el anuncio. |
| Carrocería, dimensiones y ruedas | |||
body_type | enum | no | Tipo de carrocería, como en los filtros del sitio. |
num_doors / num_seats | integer | no | Puertas 1–9, asientos 1–99. |
weight | integer kg | no | Peso en vacío. |
steering_position | enum | no | lhd o rhd. |
tyre_size / bolt_pattern / et_offset | string | no | p. ej. "225/45R17", "5x112", "+35". |
| Interior y confort | |||
interior_color | string ≤50 | no | Texto libre, p. ej. "negro". |
interior_material | enum | no | Tapicería. |
air_conditioning | enum | no | Sin, manual o climatizador automático (1–4 zonas). |
airbags | enum | no | Cuántos airbags tiene. |
| Equipamiento | |||
features | array[string] | no | Slugs de equipamiento del catálogo de abajo. Los slugs desconocidos se rechazan. Enviar [] vacía la lista. |
parking_assist | array[string] | no | Slugs de ayudas de aparcamiento del catálogo de abajo. |
| Venta y estado | |||
is_for_sale | boolean | no | Por defecto true al crear. false retira el auto del marketplace pero lo conserva. |
asking_price | decimal | no | En la moneda del taller (devuelta como `currency`). Número simple, no centavos. |
is_margin_vehicle / is_tax_vehicle | boolean | no | Tratamiento del IVA: régimen de margen o IVA deducible. |
vehicle_condition | enum | no | Nuevo, demo, usado, dañado… |
num_owners | integer | no | Propietarios anteriores, 0–99. |
maintenance_history | enum | no | Estado del libro de mantenimiento. |
carpass_url | url | no | Enlace al documento Car-Pass (Bélgica). |
short_description | string ≤120 | no | Una línea en las tarjetas del listado. |
seller_description | text | no | Descripción completa. |
| Fotos | |||
image_urls | array[url] ≤30 | no | Fotos a descargar de tus servidores, en orden de visualización. Si está presente reemplaza todo el conjunto de fotos; omítelo para no tocarlas. |
external_id, nunca una posición de stock ni un orden de visualización. Es lo que hace funcionar el upsert, GET /v1/vehicles/{ref} por tu id y la sincronización del inventario.Endpoints
Cuenta
Referencia (sin clave)
Vehículos
Fotos
Esquemas completos de petición y respuesta, con todas las enumeraciones: Swagger UI · ReDoc · openapi.json.
Respuesta de listado
{
"count": 37, "limit": 50, "offset": 0, "next_offset": null,
"results": [ { "uuid": "…", "external_id": "STOCK-4821", "status": "published", … } ]
}
Upsert y actualizaciones obsoletas
POST /v1/vehicles con un external_id que tu taller ya usa actualiza ese vehículo (HTTP 200) en lugar de crear otro (HTTP 201). Así una integración simple de "enviar todo cada noche" es idempotente.
Si además envías external_updated_at, una actualización con una marca de tiempo más antigua que la guardada se rechaza con 409 stale_update, de modo que un evento retrasado nunca sobrescribe uno más nuevo. Dentro de una sincronización ese vehículo se reporta como skipped_stale y el resto continúa.
PATCH cambia solo los campos que envías. PUT es un reemplazo completo: los campos opcionales que omitas se vacían. Ambos aceptan el mismo cuerpo que la creación.
Sincronización del inventario
POST /v1/vehicles/sync hace upsert de todo un inventario en una llamada (≤200 vehículos; repítela para más). Cada vehículo necesita un external_id.
{
"complete": true,
"vehicles": [
{
"external_id": "STOCK-4821",
"make": "Volkswagen",
"model": "Golf",
"year": 2022,
"asking_price": 24950,
"fuel_type": "petrol",
"mileage": 41200
},
{
"external_id": "STOCK-4835",
"make": "Audi",
"model": "A4",
"year": 2021,
"asking_price": 28900,
"fuel_type": "diesel",
"body_type": "estate"
}
]
}
- Validación todo o nada. Primero se valida todo el contenido. Un vehículo inválido rechaza la llamada con
422y un mapavehiclespor vehículo; no se escribe nada. complete: truedeclara que el contenido es todo tu stock. Los vehículos gestionados por la API (los que llevan uno de tus ids externos) que falten se retiran de la venta, nunca se borran: siguen en tu panel y vuelven si los envías de nuevo.- Protección contra vacío. Una sincronización completa sin vehículos necesita
allow_empty: true; si no,409 empty_snapshot. dry_run: truedevuelvewould_create,would_update,would_unlisty no escribe nada.- Cupos. Los vehículos que superen tus cupos de venta se guardan sin publicar con un aviso
sale_limit_reacheden lugar de hacer fallar la sincronización.
Los vehículos añadidos a mano en el sitio web nunca se tocan en una sincronización.
Cupos de venta
Cada cuenta de taller tiene un número de vehículos que pueden estar en venta al mismo tiempo (nivel gratuito, niveles de suscripción o una cantidad asignada por Driv.one). GET /v1/me devuelve slots.used, slots.limit y slots.available.
Una creación o actualización que supere el cupo falla con 403 sale_limit_reached. Para liberar un cupo, haz PATCH {"is_for_sale": false} a un vehículo: se conserva y puede volver a publicarse. Puedes comprar más cupos en {link}.
Fotos
Las fotos están ordenadas; el orden 0 es la foto principal que aparece en las tarjetas. Las imágenes grandes se redimensionan a 2560 px en el lado largo y se recodifican; lo que supere 15 MB después de eso se rechaza.
Con el vehículo
Envía image_urls al crear o actualizar. Las fotos se descargan de tus servidores en el orden indicado y reemplazan todo el conjunto de fotos. Omite el campo para dejar las fotos como están. Si no se puede descargar ninguna URL, se conservan las fotos existentes y se devuelve un aviso.
De una en una
curl -X POST https://api.driv.one/v1/vehicles/STOCK-4821/images \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"url": "https://cdn.example-dealer.be/stock/4821/rear.jpg", "order": 1}'
curl -X POST https://api.driv.one/v1/vehicles/STOCK-4821/images \
-H "Authorization: Bearer YOUR_API_KEY" \
-F "image=@rear.jpg" -F "order=1"
Reordenar
curl -X PUT https://api.driv.one/v1/vehicles/STOCK-4821/images/order \
-H "Authorization: Bearer YOUR_API_KEY" -H "Content-Type: application/json" \
-d '{"ids": [912, 910, 911]}'
http(s) públicas. Los destinos locales, privados y reservados se rechazan en cada redirección. Se comprueba que el contenido sea una imagen real sin importar el Content-Type declarado.Equipamiento (106 valores)
Envía el equipamiento como slugs en features y las ayudas de aparcamiento en parking_assist. Solo se aceptan los valores siguientes; los slugs desconocidos devuelven 422 indicándolos. Omitir el campo en PATCH conserva el equipamiento; enviar [] lo vacía. Etiquetas en todos los idiomas: GET /v1/options.
Ayudas de aparcamiento parking_assist
6cam_360Cámara 360° · 360° Cameracam_frontCámara frontal · Front cameracam_rearCámara trasera · Rear cameraself_steeringSistemas de autoguiado · Self-steering systemssens_frontSensores delanteros · Front parking sensorssens_rearSensores traseros · Rear parking sensorsExterior features 78
Electrónica
10absABS · ABSespESP · ESPimmobiliserInmovilizador electrónico · Electronic immobilisercentralLockingCierre centralizado · Central lockingkeylessCierre centralizado sin llave · Keyless central lockingrainSensorSensor de lluvia · Rain sensorlightSensorSensor de luz · Light sensortyrePressureMonitorControl de presión de neumáticos · Tyre pressure monitoringstartStopSistema Start/Stop · Start/stop systemelectricTailgatePortón eléctrico · Electric tailgateIluminación
6fogLightsFaros antiniebla · Fog lightsledDrlLuces diurnas LED · LED daytime running lightsdrlLuces diurnas · Daytime running lightscorneringLightLuz de curva · Cornering lightheadlightWasherLimpiafaros · Headlight washerdynamicIndicatorsIndicadores dinámicos / secuenciales / deslizantes · Dynamic / sweeping / sliding indicatorsFaros
7biXenonHeadlightsFaros bi-xenón · Bi-xenon headlightsxenonHeadlightsFaros de xenón · Xenon headlightsledHeadlightsFaros LED · LED headlightslaserLightLuz láser · Laser lighthighBeamAssistAsistente de luz larga · High beam assistnightVisionAsistente de visión nocturna · Night vision assistantmatrixLightsLuces inteligentes / matriciales · Intelligent / matrix lightsAsistentes de conducción
12distanceWarnerAvisador de distancia · Distance warninghillStartAssistAsistente de arranque en pendiente · Hill start assistspeedLimiterLimitador de velocidad · Speed limiteremergencyBrakeAssistAsistente de frenada de emergencia · Emergency brake assistlaneAssistAsistente de carril · Lane assistblindSpotMonitorAsistente de ángulo muerto · Blind spot monitortractionControlControl de tracción · Traction controltrafficSignRecognitionReconocimiento de señales · Traffic sign recognitionadaptiveCorneringLuz de curva adaptativa · Adaptive cornering lightcruiseControlControl de crucero · Cruise controladaptiveCruiseControlControl de crucero adaptativo · Adaptive cruise controlfatigueWarnerAsistente de fatiga · Fatigue warning systemConfort y otros
43tintedWindowsVentanas tintadas · Tinted windowsadaptiveSuspensionSuspensión adaptativa · Adaptive suspensionallWeatherTyresNeumáticos para todo tiempo · All-weather tyresheatedWindscreenParabrisas calefactable · Heated windscreendisabledAccessAcceso adaptado · Disabled accessroofRailsBarras de techo · Roof railsairSuspensionSuspensión neumática · Air suspensionspareWheelRueda de repuesto · Spare wheeltyreSealantKit antipinchazos · Tyre sealant kitfullSizeSpareRueda de repuesto completa · Full-size spare wheelpowerSteeringDirección asistida · Power steeringsummerTyresNeumáticos de verano · Summer tyressportSuspensionSuspensión deportiva · Sport suspensionsportPackagePaquete deportivo · Sport packagesteelWheelsLlantas de acero · Steel wheelsalloyWheelsLlantas de aleación · Alloy wheelswinterPackagePaquete de invierno · Winter packagewinterTyresNeumáticos de invierno · Winter tyrespanoramicRoofTecho panorámico · Panoramic roofslidingRoofTecho deslizante · Sliding rooffoldingRoofTecho plegable · Folding rooftowHitchBola de remolque · Tow hitchalarmSystemSistema de alarma · Alarm systemambientLightingIluminación ambiental · Ambient lightingelectricWindowsElevalunas eléctrico · Electric windowshandsFreeSistema manos libres · Hands-free systemcargoPartitionSeparador del maletero · Cargo area partitionisofixIsofix · IsofixisofixPassengerIsofix asiento del copiloto · Isofix passenger seatemergencyCallSystemSistema de llamada de emergencia · Emergency call systemsmokersPackagePaquete fumador · Smoker's packagerightHandDriveConducción por la derecha · Right-hand driveskiStorageBolsa portaesquís · Ski storageauxiliaryHeatingCalefacción auxiliar · Auxiliary heatingusbUSB · USBheatedSteeringWheelVolante calefactado · Heated steering wheelleatherSteeringWheelVolante de cuero · Leather steering wheelmultifunctionSteeringWheelVolante multifunción · Multifunction steering wheelpaddleShiftersLevas de cambio · Paddle shifterselectricMirrorsEspejos eléctricos · Electric mirrorselectricFoldingMirrorsEspejos eléctricos plegables · Electric folding mirrorsautoGlareFreeMirrorEspejo interior antideslumbrante · Auto-dimming interior mirrorvirtualMirrorsEspejos laterales virtuales · Virtual side mirrorsInterior features 28
Infoentretenimiento
17androidAutoAndroid Auto · Android AutoappleCarplayApple CarPlay · Apple CarPlaybluetoothBluetooth · BluetoothboardComputerOrdenador de abordo · On-board computercdPlayerReproductor de CD · CD playerheadUpDisplayHead-up display · Head-up displayinductiveChargingCarga inductiva para smartphones · Inductive charging for smartphonesmusicStreamingMúsica en streaming integrada · Integrated music streamingnavigationSistema de navegación · Navigation systemradioDabRadio DAB · DAB radiosoundSystemSistema de sonido · Sound systemtouchscreenPantalla táctil · TouchscreentunerRadioSintonizador/Radio · Tuner/RadiotvTV · TVvoiceControlControl por voz · Voice controlwifiHotspotPunto de acceso Wi-Fi · Wi-Fi hotspotdigitalInstrumentClusterCuadro de instrumentos digital · Fully digital instrument clusterAsientos
11armrestApoyabrazos · ArmrestelectricSeatAdjustAjuste eléctrico de asientos · Electric seat adjustmentelectricSeatAdjustMemoryAjuste eléctrico con memoria · Electric seat adjustment with memoryelectricSeatAdjustRearAjuste eléctrico trasero · Electric rear seat adjustmentlumbarSupportApoyo lumbar · Lumbar supportmassageSeatsAsientos con masaje · Massage seatsseatVentilationVentilación de asientos · Seat ventilationseatHeatingCalefacción de asientos · Seat heatingseatHeatingRearCalefacción de asientos traseros · Rear seat heatingsportSeatsAsientos deportivos · Sport seatsfoldablePassengerSeatAsiento del copiloto abatible · Foldable passenger seatEnumeraciones
Etiquetas en el idioma seleccionado; todos los idiomas están en GET /v1/options. Los valores desconocidos se rechazan, no se adivinan.
vehicle_type
year
1990 – 2027
fuel_type
12| Valor | Etiqueta | English |
|---|---|---|
petrol | Gasolina | Petrol / Gasoline |
diesel | Diésel | Diesel |
electric | Eléctrico | Electric |
hybrid_petrol | Híbrido (Gasolina) | Hybrid (Petrol) |
hybrid_diesel | Híbrido (Diésel) | Hybrid (Diesel) |
phev_petrol | PHEV (Gasolina) | PHEV (Petrol) |
phev_diesel | PHEV (Diésel) | PHEV (Diesel) |
lpg | GLP | LPG |
cng | GNC | CNG |
hydrogen | Hidrógeno | Hydrogen |
mild_hybrid | Híbrido suave | Mild Hybrid |
other | Otro | Other |
gearbox_type
5| Valor | Etiqueta | English |
|---|---|---|
manual | Manual | Manual |
automatic | Automático | Automatic |
cvt | CVT | CVT |
dct | Doble embrague (DCT) | Dual-Clutch (DCT) |
semi_auto | Semiautomático | Semi-automatic |
body_type
11| Valor | Etiqueta | English |
|---|---|---|
sedan | Sedán | Sedan |
hatchback | Hatchback | Hatchback |
estate | Familiar / Break | Estate / Break |
coupe | Coupé | Coupé |
convertible | Cabrio / Convertible | Cabriolet / Convertible |
suv | SUV | SUV |
crossover | Crossover | Crossover |
mpv | MPV / Monovolumen | MPV / Minivan |
pickup | Pickup | Pickup |
van | Furgoneta | Van |
other | Otro | Other |
drivetrain
3| Valor | Etiqueta | English |
|---|---|---|
4wd | Tracción a las 4 ruedas | 4 wheel drive |
front | Tracción delantera | Front drive |
rear | Tracción trasera | Rear drive |
steering_position
2| Valor | Etiqueta | English |
|---|---|---|
lhd | Volante a la izquierda | Left-hand drive |
rhd | Volante a la derecha | Right-hand drive |
emission_standard
12| Valor | Etiqueta | English |
|---|---|---|
euro0 | Euro 0 | Euro 0 |
euro1 | Euro 1 | Euro 1 |
euro2 | Euro 2 | Euro 2 |
euro3 | Euro 3 | Euro 3 |
euro4 | Euro 4 | Euro 4 |
euro5 | Euro 5 | Euro 5 |
euro6 | Euro 6 | Euro 6 |
euro6b | Euro 6b | Euro 6b |
euro6c | Euro 6c | Euro 6c |
euro6d | Euro 6d | Euro 6d |
euro6d_temp | Euro 6d-temp | Euro 6d-temp |
other | Otro | Other |
color
15color es texto libre; estos valores son los que el sitio traduce.
| Valor | Etiqueta | English |
|---|---|---|
white | Blanco | White |
black | Negro | Black |
silver | Plateado | Silver |
gray | Gris | Gray |
blue | Azul | Blue |
red | Rojo | Red |
green | Verde | Green |
yellow | Amarillo | Yellow |
orange | Naranja | Orange |
brown | Marrón | Brown |
beige | Beige | Beige |
gold | Dorado | Gold |
purple | Morado | Purple |
pink | Rosa | Pink |
other | Otro | Other |
interior_material
6| Valor | Etiqueta | English |
|---|---|---|
alcantara | Alcántara | Alcantara |
fabric | Tela | Fabric |
artificial_leather | Cuero sintético | Artificial leather |
partial_leather | Cuero parcial | Partial leather |
full_leather | Cuero completo | Full leather |
velour | Velur | Velour |
vehicle_condition
6| Valor | Etiqueta | English |
|---|---|---|
factory_new | Nuevo de fábrica | Factory New |
new_condition | En estado nuevo | New Condition |
new_with_damage | Estado nuevo con daños | New Condition with Damage |
used | Usado | Used |
used_with_damage | Usado con daños | Used with Damage |
parts | Para piezas | Used for Parts |
maintenance_history
4| Valor | Etiqueta | English |
|---|---|---|
none | No | No |
dealership | Sí, con concesionario | Yes, with dealership |
platform | Sí, con the platform | Yes, with the platform |
both | Sí, con concesionario y the platform | Yes, with dealership and the platform |
airbags
4| Valor | Etiqueta | English |
|---|---|---|
airbagDriver | Airbag del conductor | Driver airbag |
airbagFront | Airbags frontales | Front airbags |
airbagFrontSide | Airbags frontales y laterales | Front & side airbags |
airbagFull | Airbags frontales, laterales y traseros | Front, side & rear airbags |
air_conditioning
5| Valor | Etiqueta | English |
|---|---|---|
acNone | Sin climatización | None |
acManual | Manual | Manual |
ac2Zone | Automático 2 zonas | 2-zone automatic |
ac3Zone | Automático 3 zonas | 3-zone automatic |
ac4Zone | Automático 4 zonas | 4-zone automatic |
Errores
Los errores son JSON con un código error estable y un message legible; algunos incluyen claves adicionales.
{
"error": "validation_error",
"message": "One or more fields are invalid.",
"fields": {
"fuel_type": [
"\"gasoline\" is not a valid choice."
],
"features": [
"Unknown features: sunroof. GET /v1/options lists the accepted values."
]
}
}
| HTTP | error | Significado |
|---|---|---|
| 401 | invalid_api_key | Clave ausente, desconocida o revocada. |
| 403 | read_only_key | La clave solo puede leer. |
| 403 | workshop_blocked / workshop_inactive | El taller no puede publicar por el momento. |
| 403 | sale_limit_reached | Todos los cupos de venta están en uso. El cuerpo incluye used, limit, available. |
| 404 | vehicle_not_found / image_not_found / make_not_found | No encontrado dentro de este taller. |
| 409 | duplicate_vin / duplicate_license_plate | Otro vehículo ya tiene ese identificador. |
| 409 | stale_update | El external_updated_at guardado es más reciente que el enviado. |
| 409 | empty_snapshot | Una sincronización completa sin vehículos necesita allow_empty: true. |
| 422 | validation_error | Errores por campo en `fields` (o `vehicles` en una sincronización). No se escribió nada. |
| 422 | image_url_* / image_too_large / image_unreadable | No se pudo obtener una foto. Al crear o actualizar son avisos, no fallos. |
| 429 | — | Límite de uso. Reintenta tras la cabecera `Retry-After`. |
Respuestas correctas: 200 lectura o actualización, 201 creado, 204 eliminado.
Límites de uso
Cada clave puede hacer 3 000 peticiones por hora. Por encima, la API responde 429 con una cabecera Retry-After. Una sincronización nocturna completa de unos cientos de autos usa pocas llamadas; si necesitas más, contacta con Driv.one.
Las descargas de fotos cuentan en el mismo presupuesto a través de las llamadas que las provocan, no por imagen.