Zinevu
API reference

Customers

The person behind the leads — one record, however many times they ask.

GET/customers

customers:read

Customer records in the account.

Parameters
email
string
Exact match. The usual way to check whether somebody already exists.
updated_since
ISO 8601
Only records changed at or after this instant.
limit
integer, 1–100
Defaults to 25.
cursor
string
From meta.next_cursor.
Request
curl "https://api.zinevu.com/api/public/v1/[email protected]" \  -H "Authorization: Bearer $ZINEVU_API_KEY"
Response
{  "data": [    {      "id": 9931,      "customer_no": "K-2026-0412",      "name": "J. de Vries",      "email": "[email protected]",      "language": "nl",      "address": {        "street": "Dorpsstraat",        "house_number": "12",        "postcode": "3811 AB",        "city": "Amersfoort",        "country": "NL",        "phone": "+31 6 1234 5678"      },      "invoice_address": null,      "created_at": "2026-04-02T11:20:44+00:00",      "updated_at": "2026-09-21T09:14:03+00:00"    }  ],  "meta": { "message": "OK", "has_more": false, "next_cursor": null, "limit": 25 }}

GET/customers/{id}

customers:read

One customer.

Addresses#

address is an object rather than a string, and the phone number lives inside it — that is where the portal reads it from, so it is where you will find it. invoice_address is null unless the customer has a different one for invoicing.

A key reads contact details in full

The portal can hide customer contact details from members who do not need them; that is a per-member permission and it does not apply to an API key, which belongs to the account rather than to a person. Treat a key with customers:read as a key that can read every name, address and phone number in the account, and scope it accordingly.