Contactos
Lista los contactos de tu empresa y crea nuevos: las personas a las que envías documentos.
Los contactos son la agenda compartida de tu empresa: las personas a las que envías documentos. La API te permite consultarlos y añadir nuevos. La lectura y la escritura tienen scopes separados, de modo que una clave que solo necesita encontrar destinatarios no puede ampliar tu agenda.
Listar contactos
Requiere el scope contacts:read.
Endpoint
GET https://api2.bunnydoc.com/v1/contacts
Parámetros de consulta
| Parámetro | Tipo | Descripción |
|---|---|---|
page | integer | Número de página, desde 1. Por defecto 1. |
per_page | integer | Resultados por página, 1–100. Por defecto 25. |
search | string | Opcional. Filtra por nombre o correo, hasta 200 caracteres. |
Ejemplo de petición
curl "https://api2.bunnydoc.com/v1/contacts?search=acme" \
-H "Authorization: Bearer <access_token>"GET /v1/contacts?search=acme HTTP/1.1
Host: api2.bunnydoc.com
Authorization: Bearer <access_token>Respuesta
{
"data": [
{
"id": "018f7a1b-2c3d-7e4f-8a9b-0c1d2e3f4a5b",
"first_name": "Jane",
"middle_name": null,
"surname": "Doe",
"email": "jane@acme.com",
"contact_number": "+15551234567",
"job_title": "Head of Legal",
"company_name": "Acme Ltd",
"custom_fields": {},
"created_at": "2026-06-14T08:00:00.000Z",
"updated_at": "2026-06-14T08:00:00.000Z"
}
],
"pagination": { "page": 1, "per_page": 25, "total": 1, "total_pages": 1 }
}Crear un contacto
Requiere el scope contacts:write. Crear un contacto consume la cuota de contactos de tu plan.
Endpoint
POST https://api2.bunnydoc.com/v1/contacts
Cuerpo
| Campo | Tipo | Obligatorio | Notas |
|---|---|---|---|
first_name | string | Sí | Hasta 100 caracteres. |
surname | string | Sí | Hasta 100 caracteres. |
email | string | Sí | Correo válido, hasta 255 caracteres. |
contact_number | string | Sí | Hasta 50 caracteres. |
middle_name | string | No | Hasta 100 caracteres. |
job_title | string | No | Hasta 150 caracteres. |
company_name | string | No | Hasta 200 caracteres. |
secondary_phone | string | No | Hasta 50 caracteres. |
notes | string | No | Hasta 2000 caracteres. |
custom_fields | object | No | Pares clave-valor para los campos personalizados de tu empresa. |
Ejemplo de petición
curl -X POST https://api2.bunnydoc.com/v1/contacts \
-H "Authorization: Bearer <access_token>" \
-H "Content-Type: application/json" \
-d '{
"first_name": "Jane",
"surname": "Doe",
"email": "jane@acme.com",
"contact_number": "+15551234567",
"job_title": "Head of Legal",
"company_name": "Acme Ltd"
}'POST /v1/contacts HTTP/1.1
Host: api2.bunnydoc.com
Authorization: Bearer <access_token>
Content-Type: application/json
{
"first_name": "Jane",
"surname": "Doe",
"email": "jane@acme.com",
"contact_number": "+15551234567",
"job_title": "Head of Legal",
"company_name": "Acme Ltd"
}Respuesta
{
"id": "018f7a1b-2c3d-7e4f-8a9b-0c1d2e3f4a5b",
"first_name": "Jane",
"middle_name": null,
"surname": "Doe",
"email": "jane@acme.com",
"contact_number": "+15551234567",
"job_title": "Head of Legal",
"company_name": "Acme Ltd",
"custom_fields": {},
"created_at": "2026-07-28T10:15:00.000Z",
"updated_at": "2026-07-28T10:15:00.000Z"
}Errores
| Estado | error.code | Cuándo ocurre |
|---|---|---|
403 | quota_exceeded | Tu empresa ha alcanzado su límite de contactos. |
422 | validation_failed | Falta un campo obligatorio en el cuerpo o un valor no es válido. |
No necesitas guardar los contactos para enviarles documentos
Crear un contacto es opcional. Al enviar desde una plantilla proporcionas el nombre y el correo de cada destinatario directamente: la agenda sirve para reutilizar, no es un requisito para enviar.