API v1
Operaciones de la API REST pública. Se autentican con una clave de API: Authorization: Bearer sk_.... El documento OpenAPI completo, con todos los esquemas, es api-v1.json, en esta misma carpeta.
GET /health
Sección titulada «GET /health»Salud del servicio (sin autenticación).
Responde 200 con status: ok mientras el servicio está en pie. No necesita clave ni toca la DIAN: sirve para monitores de disponibilidad.
- Identificador:
health - Autenticación: ninguna
| Respuesta | Descripción |
|---|---|
200 |
El servicio está en pie |
GET /v1/billing/catalog
Sección titulada «GET /v1/billing/catalog»Consulta las bolsas a la venta y el contacto para volumen.
Público (sin clave): lo que muestra la página de precios. Solo las bolsas a la venta y el contacto; nunca la auditoría ni un pagador. Se guarda 30 s en caché (Cache-Control: public, max-age=30). Si el catálogo no se puede leer, la respuesta es la vacía (sin bolsas ni contacto): la página muestra su mensaje genérico.
- Identificador:
get_billing_catalog - Autenticación: ninguna
| Respuesta | Descripción |
|---|---|
200 |
Las bolsas a la venta y el contacto |
GET /v1/companies/{company_id}/acquirers/{id_type}/{number}
Sección titulada «GET /v1/companies/{company_id}/acquirers/{id_type}/{number}»Consulta un comprador en la DIAN.
El nombre y el correo que la DIAN tiene para un tipo y número de documento (GetAcquirer, Res. 202 de 2025): sugerencias para llenar customer al momento de la venta; confirma el correo con el comprador. Es opcional: para emitir no hace falta (un customer solo con identification se completa de la misma forma). Un comprador a la vez: la empresa tiene un límite de consultas por minuto (429 rate_limited), cada consulta queda en la auditoría y las respuestas se guardan unos minutos solo para esa empresa. Requiere documents:write.
- Identificador:
lookup_acquirer - Autenticación: clave de API
| Parámetro | En | Obligatorio | Descripción |
|---|---|---|---|
company_id |
path | sí | Empresa emisora de la cuenta. |
id_type |
path | sí | Tipo de documento, como en customer.identification.type. |
number |
path | sí | Número de documento, sin dígito de verificación. |
| Respuesta | Descripción |
|---|---|
200 |
Lo que la DIAN tiene del comprador |
400 |
Tipo de documento desconocido o número no válido (invalid_query) |
401 |
Falta la clave de API o no es válida |
403 |
Permiso no concedido, o este despliegue no atiende el ambiente de la clave |
404 |
Empresa desconocida (not_found) o la DIAN no tiene datos del documento (acquirer_not_found) |
429 |
Se agotaron las consultas por minuto de la empresa (rate_limited, Retry-After), o límite de solicitudes de la clave (API Gateway) |
503 |
La consulta a la DIAN no respondió (acquirer_lookup_unavailable); emite con los datos del comprador |
GET /v1/companies/{company_id}/contingencies
Sección titulada «GET /v1/companies/{company_id}/contingencies»Lista las contingencias de la empresa.
Las más recientes primero (como máximo 50), sin sus transcripciones.
- Identificador:
list_contingencies - Autenticación: clave de API
| Parámetro | En | Obligatorio | Descripción |
|---|---|---|---|
company_id |
path | sí | Empresa emisora de la cuenta. |
| Respuesta | Descripción |
|---|---|
200 |
Las contingencias |
401 |
Falta la clave de API o no es válida |
403 |
Permiso no concedido |
404 |
Empresa desconocida |
POST /v1/companies/{company_id}/contingencies
Sección titulada «POST /v1/companies/{company_id}/contingencies»Declara una contingencia del facturador.
Abre el período en el que la empresa no puede facturar electrónicamente y expide facturas de talonario o de papel con su numeración de papel (contingencia tipo 03, anexo 1.9, numeral 12.1). Una empresa tiene como máximo un período abierto; uno nuevo empieza cuando terminó el anterior o después. La carta a la DIAN es de la empresa: descarga su borrador desde links.letter.
- Identificador:
declare_contingency - Autenticación: clave de API
- Cuerpo: JSON, esquema
DeclareContingencyRequest
| Parámetro | En | Obligatorio | Descripción |
|---|---|---|---|
company_id |
path | sí | Empresa emisora de la cuenta. |
| Respuesta | Descripción |
|---|---|
201 |
Declarada (open) |
400 |
Cuerpo mal formado |
401 |
Falta la clave de API o no es válida |
403 |
Permiso no concedido, o este despliegue no atiende el ambiente de la clave |
404 |
Empresa desconocida |
409 |
Ya hay otra contingencia abierta (contingency_already_open), se superpone con la anterior (contingency_overlaps) o la empresa no está configurada en el ambiente de la clave |
422 |
Motivo inválido o un inicio en el futuro |
GET /v1/companies/{company_id}/contingencies/{contingency_id}
Sección titulada «GET /v1/companies/{company_id}/contingencies/{contingency_id}»Consulta una contingencia con sus transcripciones.
Cada transcripción con el estado de su documento, cuántas no ha aceptado aún la DIAN (pending_transcriptions), el plazo (48 horas después del fin del problema, anexo 1.9, numeral 12.1) y si venció con transcripciones pendientes (overdue).
- Identificador:
get_contingency - Autenticación: clave de API
| Parámetro | En | Obligatorio | Descripción |
|---|---|---|---|
company_id |
path | sí | Empresa emisora de la cuenta. |
contingency_id |
path | sí | Id devuelto al declarar la contingencia. |
| Respuesta | Descripción |
|---|---|
200 |
La contingencia |
401 |
Falta la clave de API o no es válida |
403 |
Permiso no concedido |
404 |
Empresa (not_found) o contingencia (contingency_not_found) desconocida |
POST /v1/companies/{company_id}/contingencies/{contingency_id}/close
Sección titulada «POST /v1/companies/{company_id}/contingencies/{contingency_id}/close»Cierra una contingencia.
Registra cuándo se superó el problema (ended_at, por defecto ahora). Desde ese momento la empresa tiene 48 horas para transmitir la transcripción de cada factura de papel del período (anexo 1.9, numeral 12.1); foliios avisa por los webhooks (document.contingency_deadline_approaching) cuando el plazo se acerca con transcripciones pendientes. El cuerpo es opcional.
- Identificador:
close_contingency - Autenticación: clave de API
- Cuerpo: JSON, esquema
objeto
| Parámetro | En | Obligatorio | Descripción |
|---|---|---|---|
company_id |
path | sí | Empresa emisora de la cuenta. |
contingency_id |
path | sí | La contingencia abierta. |
| Respuesta | Descripción |
|---|---|
200 |
Cerrada, con su plazo |
400 |
Cuerpo mal formado |
401 |
Falta la clave de API o no es válida |
403 |
Permiso no concedido, o este despliegue no atiende el ambiente de la clave |
404 |
Empresa o contingencia desconocida |
409 |
Ya estaba cerrada (contingency_already_closed) |
415 |
El cuerpo no es JSON |
422 |
Un fin anterior al inicio o en el futuro |
GET /v1/companies/{company_id}/contingencies/{contingency_id}/letter
Sección titulada «GET /v1/companies/{company_id}/contingencies/{contingency_id}/letter»Descarga el borrador de la carta a la DIAN.
La carta que informa el problema (contingencia abierta) o su superación (cerrada), con el asunto que pide el anexo (NIT-DV; Razón social) y la dirección contingencia.facturadorvp@dian.gov.co (anexo 1.9, numeral 12.1). foliios no la envía: la firma el representante legal (o quien haga sus veces) y la empresa la envía por correo en PDF, con los datos de contacto en el cuerpo del correo.
- Identificador:
get_contingency_letter - Autenticación: clave de API
| Parámetro | En | Obligatorio | Descripción |
|---|---|---|---|
company_id |
path | sí | Empresa emisora de la cuenta. |
contingency_id |
path | sí | La contingencia. |
| Respuesta | Descripción |
|---|---|
200 |
El borrador, en texto plano |
401 |
Falta la clave de API o no es válida |
403 |
Permiso no concedido |
404 |
Empresa o contingencia desconocida |
409 |
La empresa no tiene datos de emisor en este ambiente |
POST /v1/companies/{company_id}/contingencies/{contingency_id}/transcriptions
Sección titulada «POST /v1/companies/{company_id}/contingencies/{contingency_id}/transcriptions»Transcribe una factura de papel.
Crea la transcripción electrónica (tipo 03) de una factura de talonario o de papel expedida durante la contingencia y encola su transmisión como cualquier documento (pending; síguela con GET .../documents/{document_id} o con los webhooks). La transcripción conserva el número del papel (dentro de su resolución de papel, anexo 1.9, numeral 11.4.1, Nota 1), lleva la referencia al papel (número, fecha, tipo) y se emite el día en que se firma; su CUFE usa el PIN del software.
Idempotente por papel: el mismo papel con el mismo cuerpo devuelve la misma transcripción (Idempotent-Replayed: true); con otro cuerpo es 409 paper_already_transcribed. Sin cabecera Idempotency-Key: la clave es el papel.
- Identificador:
transcribe_paper_invoice - Autenticación: clave de API
- Cuerpo: JSON, esquema
TranscribePaperRequest
| Parámetro | En | Obligatorio | Descripción |
|---|---|---|---|
company_id |
path | sí | Empresa emisora de la cuenta. |
contingency_id |
path | sí | La contingencia en la que se expidió el papel. |
| Respuesta | Descripción |
|---|---|
202 |
Aceptada para transmisión (pending) |
400 |
Cuerpo mal formado |
401 |
Falta la clave de API o no es válida |
403 |
Permiso no concedido, o este despliegue no atiende el ambiente de la clave |
404 |
Empresa (not_found) o contingencia (contingency_not_found) desconocida |
409 |
El papel ya está transcrito (paper_already_transcribed), su número ya está en uso o la empresa no está configurada en el ambiente de la clave |
413 |
Cuerpo demasiado grande |
415 |
El cuerpo no es JSON |
422 |
El papel está fuera de la contingencia (paper_outside_contingency) o de su resolución (paper_outside_resolution), la resolución no es de papel (resolution_kind_mismatch) o el contenido incumple una regla |
GET /v1/companies/{company_id}/documents
Sección titulada «GET /v1/companies/{company_id}/documents»Lista los documentos.
Los más recientes primero, por fecha de creación. Filtros: estado, rango de creación e identificación del comprador. Paginado por cursor: envía next_cursor como cursor mientras has_more sea true. Una página filtrada puede traer menos de limit filas y aun así tener más.
- Identificador:
list_documents - Autenticación: clave de API
| Parámetro | En | Obligatorio | Descripción |
|---|---|---|---|
company_id |
path | sí | Empresa emisora de la cuenta. |
status |
query | no | Solo los documentos en este estado. |
created_from |
query | no | Creados desde este instante: RFC 3339 o fecha (2026-10-01, inicio de ese día en Colombia). |
created_to |
query | no | Creados hasta este instante: RFC 3339 o fecha (fin de ese día en Colombia). |
customer_id_type |
query | no | Tipo de identificación del comprador; exige customer_id_number. |
customer_id_number |
query | no | Número de identificación del comprador (sin dígito de verificación); exige customer_id_type. |
errors_only |
query | no | true: solo los documentos con error (rejected o failed), la cola de errores del portal. Junto con status, deben cumplirse los dos. |
limit |
query | no | Filas por página, de 1 a 100 (por defecto 20). |
cursor |
query | no | El next_cursor de la página anterior. |
| Respuesta | Descripción |
|---|---|
200 |
Una página de documentos |
400 |
Filtros o cursor no válidos |
401 |
Falta la clave de API o no es válida |
403 |
Permiso no concedido |
404 |
Empresa desconocida |
POST /v1/companies/{company_id}/documents
Sección titulada «POST /v1/companies/{company_id}/documents»Emite un documento.
Valida el documento, toma su consecutivo (numeración automática) o registra el número que envía el cliente (manual) y encola su transmisión a la DIAN. La respuesta llega antes de que la DIAN lo valide: el documento queda en pending; síguelo con GET .../documents/{document_id} o con los webhooks.
Idempotente por Idempotency-Key: la misma clave con el mismo cuerpo devuelve el mismo documento (Idempotent-Replayed: true) sin emitir otro; con un cuerpo distinto responde 409 idempotency_key_reused.
- Identificador:
issue_document - Autenticación: clave de API
- Cuerpo: JSON, esquema
IssueDocumentRequest
| Parámetro | En | Obligatorio | Descripción |
|---|---|---|---|
company_id |
path | sí | Empresa emisora de la cuenta. |
Idempotency-Key |
header | sí | Única por documento (por ejemplo, un UUID); repítela en los reintentos. De 1 a 128 caracteres ASCII visibles. |
| Respuesta | Descripción |
|---|---|
202 |
Aceptado para transmisión (pending) |
400 |
Cuerpo mal formado o sin Idempotency-Key |
401 |
Falta la clave de API o no es válida |
402 |
El pagador llegó a su tope de sobregiro y el stage aplica el cobro (overdraft_limit_reached): se rechaza la factura o exportación nueva sin consumir número; el problema agrega los miembros de texto purchase_url, contact_url y contact_email cuando están configurados. Repite con la misma Idempotency-Key después de recargar |
403 |
Permiso no concedido, o este despliegue no atiende el ambiente de la clave (environment_not_available_in_deployment) |
404 |
Empresa desconocida (o de otra cuenta) |
409 |
Clave reutilizada con otro cuerpo; número ya usado (number_already_used) o retenido por un documento que espera que la DIAN diga qué pasó con él (number_in_verification); empresa sin configurar en el ambiente de la clave; o, con una clave sk_test_, empresa que no ha superado el set de pruebas de la DIAN con su software actual (habilitation_required: el problema agrega en la raíz del cuerpo los miembros de texto company_id, environment (test) y habilitation_url, el asistente del portal en /habilitacion) |
413 |
Cuerpo demasiado grande |
415 |
El cuerpo no es JSON |
422 |
El documento incumple una regla (campos en errors) |
429 |
Límite de solicitudes de la clave (API Gateway) |
503 |
No disponible por el momento o se agotó el tiempo de espera; reintenta con la misma clave |
GET /v1/companies/{company_id}/documents/summary
Sección titulada «GET /v1/companies/{company_id}/documents/summary»Cuenta los documentos por estado.
Las cifras del tablero del portal, también para la API: documentos por estado creados en el rango (los dos extremos son opcionales); with_errors suma los rechazados y los fallidos. Lee como máximo 10 000 documentos (truncated).
- Identificador:
document_summary - Autenticación: clave de API
| Parámetro | En | Obligatorio | Descripción |
|---|---|---|---|
company_id |
path | sí | Empresa emisora de la cuenta. |
created_from |
query | no | Creados desde este instante: RFC 3339 o YYYY-MM-DD (Colombia). |
created_to |
query | no | Creados hasta este instante: RFC 3339 o YYYY-MM-DD (fin de ese día). |
| Respuesta | Descripción |
|---|---|
200 |
Cantidad por estado |
400 |
Rango no válido |
401 |
Falta la clave de API o no es válida |
403 |
Permiso no concedido |
404 |
Empresa desconocida |
GET /v1/companies/{company_id}/documents/{document_id}
Sección titulada «GET /v1/companies/{company_id}/documents/{document_id}»Obtiene un documento.
Su estado, el CUFE, las reglas de la DIAN explicadas (las de un rechazo o las notificaciones de una aceptación), sus fechas y los enlaces a sus archivos.
- Identificador:
get_document - Autenticación: clave de API
| Parámetro | En | Obligatorio | Descripción |
|---|---|---|---|
company_id |
path | sí | Empresa emisora de la cuenta. |
document_id |
path | sí | Id que se devolvió al emitir el documento. |
| Respuesta | Descripción |
|---|---|
200 |
El documento |
401 |
Falta la clave de API o no es válida |
403 |
Permiso no concedido |
404 |
Empresa o documento desconocido |
GET /v1/companies/{company_id}/documents/{document_id}/attached-document
Sección titulada «GET /v1/companies/{company_id}/documents/{document_id}/attached-document»Descarga el AttachedDocument.
El contenedor electrónico que se entrega al comprador (anexo 1.9, 6.4): el documento firmado y el ApplicationResponse de la DIAN, firmado por el emisor (un tipo 04 en contingencia va sin el ApplicationResponse). Por defecto, el ZIP que recibió el comprador, con el PDF (9.1); ?format=xml entrega solo el contenedor. Lo genera la entrega; antes de eso, 409 attached_document_not_available.
- Identificador:
get_attached_document - Autenticación: clave de API
| Parámetro | En | Obligatorio | Descripción |
|---|---|---|---|
company_id |
path | sí | Empresa emisora de la cuenta. |
document_id |
path | sí | Id del documento. |
format |
query | no | zip (por defecto) o xml. |
| Respuesta | Descripción |
|---|---|
200 |
El ZIP (application/zip) o, con format=xml, el AttachedDocument firmado (application/xml) |
400 |
format no válido |
401 |
Falta la clave de API o no es válida |
403 |
Permiso no concedido |
404 |
Empresa o documento desconocido |
409 |
Aún no se ha generado (attached_document_not_available) |
POST /v1/companies/{company_id}/documents/{document_id}/deliver
Sección titulada «POST /v1/companies/{company_id}/documents/{document_id}/deliver»Envía de nuevo el documento al comprador.
Envía por correo el documento (el ZIP con el AttachedDocument y el PDF) a las direcciones del comprador que trae el documento, o a email si el cuerpo trae una. Solo se puede entregar un documento validado (accepted) o uno emitido en contingencia DIAN (tipo 04). El envío es asíncrono: la respuesta es el documento con delivery.status en pending; síguelo con GET .../documents/{document_id} o con los webhooks document.delivered y document.delivery_failed. No es idempotente: cada llamada es un correo más. El cuerpo es opcional.
- Identificador:
deliver_document - Autenticación: clave de API
- Cuerpo: JSON, esquema
objeto
| Parámetro | En | Obligatorio | Descripción |
|---|---|---|---|
company_id |
path | sí | Empresa emisora de la cuenta. |
document_id |
path | sí | El documento que se envía. |
| Respuesta | Descripción |
|---|---|
202 |
Entrega solicitada (delivery.status: pending) |
400 |
Cuerpo mal formado |
401 |
Falta la clave de API o no es válida |
403 |
Permiso no concedido |
404 |
Empresa o documento desconocido |
409 |
El documento no está en accepted ni se emitió en contingencia (document_not_deliverable), o se está enviando en este momento (concurrent_modification) |
415 |
Un cuerpo que no es JSON |
422 |
email no válido, o sin email y sin correo del comprador en el documento (delivery_recipient_required) |
GET /v1/companies/{company_id}/documents/{document_id}/pdf
Sección titulada «GET /v1/companies/{company_id}/documents/{document_id}/pdf»Descarga el PDF.
La representación gráfica que recibió el comprador (anexo 1.9, 11.7: con el QR y el CUFE o CUDE), leída del archivo. La genera la entrega al comprador, una vez el documento está en accepted (o emitido en contingencia DIAN, sin validación); antes de eso, 409 pdf_not_available.
- Identificador:
get_document_pdf - Autenticación: clave de API
| Parámetro | En | Obligatorio | Descripción |
|---|---|---|---|
company_id |
path | sí | Empresa emisora de la cuenta. |
document_id |
path | sí | Id del documento. |
| Respuesta | Descripción |
|---|---|
200 |
El PDF |
401 |
Falta la clave de API o no es válida |
403 |
Permiso no concedido |
404 |
Empresa o documento desconocido |
409 |
Aún no se ha generado (pdf_not_available) |
POST /v1/companies/{company_id}/documents/{document_id}/resubmit
Sección titulada «POST /v1/companies/{company_id}/documents/{document_id}/resubmit»Corrige y reenvía un documento rechazado.
Reemplaza el contenido de un documento en rejected y lo envía de nuevo con el mismo número. En cualquier otro estado responde 409 invalid_state.
- Identificador:
resubmit_document - Autenticación: clave de API
- Cuerpo: JSON, esquema
ResubmitDocumentRequest
| Parámetro | En | Obligatorio | Descripción |
|---|---|---|---|
company_id |
path | sí | Empresa emisora de la cuenta. |
document_id |
path | sí | El documento rechazado. |
| Respuesta | Descripción |
|---|---|
202 |
Aceptado para transmisión (de nuevo en pending) |
400 |
Cuerpo mal formado |
401 |
Falta la clave de API o no es válida |
403 |
Permiso no concedido, o este despliegue no atiende el ambiente de la clave (environment_not_available_in_deployment) |
404 |
Empresa o documento desconocido |
409 |
El documento no está en rejected, o su número ya se usó |
422 |
El documento corregido incumple una regla |
POST /v1/companies/{company_id}/documents/{document_id}/retry
Sección titulada «POST /v1/companies/{company_id}/documents/{document_id}/retry»Reintenta un documento fallido.
Envía de nuevo un documento en failed una vez corregida la causa del fallo (la configuración de la empresa, su resolución o un SOAP Fault de tipo Sender): primero revisa la configuración actual y, si sigue mal, responde 409 configuration_still_invalid sin cambiar nada. El documento conserva su número y, si se emitió en contingencia DIAN, su fecha de emisión, su CUFE y su plazo de 48 h. Un fallo que un reintento no puede corregir (invalid_document, rendering_failed, not_sent, unclassified) responde 409 failure_not_retryable.
Un documento en failed con duplicate_unverified (la DIAN lo reportó como ya procesado y en 24 horas ninguna verificación pudo saber si se aceptó) nunca se envía de nuevo: el reintento vuelve a consultar a la DIAN por cada clave con la que se envió el documento, no revisa la configuración ni toma número, y responde 202 con el documento en sending. Si se aceptó, pasa a accepted; si se rechazó por reglas distintas de la regla 90 (el único caso que libera el número), a rejected; en cualquier otro caso, de nuevo a failed con duplicate_unverified y el número retenido.
Idempotente: un documento que ya espera una transmisión, o que está en una, se devuelve tal cual, con Idempotent-Replayed: true, sin encolarlo otra vez. En accepted y rejected responde 409 invalid_state.
- Identificador:
retry_document - Autenticación: clave de API
| Parámetro | En | Obligatorio | Descripción |
|---|---|---|---|
company_id |
path | sí | Empresa emisora de la cuenta. |
document_id |
path | sí | El documento fallido. |
| Respuesta | Descripción |
|---|---|
202 |
Aceptado para transmisión (de nuevo en pending), para verificación con la DIAN (sending, un duplicate_unverified), o ya en espera |
401 |
Falta la clave de API o no es válida |
403 |
Permiso no concedido, o este despliegue no atiende el ambiente de la clave (environment_not_available_in_deployment) |
404 |
Empresa o documento desconocido |
409 |
El documento está en accepted o rejected (invalid_state), su fallo no admite reintento (failure_not_retryable), la configuración sigue mal (configuration_still_invalid) o su número ya se usó |
422 |
La resolución del documento no está registrada o ya no lo cubre |
GET /v1/companies/{company_id}/documents/{document_id}/xml
Sección titulada «GET /v1/companies/{company_id}/documents/{document_id}/xml»Descarga el XML firmado.
El documento UBL 2.1 tal como se firmó y se envió a la DIAN, leído del archivo (y comprobado contra su SHA-256 guardado).
- Identificador:
get_document_xml - Autenticación: clave de API
| Parámetro | En | Obligatorio | Descripción |
|---|---|---|---|
company_id |
path | sí | Empresa emisora de la cuenta. |
document_id |
path | sí | Id del documento. |
| Respuesta | Descripción |
|---|---|
200 |
El XML firmado |
401 |
Falta la clave de API o no es válida |
403 |
Permiso no concedido |
404 |
Empresa o documento desconocido |
409 |
Aún no está firmado |
GET /v1/companies/{company_id}/sandbox/integration-check
Sección titulada «GET /v1/companies/{company_id}/sandbox/integration-check»Consulta lo que la empresa hizo en su sandbox (verificación de integración).
Se deriva de los datos de la empresa, nunca de lo que diga una persona: derived son los cuatro chequeos que la API puede verificar (invoice_accepted, credit_and_debit_note, contingency, webhook_delivered), cada uno en passed solo con evidencia vigente de la empresa (de menos de 30 días, la retención del sandbox) y en pending si no; declared son los dos que no puede verificar (rejection_corrected, idempotency_replayed) y nunca cuentan para complete. Una empresa sin endpoint de webhook tiene webhook_delivered en not_applicable; con uno, una redirección (3xx) no es una entrega. complete es verdadero cuando todos los chequeos derivados aplicables están en passed. Lee como máximo 5 páginas de 100 documentos aceptados (window), no escribe nada ni consume cupo. Un reset o la retención devuelven los chequeos a pending.
- Identificador:
get_sandbox_integration_check - Autenticación: clave de API
| Parámetro | En | Obligatorio | Descripción |
|---|---|---|---|
company_id |
path | sí | Empresa de la clave. |
| Respuesta | Descripción |
|---|---|
200 |
Los chequeos |
401 |
Falta la clave de API o no es válida |
403 |
No es una clave sandbox (sandbox_only) o no tiene documents:read |
404 |
Empresa desconocida (la misma respuesta para una de otra cuenta) |
GET /v1/companies/{company_id}/suppressions
Sección titulada «GET /v1/companies/{company_id}/suppressions»Lista las direcciones suprimidas de la empresa.
El registro propio de la empresa: las direcciones de correo que rebotaron de forma permanente, que se quejaron o que ya estaban suprimidas, y a las que foliios ya no envía. Nunca las de otra empresa.
- Identificador:
list_suppressions - Autenticación: clave de API
| Parámetro | En | Obligatorio | Descripción |
|---|---|---|---|
company_id |
path | sí | Empresa emisora de la cuenta. |
| Respuesta | Descripción |
|---|---|
200 |
Las direcciones suprimidas |
401 |
Falta la clave de API o no es válida |
403 |
Permiso no concedido |
404 |
Empresa desconocida |
POST /v1/sandbox/events
Sección titulada «POST /v1/sandbox/events»Envía un webhook de prueba (sandbox).
Un evento sintético del tipo elegido al webhook del sandbox de la empresa, firmado y con reintentos como cualquier otro: su documento es doc_test_... y su data tiene la forma del evento real de ese tipo (un CUFE, la regla del rechazo, el failure_code, data.delivery…). Cuenta como una escritura y contra el límite de 10 webhooks de prueba por minuto de la empresa.
- Identificador:
trigger_sandbox_event - Autenticación: clave de API
- Cuerpo: JSON, esquema
TriggerEventRequest
| Respuesta | Descripción |
|---|---|
202 |
En cola para el webhook |
403 |
No es una clave sandbox (sandbox_only) o no tiene documents:write |
404 |
Empresa desconocida |
422 |
Evento desconocido (validation_failed, con unknown_event en errors[]) |
429 |
Se agotaron las escrituras o los webhooks de prueba por minuto del sandbox (sandbox_rate_limited) |
503 |
No se pudieron verificar los límites del sandbox (temporarily_unavailable) |
POST /v1/sandbox/keys
Sección titulada «POST /v1/sandbox/keys»Crea una clave temporal del sandbox.
Una clave sk_sandbox_ de 24 horas con la misma cuenta, empresas y permisos que la clave sandbox (permanente) que la pide: una por ejecución de CI o por sesión de agente. Una clave temporal no puede crear claves, deja de funcionar cuando se revoca la clave que la creó y nunca alcanza más de lo que esa clave alcanza en ese momento; una cuenta tiene como máximo 10 vivas (revocar una libera su cupo). No hay variante anónima: la primera clave sandbox sale del portal.
- Identificador:
create_temporary_sandbox_key - Autenticación: clave de API
- Cuerpo: JSON, esquema
TemporaryKeyRequest
| Respuesta | Descripción |
|---|---|
201 |
Creada; secret solo se muestra ahora |
401 |
Falta la clave de API o no es válida |
403 |
No es una clave sandbox (sandbox_only), es una clave temporal o no tiene documents:write |
409 |
La cuenta ya tiene el máximo de claves temporales vivas (temporary_key_limit_reached) |
429 |
Se agotaron las escrituras por minuto del sandbox (sandbox_rate_limited) |
503 |
No se pudieron verificar los límites del sandbox (temporarily_unavailable) |
GET /v1/sandbox/scenarios
Sección titulada «GET /v1/sandbox/scenarios»Lista el catálogo de escenarios, reglas y límites del sandbox.
Público (sin clave): qué debe llevar un documento para obtener cada respuesta de la DIAN simulada, las reglas que el sandbox valida en cada documento y las que no puede reproducir, sus límites y su set de pruebas.
- Identificador:
list_sandbox_scenarios - Autenticación: ninguna
| Respuesta | Descripción |
|---|---|
200 |
El catálogo |