BASE URL
https://apis.davycorp.ec/v2
Demo. Solo
verifyApiUser.
El cupo es el de usage_limit / usage_count del API user.
GET también cuenta: es una consulta, no un estado de trabajo.
La respuesta tiene la forma { ok, datos }.
GET
POST
/placas/demo
DEMO
Autenticación
AuthorizationBearer TU_API_KEYrequerido
Parámetros
| Campo | Dónde | Obligatorio | Descripción |
|---|---|---|---|
placa | query, JSON o form | Sí | 3 a 10 letras o números. Se ignoran espacios y guiones. |
Un campo modalidad en el cuerpo no cambia de entorno: lo define la ruta. GET y POST dan la misma respuesta.
Ejemplos de consumo
cURL
fetch
Python
GET
curl -X POST "https://apis.davycorp.ec/v2/placas/demo" \
-H "Authorization: Bearer TU_API_KEY" \
-H "Content-Type: application/json" \
-d '{"placa": "ABC1234"}'const response = await fetch(
"https://apis.davycorp.ec/v2/placas/demo",
{
method: "POST",
headers: {
Authorization: "Bearer TU_API_KEY",
"Content-Type": "application/json"
},
body: JSON.stringify({ placa: "ABC1234" })
}
);
const data = await response.json();
console.log(response.status, data);import requests
response = requests.post(
"https://apis.davycorp.ec/v2/placas/demo",
headers={
"Authorization": "Bearer TU_API_KEY",
},
json={"placa": "ABC1234"},
timeout=30,
)
print(response.status_code)
print(response.json())curl "https://apis.davycorp.ec/v2/placas/demo?placa=ABC1234" \ -H "Authorization: Bearer TU_API_KEY"
Respuestas
200
400
401 · 403
404
429
500 · 502
// 200 — SRI y/o ANT respondieron con datos (valores ilustrativos) { "ok": true, "datos": { "placa": "ABC1234", "sri": { "vehiculo": {}, "tiene_pendientes": false, "total_pendiente": 0, "rubros": [] }, "sri_error": null, "ant": { "vehiculo": {}, "citaciones": {}, "citaciones_pendientes": [] }, "ant_error": null } }
// 400 — placa vacía o inválida
{ "ok": false, "error": "La placa es obligatoria." }// 401 — sin header Authorization { "error": "API Key requerida" } // 403 — API key inválida { "success": false, "error": "Api user inválido" }
// 404 — la placa no está registrada en SRI ni en ANT
{ "ok": false, "error": "MENSAJE_DEL_SERVIDOR" }// 429 — el API user llegó a su límite de consultas
{ "error": "Límite de consultas alcanzado", "status": false }// 500 — fallo interno de la consulta { "ok": false, "error": "MENSAJE_DEL_SERVIDOR" } // 502 — SRI y ANT fallaron sin confirmar que la placa no existe { "ok": false, "error": "MENSAJE_DEL_SERVIDOR" }
La consulta es síncrona: responde 200 con los datos, sin trabajos que consultar después. Un método distinto de GET o POST responde 405.
Comercial. Igual que demo a nivel de middleware: solo
verifyApiUser.
No valida apiwhatsapp.
GET
POST
/placas/comercial
COMERCIAL
Autenticación
AuthorizationBearer TU_API_KEYrequerido
Parámetros
| Campo | Dónde | Obligatorio | Descripción |
|---|---|---|---|
placa | query, JSON o form | Sí | 3 a 10 letras o números. Se ignoran espacios y guiones. |
Un campo modalidad en el cuerpo no cambia de entorno: lo define la ruta. GET y POST dan la misma respuesta.
Ejemplos de consumo
cURL
fetch
Python
GET
curl -X POST "https://apis.davycorp.ec/v2/placas/comercial" \
-H "Authorization: Bearer TU_API_KEY" \
-H "Content-Type: application/json" \
-d '{"placa": "ABC1234"}'const response = await fetch(
"https://apis.davycorp.ec/v2/placas/comercial",
{
method: "POST",
headers: {
Authorization: "Bearer TU_API_KEY",
"Content-Type": "application/json"
},
body: JSON.stringify({ placa: "ABC1234" })
}
);
const data = await response.json();
console.log(response.status, data);import requests
response = requests.post(
"https://apis.davycorp.ec/v2/placas/comercial",
headers={
"Authorization": "Bearer TU_API_KEY",
},
json={"placa": "ABC1234"},
timeout=30,
)
print(response.status_code)
print(response.json())curl "https://apis.davycorp.ec/v2/placas/comercial?placa=ABC1234" \ -H "Authorization: Bearer TU_API_KEY"
Respuestas
200
400
401 · 403
404
429
500 · 502
// 200 — SRI y/o ANT respondieron con datos (valores ilustrativos) { "ok": true, "datos": { "placa": "ABC1234", "sri": { "vehiculo": {}, "tiene_pendientes": false, "total_pendiente": 0, "rubros": [] }, "sri_error": null, "ant": { "vehiculo": {}, "citaciones": {}, "citaciones_pendientes": [] }, "ant_error": null } }
// 400 — placa vacía o inválida
{ "ok": false, "error": "La placa es obligatoria." }// 401 — sin header Authorization { "error": "API Key requerida" } // 403 — API key inválida { "success": false, "error": "Api user inválido" }
// 404 — la placa no está registrada en SRI ni en ANT
{ "ok": false, "error": "MENSAJE_DEL_SERVIDOR" }// 429 — el API user llegó a su límite de consultas
{ "error": "Límite de consultas alcanzado", "status": false }// 500 — fallo interno de la consulta { "ok": false, "error": "MENSAJE_DEL_SERVIDOR" } // 502 — SRI y ANT fallaron sin confirmar que la placa no existe { "ok": false, "error": "MENSAJE_DEL_SERVIDOR" }
La consulta es síncrona: responde 200 con los datos, sin trabajos que consultar después. Un método distinto de GET o POST responde 405.
Compatibilidad. El JSON de éxito y error de consulta es el del proyecto original
consulta-placas-ec-node (/api/placa). Aquí vive bajo /v2/placas*
con la autenticación de DavyCorp. Las credenciales SRI (SRI_RUC, SRI_CLAVE)
son del servidor, no del cliente.
Modalidades
| Modalidad | Ruta | Middlewares |
|---|---|---|
| Demo | GET/POST /v2/placas/demo | verifyApiUser |
| Comercial | GET/POST /v2/placas/comercial | verifyApiUser |
200 si SRI o ANT devuelven datos. 404 solo si ambas confirman que la placa no está registrada. 502 si ambas fallan por red u otro error.
Códigos que devuelve el servidor
| HTTP | Cuándo | Cuerpo |
|---|---|---|
| 200 | SRI y/o ANT respondieron con datos | { ok: true, datos } |
| 400 | Placa vacía o inválida | {"ok":false,"error":"La placa es obligatoria."} |
| 401 | Sin header Authorization | {"error":"API Key requerida"} |
| 403 | API key inválida | success: false, error |
| 404 | Placa no registrada en SRI ni ANT | ok: false, error |
| 405 | Método distinto de GET/POST | {"ok":false,"error":"Metodo no permitido"} |
| 429 | El API user llegó a usage_limit | {"error":"Límite de consultas alcanzado","status":false} |
| 500 | Fallo interno de la consulta | ok: false |
| 502 | SRI y ANT fallaron sin confirmar ausencia | ok: false |