Contacts

List address books

Lists the address books available to the user.

GET /v1/address-books

Permission

The key must be granted contacts.read

A key without it gets 403 insufficient_scope, with the missing permission named in details.

Every book in the mailbox rather than a page: there are a handful, so paging would mean writing a loop that never runs twice.

Request

curl https://api.veruapis.com/v1/address-books \
  -H "Authorization: Bearer vak_live_..."

Response

Field Type Description
id string Pass as address_book_id when listing or creating contacts.
name string
description string
contact_count integer
created_at RFC 3339
updated_at RFC 3339
{
  "data": [
  { "id": "01918e4b-2001-7f11-b4a9-0242ac130003", "name": "Default",   "description": "",                  "contact_count": 47, "created_at": "2026-05-20T12:00:00Z", "updated_at": "2026-05-20T14:22:00Z" },
  { "id": "01918e4b-2002-7f11-b4a9-0242ac130003", "name": "Customers", "description": "External contacts", "contact_count": 12, "created_at": "2026-05-21T09:00:00Z", "updated_at": "2026-05-21T09:00:00Z" }
],
  "meta": { "request_id": "req_01j8z9...", "timestamp": "2026-09-02T10:00:00Z" },
  "pagination": { "next_cursor": "eyJ1aWQiOjQyMTF9", "has_more": true, "limit": 25 }
}
Worth knowing

Start here: a contact write needs the id of the book to file it in, and this is where that comes from.

Errors

Every failure uses the same shape, with a stable string code you can branch on. See the error reference.

Related

GET /v1/address-books

Runs the real request against your own workspace. The key is used once and never stored.