BunnyDoc
APIE-Signing API

Contacts

List your company's contacts and create new ones — the people you send documents to.

Contacts are your company's shared address book — the people you send documents to. The API lets you look them up and add new ones. Reads and writes are scoped separately, so a key that only needs to find recipients can't grow your contact book.

List contacts

Requires the contacts:read scope.

Endpoint

GET   https://api2.bunnydoc.com/v1/contacts

Query parameters

ParameterTypeDescription
pageintegerPage number, from 1. Default 1.
per_pageintegerResults per page, 1100. Default 25.
searchstringOptional. Filter by name or email, up to 200 characters.

Example request

List contacts
curl "https://api2.bunnydoc.com/v1/contacts?search=acme" \
  -H "Authorization: Bearer <access_token>"

Response

200 OK
{
  "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 }
}

Create a contact

Requires the contacts:write scope. Creating a contact consumes your plan's contact allowance.

Endpoint

POST   https://api2.bunnydoc.com/v1/contacts

Body

FieldTypeRequiredNotes
first_namestringYesUp to 100 characters.
surnamestringYesUp to 100 characters.
emailstringYesValid email, up to 255 characters.
contact_numberstringYesUp to 50 characters.
middle_namestringNoUp to 100 characters.
job_titlestringNoUp to 150 characters.
company_namestringNoUp to 200 characters.
secondary_phonestringNoUp to 50 characters.
notesstringNoUp to 2000 characters.
custom_fieldsobjectNoKey–value pairs for your company's custom fields.

Example request

Create a contact
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"
  }'

Response

201 Created
{
  "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"
}

Errors

Statuserror.codeWhen it happens
403quota_exceededYour company has reached its contact limit.
422validation_failedThe body is missing a required field or a value is invalid.

You don't have to store contacts to send to them

Creating a contact is optional. When you send from a template you provide each recipient's name and email inline — the address book is for reuse, not a prerequisite for sending.

On this page