API de importação
Mantenha o seu inventário Driv.one alinhado com o seu DMS ou sistema de stock. Crie e atualize veículos, envie inventários completos, gira fotos — através de uma API REST versionada e limitada à sua oficina.
A API destina-se a vendedores profissionais, grupos de concessionários, fornecedores de DMS e parceiros de integração. Os registos que criar aparecem em driv.one sob a sua oficina, tal como os carros adicionados à mão.
Início rápido
1. Crie uma chave de API
Inicie sessão em {link}, escolha a oficina, dê um nome à chave e copie-a. A chave é mostrada uma única vez; se a perder, revogue-a e crie outra.
2. Teste a autenticação
curl https://api.driv.one/v1/me \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Accept: application/json"
3. Crie um veí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"
]
}'
A resposta é o veículo guardado com o seu uuid, public_url, currency e fotos, mais uma lista warnings quando algo não fatal aconteceu (uma foto que não pôde ser obtida, um modelo que foi criado).
URL base e versões
https://api.driv.one/v1
A versão principal faz parte do caminho. Alterações incompatíveis recebem uma nova versão principal; /v1 mantém o seu comportamento. Acréscimos (novos campos opcionais, novos valores de enumeração) podem surgir dentro da v1 — leia GET /v1/options em vez de fixar listas no código.
Os caminhos são mostrados sem barra final; com barra também é aceite.
Autenticação
Autenticação por token Bearer com uma chave de API da oficina. As chaves começam por wsk_.
Authorization: Bearer wsk_…
X-API-Key: wsk_… é aceite como cabeçalho alternativo. Uma chave é de leitura e escrita ou só de leitura; uma chave só de leitura recebe 403 read_only_key em qualquer escrita.
Cabeçalhos do pedido
| Cabeçalho | Valor | Finalidade |
|---|---|---|
Authorization | Bearer wsk_… | Autentica a oficina. |
Content-Type | application/json | Para corpos JSON. O envio de ficheiros de foto usa multipart/form-data. |
Accept | application/json | As respostas são sempre JSON. |
Modelo de dados do veículo
Campos aceites em POST, PUT e PATCH. As respostas devolvem os mesmos nomes, mais os campos só de leitura uuid, status (published / unlisted), public_url, currency, images, for_sale_since e created_at.
GET /v1/options; nada mais é aceite.| Campo | Tipo | Ao criar | Descrição |
|---|---|---|---|
| Identidade | |||
external_id | string ≤120 | recomendado | O seu próprio id estável do veículo (número de stock, id do DMS). Permite referir o carro por ele e ativa o upsert e a sincronização. |
external_updated_at | datetime | não | Quando o seu sistema alterou o veículo pela última vez. Uma data mais antiga do que a guardada é recusada com 409 stale_update. |
license_plate | string ≤20 | não | Tem de ser única em toda a plataforma. |
vin | string (17) | não | Número de chassis, único em toda a plataforma. Guardado em maiúsculas. |
| Marca, modelo e matrícula | |||
make / make_id | string / integer | sim | Marca, por nome (sem distinguir maiúsculas) ou id. GET /v1/makes. |
model / model_id | string / integer | sim | Modelo dentro da marca. Nomes desconhecidos são recusados, salvo se create_missing_model for true. |
create_missing_model | boolean | não | Adiciona um nome de modelo desconhecido sob a marca em vez de falhar. Por omissão false. |
vehicle_type / vehicle_type_id | string / integer | não | Car, Motorcycle, SUV, Truck, Van. Por omissão Car. |
year | integer | sim | Ano do modelo, 1990–2027. |
first_registration | date | não | AAAA-MM-DD. |
color | string ≤50 | não | Use um valor da enumeração de cores para o ter traduzido; outras palavras são mostradas como enviadas. |
mileage | integer | não | Quilometragem, em mileage_unit. |
mileage_unit | enum | não | km (predefinição) ou mi. Use mi para veículos dos EUA/Reino Unido vendidos no estrangeiro; o site mostra a unidade tal como enviada. |
| Motor e transmissão | |||
motor_type | string ≤100 | não | Designação do motor, p. ex. "2.0 TDI 150hp". |
fuel_type | enum | não | Ver enumerações.petroldieselelectrichybrid_petrolhybrid_dieselphev_petrolphev_diesellpgcnghydrogenmild_hybridotheretiquetas ↓ |
power_hp / power_kw | integer | não | Envie um dos dois; o outro é derivado. |
cylinder_capacity | integer cc | não | Cilindrada em cm³, p. ex. 1998. |
gearbox_type | enum | não | Manual, automática, semiautomática, CVT ou velocidade única (elétrico). |
drivetrain | enum | não | front, rear ou 4wd. |
emission_standard | enum | não | Norma Euro. |
co2_gkm | integer | não | CO₂ em g/km. |
battery_capacity_kwh | decimal kWh | não | Veículos elétricos: capacidade útil da bateria, p. ex. 77.4. Mostrada em vez da norma Euro quando fuel_type é electric. |
battery_soh_pct | integer 0–100 | não | Estado de saúde da bateria (SOH) em %. |
battery_certificate_url | url | não | Ligação para o certificado da bateria; mostrada como ligação clicável no anúncio. |
| Carroçaria, dimensões e rodas | |||
body_type | enum | não | Tipo de carroçaria, como nos filtros do site. |
num_doors / num_seats | integer | não | Portas 1–9, lugares 1–99. |
weight | integer kg | não | Peso em vazio. |
steering_position | enum | não | lhd ou rhd. |
tyre_size / bolt_pattern / et_offset | string | não | p. ex. "225/45R17", "5x112", "+35". |
| Interior e conforto | |||
interior_color | string ≤50 | não | Texto livre, p. ex. "preto". |
interior_material | enum | não | Estofos. |
air_conditioning | enum | não | Sem, manual ou climatização automática (1–4 zonas). |
airbags | enum | não | Quantos airbags tem. |
| Equipamento | |||
features | array[string] | não | Slugs de equipamento do catálogo abaixo. Slugs desconhecidos são recusados. Enviar [] limpa a lista. |
parking_assist | array[string] | não | Slugs de ajudas de estacionamento do catálogo abaixo. |
| Venda e estado | |||
is_for_sale | boolean | não | Por omissão true ao criar. false retira o carro do marketplace mas mantém-no. |
asking_price | decimal | não | Na moeda da oficina (devolvida como `currency`). Número simples, não cêntimos. |
is_margin_vehicle / is_tax_vehicle | boolean | não | Tratamento do IVA: regime da margem ou IVA dedutível. |
vehicle_condition | enum | não | Novo, demonstração, usado, danificado… |
num_owners | integer | não | Proprietários anteriores, 0–99. |
maintenance_history | enum | não | Estado do livro de manutenção. |
carpass_url | url | não | Ligação ao documento Car-Pass (Bélgica). |
short_description | string ≤120 | não | Uma linha nos cartões da listagem. |
seller_description | text | não | Descrição completa. |
| Fotos | |||
image_urls | array[url] ≤30 | não | Fotos a descarregar dos seus servidores, pela ordem de exibição. Se presente, substitui todo o conjunto de fotos; omita para não tocar nas fotos. |
external_id — nunca uma posição de stock nem uma ordem de exibição. É o que faz funcionar o upsert, GET /v1/vehicles/{ref} pelo seu id e a sincronização do inventário.Endpoints
Conta
Referência (sem chave)
Veículos
Fotos
Esquemas completos de pedido e resposta, com todas as enumerações: Swagger UI · ReDoc · openapi.json.
Resposta de listagem
{
"count": 37, "limit": 50, "offset": 0, "next_offset": null,
"results": [ { "uuid": "…", "external_id": "STOCK-4821", "status": "published", … } ]
}
Upsert e atualizações obsoletas
POST /v1/vehicles com um external_id que a sua oficina já usa atualiza esse veículo (HTTP 200) em vez de criar outro (HTTP 201). Assim, uma integração simples de "enviar tudo todas as noites" é idempotente.
Se também enviar external_updated_at, uma atualização com uma data mais antiga do que a guardada é recusada com 409 stale_update, para que um evento atrasado nunca substitua um mais recente. Numa sincronização, esse veículo é reportado como skipped_stale e o resto prossegue.
PATCH altera apenas os campos que enviar. PUT é uma substituição completa: os campos opcionais omitidos são limpos. Ambos aceitam o mesmo corpo da criação.
Sincronização do inventário
POST /v1/vehicles/sync faz upsert de um inventário inteiro numa só chamada (≤200 veículos; repita para mais). Cada veículo precisa de um 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"
}
]
}
- Validação tudo ou nada. Todo o conteúdo é validado primeiro. Um veículo inválido rejeita a chamada com
422e um mapavehiclespor veículo; nada é escrito. complete: truedeclara que o conteúdo é todo o seu stock. Os veículos geridos pela API (com um dos seus ids externos) que faltem são retirados da venda, nunca apagados — ficam no seu painel e voltam se os enviar de novo.- Proteção contra vazio. Uma sincronização completa sem veículos precisa de
allow_empty: true; caso contrário,409 empty_snapshot. dry_run: truedevolvewould_create,would_update,would_unliste não escreve nada.- Vagas. Os veículos além das suas vagas de venda são guardados não publicados com um aviso
sale_limit_reached, em vez de fazer falhar a sincronização.
Os veículos adicionados à mão no site nunca são tocados por uma sincronização.
Vagas de venda
Cada conta de oficina tem um número de veículos que podem estar à venda ao mesmo tempo (nível gratuito, subscrições, ou um número atribuído por Driv.one). GET /v1/me devolve slots.used, slots.limit e slots.available.
Uma criação ou atualização que exceda esse número falha com 403 sale_limit_reached. Para libertar uma vaga, faça PATCH {"is_for_sale": false} num veículo — fica guardado e pode voltar a ser publicado. Pode comprar mais vagas em {link}.
Fotos
As fotos são ordenadas; a ordem 0 é a foto principal mostrada nos cartões. As imagens grandes são redimensionadas para 2560 px no lado maior e recodificadas; o que exceder 15 MB depois disso é recusado.
Com o veículo
Envie image_urls ao criar ou atualizar. As fotos são descarregadas dos seus servidores pela ordem indicada e substituem todo o conjunto de fotos. Omita o campo para deixar as fotos como estão. Se nenhum URL puder ser obtido, as fotos existentes mantêm-se e é devolvido um aviso.
Uma de cada vez
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úblicos. Destinos locais, privados e reservados são recusados em cada redirecionamento. O conteúdo é verificado como imagem real, independentemente do Content-Type declarado.Equipamento (106 valores)
Envie o equipamento como slugs em features e as ajudas de estacionamento em parking_assist. Só os valores abaixo são aceites; slugs desconhecidos devolvem 422 a nomeá-los. Omitir o campo em PATCH mantém o equipamento; enviar [] limpa-o. Etiquetas em todos os idiomas: GET /v1/options.
Ajudas de estacionamento parking_assist
6cam_360Câmara 360° · 360° Cameracam_frontCâmara frontal · Front cameracam_rearCâmara traseira · Rear cameraself_steeringSistemas de auto-direção · Self-steering systemssens_frontSensores dianteiros · Front parking sensorssens_rearSensores traseiros · Rear parking sensorsExterior features 78
Eletrônica
10absABS · ABSespESP · ESPimmobiliserImobilizador eletrónico · Electronic immobilisercentralLockingFecho centralizado · Central lockingkeylessFecho centralizado sem chave · Keyless central lockingrainSensorSensor de chuva · Rain sensorlightSensorSensor de luz · Light sensortyrePressureMonitorControlo da pressão dos pneus · Tyre pressure monitoringstartStopSistema Start/Stop · Start/stop systemelectricTailgateMala elétrica · Electric tailgateIluminação
6fogLightsFaróis de nevoeiro · Fog lightsledDrlLuzes diurnas LED · LED daytime running lightsdrlLuzes diurnas · Daytime running lightscorneringLightLuz de curva · Cornering lightheadlightWasherLimpa-faróis · Headlight washerdynamicIndicatorsIndicadores dinâmicos / sequenciais / deslizantes · Dynamic / sweeping / sliding indicatorsFaróis
7biXenonHeadlightsFaróis bi-xénon · Bi-xenon headlightsxenonHeadlightsFaróis de xénon · Xenon headlightsledHeadlightsFaróis LED · LED headlightslaserLightLuzes laser · Laser lighthighBeamAssistAssistente de luzes altas · High beam assistnightVisionAssistente de visão noturna · Night vision assistantmatrixLightsLuzes inteligentes / matriciais · Intelligent / matrix lightsAssistentes de condução
12distanceWarnerAviso de distância · Distance warninghillStartAssistAssistente de arranque em declive · Hill start assistspeedLimiterLimitador de velocidade · Speed limiteremergencyBrakeAssistAssistente de travagem de emergência · Emergency brake assistlaneAssistAssistente de manutenção de faixa · Lane assistblindSpotMonitorAssistente de ângulo morto · Blind spot monitortractionControlControlo de tração · Traction controltrafficSignRecognitionReconhecimento de sinais · Traffic sign recognitionadaptiveCorneringLuz de curva adaptativa · Adaptive cornering lightcruiseControlCruise control · Cruise controladaptiveCruiseControlCruise control adaptativo · Adaptive cruise controlfatigueWarnerAssistente de fadiga · Fatigue warning systemConforto & outros
43tintedWindowsJanelas fumadas · Tinted windowsadaptiveSuspensionSuspensão adaptativa · Adaptive suspensionallWeatherTyresPneus para todas as estações · All-weather tyresheatedWindscreenPara-brisas aquecido · Heated windscreendisabledAccessAcesso para deficientes · Disabled accessroofRailsBarras de tejadilho · Roof railsairSuspensionSuspensão pneumática · Air suspensionspareWheelRoda sobressalente · Spare wheeltyreSealantKit antipontura · Tyre sealant kitfullSizeSpareRoda sobressalente completa · Full-size spare wheelpowerSteeringDireção assistida · Power steeringsummerTyresPneus de verão · Summer tyressportSuspensionSuspensão desportiva · Sport suspensionsportPackagePacote desportivo · Sport packagesteelWheelsJantes de aço · Steel wheelsalloyWheelsJantes em liga leve · Alloy wheelswinterPackagePacote de inverno · Winter packagewinterTyresPneus de inverno · Winter tyrespanoramicRoofTejadilho panorâmico · Panoramic roofslidingRoofTejadilho deslizante · Sliding rooffoldingRoofTeto dobrável · Folding rooftowHitchGancho de reboque · Tow hitchalarmSystemSistema de alarme · Alarm systemambientLightingIluminação ambiente · Ambient lightingelectricWindowsVidros elétricos · Electric windowshandsFreeSistema mãos-livres · Hands-free systemcargoPartitionSeparador da bagageira · Cargo area partitionisofixIsofix · IsofixisofixPassengerIsofix banco do passageiro · Isofix passenger seatemergencyCallSystemSistema de chamada de emergência · Emergency call systemsmokersPackagePacote de fumador · Smoker's packagerightHandDriveCondução pela direita · Right-hand driveskiStorageSaco para skis · Ski storageauxiliaryHeatingAquecimento auxiliar · Auxiliary heatingusbUSB · USBheatedSteeringWheelVolante aquecido · Heated steering wheelleatherSteeringWheelVolante em couro · Leather steering wheelmultifunctionSteeringWheelVolante multifunções · Multifunction steering wheelpaddleShiftersPaletas de mudança · Paddle shifterselectricMirrorsEspelhos elétricos · Electric mirrorselectricFoldingMirrorsEspelhos elétricos dobráveis · Electric folding mirrorsautoGlareFreeMirrorEspelho interior antiofuscante · Auto-dimming interior mirrorvirtualMirrorsEspelhos laterais virtuais · Virtual side mirrorsInterior features 28
Infoentretenimento
17androidAutoAndroid Auto · Android AutoappleCarplayApple CarPlay · Apple CarPlaybluetoothBluetooth · BluetoothboardComputerComputador de bordo · On-board computercdPlayerLeitor de CD · CD playerheadUpDisplayHead-up display · Head-up displayinductiveChargingCarregamento indutivo para smartphones · Inductive charging for smartphonesmusicStreamingStreaming de música integrado · Integrated music streamingnavigationSistema de navegação · Navigation systemradioDabRádio DAB · DAB radiosoundSystemSistema de som · Sound systemtouchscreenEcrã tátil · TouchscreentunerRadioSintonizador/Rádio · Tuner/RadiotvTV · TVvoiceControlControlo por voz · Voice controlwifiHotspotHotspot Wi-Fi · Wi-Fi hotspotdigitalInstrumentClusterPainel de instrumentos totalmente digital · Fully digital instrument clusterAssentos
11armrestApoio de braço · ArmrestelectricSeatAdjustAjuste elétrico dos assentos · Electric seat adjustmentelectricSeatAdjustMemoryAjuste elétrico com memória · Electric seat adjustment with memoryelectricSeatAdjustRearAjuste elétrico dos assentos traseiros · Electric rear seat adjustmentlumbarSupportSuporte lombar · Lumbar supportmassageSeatsAssentos com massagem · Massage seatsseatVentilationVentilação dos assentos · Seat ventilationseatHeatingAquecimento dos assentos · Seat heatingseatHeatingRearAquecimento dos assentos traseiros · Rear seat heatingsportSeatsAssentos desportivos · Sport seatsfoldablePassengerSeatBanco do passageiro rebatível · Foldable passenger seatEnumerações
Etiquetas no idioma selecionado; todos os idiomas estão em GET /v1/options. Valores desconhecidos são recusados, não adivinhados.
vehicle_type
year
1990 – 2027
fuel_type
12| Valor | Etiqueta | English |
|---|---|---|
petrol | Gasolina | Petrol / Gasoline |
diesel | Gasóleo | Diesel |
electric | Elétrico | Electric |
hybrid_petrol | Híbrido (Gasolina) | Hybrid (Petrol) |
hybrid_diesel | Híbrido (Gasóleo) | Hybrid (Diesel) |
phev_petrol | PHEV (Gasolina) | PHEV (Petrol) |
phev_diesel | PHEV (Gasóleo) | PHEV (Diesel) |
lpg | GPL | LPG |
cng | GNC | CNG |
hydrogen | Hidrogénio | Hydrogen |
mild_hybrid | Híbrido suave | Mild Hybrid |
other | Outro | Other |
gearbox_type
5| Valor | Etiqueta | English |
|---|---|---|
manual | Manual | Manual |
automatic | Automático | Automatic |
cvt | CVT | CVT |
dct | Dupla embraiagem (DCT) | Dual-Clutch (DCT) |
semi_auto | Semi-automático | Semi-automatic |
body_type
11| Valor | Etiqueta | English |
|---|---|---|
sedan | Sedã | Sedan |
hatchback | Hatchback | Hatchback |
estate | Familiar / Break | Estate / Break |
coupe | Coupé | Coupé |
convertible | Descapotável | Cabriolet / Convertible |
suv | SUV | SUV |
crossover | Crossover | Crossover |
mpv | MPV / Monovolume | MPV / Minivan |
pickup | Pickup | Pickup |
van | Carrinha | Van |
other | Outro | Other |
drivetrain
3| Valor | Etiqueta | English |
|---|---|---|
4wd | Tração nas 4 rodas | 4 wheel drive |
front | Tração dianteira | Front drive |
rear | Tração traseira | Rear drive |
steering_position
2| Valor | Etiqueta | English |
|---|---|---|
lhd | Volante à esquerda | Left-hand drive |
rhd | Volante à direita | 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 | Outro | Other |
color
15color é texto livre; estes valores são os que o site traduz.
| Valor | Etiqueta | English |
|---|---|---|
white | Branco | White |
black | Preto | Black |
silver | Prata | Silver |
gray | Cinza | Gray |
blue | Azul | Blue |
red | Vermelho | Red |
green | Verde | Green |
yellow | Amarelo | Yellow |
orange | Laranja | Orange |
brown | Marrom | Brown |
beige | Bege | Beige |
gold | Dourado | Gold |
purple | Roxo | Purple |
pink | Rosa | Pink |
other | Outro | Other |
interior_material
6| Valor | Etiqueta | English |
|---|---|---|
alcantara | Alcântara | Alcantara |
fabric | Tecido | Fabric |
artificial_leather | Couro artificial | Artificial leather |
partial_leather | Couro parcial | Partial leather |
full_leather | Couro integral | Full leather |
velour | Veludo | Velour |
vehicle_condition
6| Valor | Etiqueta | English |
|---|---|---|
factory_new | Novo de fábrica | Factory New |
new_condition | Estado novo | New Condition |
new_with_damage | Estado novo com danos | New Condition with Damage |
used | Usado | Used |
used_with_damage | Usado com danos | Used with Damage |
parts | Para peças | Used for Parts |
maintenance_history
4| Valor | Etiqueta | English |
|---|---|---|
none | Não | No |
dealership | Sim, com concessionária | Yes, with dealership |
platform | Sim, com the platform | Yes, with the platform |
both | Sim, com concessionária e the platform | Yes, with dealership and the platform |
airbags
4| Valor | Etiqueta | English |
|---|---|---|
airbagDriver | Airbag do condutor | Driver airbag |
airbagFront | Airbags frontais | Front airbags |
airbagFrontSide | Airbags frontais e laterais | Front & side airbags |
airbagFull | Airbags frontais, laterais e traseiros | Front, side & rear airbags |
air_conditioning
5| Valor | Etiqueta | English |
|---|---|---|
acNone | Sem ar condicionado | 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 |
Erros
Os erros são JSON com um código error estável e um message legível; alguns trazem chaves extra.
{
"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 | Chave em falta, desconhecida ou revogada. |
| 403 | read_only_key | A chave só pode ler. |
| 403 | workshop_blocked / workshop_inactive | A oficina não pode publicar de momento. |
| 403 | sale_limit_reached | Todas as vagas de venda estão em uso. O corpo inclui used, limit, available. |
| 404 | vehicle_not_found / image_not_found / make_not_found | Não encontrado nesta oficina. |
| 409 | duplicate_vin / duplicate_license_plate | Outro veículo já tem esse identificador. |
| 409 | stale_update | O external_updated_at guardado é mais recente do que o enviado. |
| 409 | empty_snapshot | Uma sincronização completa sem veículos precisa de allow_empty: true. |
| 422 | validation_error | Erros por campo em `fields` (ou `vehicles` numa sincronização). Nada foi escrito. |
| 422 | image_url_* / image_too_large / image_unreadable | Não foi possível obter uma foto. Ao criar ou atualizar são avisos, não falhas. |
| 429 | — | Limite de utilização. Tente de novo após o cabeçalho `Retry-After`. |
Respostas bem-sucedidas: 200 leitura ou atualização, 201 criado, 204 apagado.
Limites de utilização
Cada chave pode fazer 3 000 pedidos por hora. Acima disso, a API responde 429 com um cabeçalho Retry-After. Uma sincronização noturna completa de algumas centenas de carros usa poucas chamadas; se precisar de mais, contacte a Driv.one.
As transferências de fotos contam no mesmo orçamento através das chamadas que as originam, não por imagem.