Genera DeCAs desde tu programa.
REST, JSON y un token. Sin SDK, sin OAuth de tres pasos y sin dependencias que instalar. Si tu software ya sabe hacer una petición HTTP, ya sabe emitir DeCAs.
Lo básico
- URL base: https://decaclick.com/api/v1
- Autenticación: Authorization: Bearer tu-token. El token se crea en tu panel, en API.
- Formato: JSON de entrada y de salida, siempre UTF-8.
- Límite: 300 peticiones por hora y token.
- Disponible en: planes Basic y Premium.
La API usa exactamente el mismo generador que la web: mismos requisitos del artículo 6, misma cuota de tu plan, mismo PDF con QR y misma URL única. No es una puerta trasera.
Crear un DeCA
POST /api/v1/decas
curl -X POST https://decaclick.com/api/v1/decas \
-H "Authorization: Bearer dk_tu_token" \
-H "Content-Type: application/json" \
-d '{
"cargador": {
"nombre": "Cerámicas Nules SL",
"nif": "B12345674",
"domicilio": "Pol. Ind. Nules, Castellón"
},
"transportista": { "nombre": "Transportes Pérez", "nif": "27476156B" },
"fecha_servicio": "2026-10-06",
"matricula_tractora": "1234 KLM",
"matricula_remolque": "R1234BCD",
"envios": [
{
"origen": "Nules (Castellón)",
"destino": "Getafe (Madrid)",
"naturaleza": "Azulejos en palet",
"peso": "18000 kg"
}
]
}'
Responde 201 con el documento creado: su token, la url única de descarga (la del QR) y la url_qr del código como imagen.
Varios envíos en un mismo documento (agrupación) solo si cargador y transportista coinciden en todos, como exige la norma, y con plan Basic o Premium.
Consultar
- GET /api/v1/estado — comprueba el token y devuelve plan y cuota.
- GET /api/v1/decas — lista los tuyos. Filtros: desde, hasta, cargador_nif, limite, pagina.
- GET /api/v1/decas/{token} — uno concreto.
El filtro por cargador_nif existe por un motivo muy concreto: es el que necesitas para facturar a un cliente todos sus portes de un periodo.
Errores
Siempre con la misma forma, y con un codigo estable que puedes programar aunque cambiemos el texto:
{ "error": { "codigo": "datos_invalidos",
"mensaje": "Faltan datos obligatorios o son incorrectos.",
"detalles": ["Falta el domicilio del cargador (art. 6.a)."] } }
| Código | HTTP | Qué pasa |
|---|---|---|
| sin_token | 401 | Falta la cabecera Authorization. |
| token_invalido | 401 | No existe o está revocado. |
| plan_sin_api | 403 | El plan del dueño no incluye API. |
| datos_invalidos | 422 | Falta algún dato del art. 6 o un NIF no es válido. |
| cuota_agotada | 429 | Se agotó la cuota del mes y la cortesía. |
| demasiadas_peticiones | 429 | Más de 300 peticiones en una hora. |