Homologa

Homologa API

A REST API to plug Certificate of Conformity ordering into your own tooling: VIN check, order creation, tracking and webhooks. Keys are reserved for business accounts.

Base URL
https://homologa.eu/api/v1
Version
2026-09-01

Authentication

Every call carries your key in the Authorization: Bearer ecoc_live_… header. Keys starting with ecoc_test_ are sandbox keys: orders created with them are flagged as such and are not invoiced.

A key belongs to one company and one set of scopes. It is stored hashed: copy it when you create it, we cannot show it again.

Scopes

  • vin:check
  • orders:read
  • orders:write
  • webhooks:manage

Limits

120 requests per minute per key. Beyond that the API answers 429 with a Retry-After header.

Endpoints

MethodPathDescription
GET/brandsList brands with your prices and announced delays
POST/vehicles/checkCheck a VIN and get a quote
GET/ordersList your orders (paginated)
POST/ordersCreate a COC order
GET/orders/{id}Get an order by id or reference
POST/orders/bulkCreate up to 200 orders from JSON or CSV
GET/openapi.jsonThis specification

Example: check a VIN

curl -X POST https://homologa.eu/api/v1/vehicles/check \
  -H "Authorization: Bearer ecoc_test_…" \
  -H "Content-Type: application/json" \
  -d '{"vin":"WVWZZZ1KZAW123456"}'

Errors

Errors follow application/problem+json (RFC 9457): a stable code, a readable detail and, for validation failures, the list of offending fields.

CodeStatusDescription
missing_api_key401No `Authorization: Bearer` header.
malformed_api_key401The key does not match `ecoc_(live|test)_` + 40 characters.
invalid_api_key401Unknown or revoked key.
company_suspended403The company account is suspended.
company_pending403Account under verification: only sandbox keys can create orders.
insufficient_scope403The key does not carry the required scope.
company_required403The key is not attached to a company.
not_found404Resource not found (or belongs to another company).
on_quote409The manufacturer is priced on request.
unsupported_media_type415Body must be JSON (or text/csv for bulk).
invalid_json400Malformed JSON body.
validation_failed422Field-level errors listed in `errors[]`.
invalid_vin422The VIN is not 17 valid characters.
no_coc422No European COC exists for this vehicle (non-EU market, defunct manufacturer).
brand_required422Manufacturer not identified from the VIN: pass `brand`.
unknown_option422Unknown service option code.
payload_too_large413Bulk request above 200 rows.
rate_limited429More than 120 requests per minute on one key.
internal_error500Unexpected error: retry, then contact support with the request id.

Webhooks

Declare an HTTPS URL in your business area to receive status changes. Every delivery is signed (HMAC SHA-256) and retried with a growing delay on failure.

  • order.created
  • order.status_changed
  • order.document_ready
  • order.shipped
  • order.delivered
  • order.cancelled
  • invoice.issued

OpenAPI

The OpenAPI document is public and versioned: generate your client from it rather than hand-writing the calls.

Download openapi.json

Cookies: your choice

We use a single audience-measurement cookie (Google Analytics 4, anonymised IP) to understand which pages are useful. It is only set if you accept it. Refusing changes nothing to your browsing or your order. Learn more