Customers
Read customer records, search by name, email, or phone, and build a customer's order history from the orders API.
The customer endpoints are read-only. Restro is the system of record for your diners, and creating customers from outside would produce duplicate records that cannot be reconciled.
#List customers
GET /v1/customersScope: customers:read.
| Parameter | Description |
|---|---|
page, limit | Pagination |
search | Matches name, email, or phone |
createdAfter | ISO timestamp, inclusive |
Results are ordered newest first. A branch-scoped key sees only customers attached to its branches.
curl -G https://api.tryrestro.com/v1/customers \
-H "Authorization: Bearer $RESTRO_API_KEY" \
-d createdAfter=2026-07-01T00:00:00Z#Fetch one customer
GET /v1/customers/{customerId}Scope: customers:read.
{
"id": "cmd8wa2b30003abcdefghijkl",
"name": "Emma Wilson",
"email": "emma.wilson@example.com",
"phone": "+12125550142",
"source": "website",
"branchIds": ["cmd8w9k1a0002abcdefghijkl"],
"createdAt": "2026-03-11T18:40:00.000Z",
"updatedAt": "2026-07-28T10:12:04.000Z"
}source is where the customer first came from: website, mobile_app, pos, or dashboard.
email and phone are both nullable. A guest who ordered by phone has no email, and the field is null rather than a placeholder.
#Getting a customer's orders
There is no /customers/{id}/orders. Use the orders endpoint and match on customer.id, or subscribe to order webhooks and build the history on your side as orders happen. The second approach is far cheaper if you need the history continuously.
#Privacy
Customer records are personal data. A key with customers:read can export your entire customer list, so scope it deliberately, prefer an expiry, and revoke it when the integration is retired.
Did this page miss something? Tell us.
Back to top