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
- POST Create a contact
- DELETE Delete a contact
- GET Get a contact
- GET List contacts
- PATCH Update a contact