Skip to content
Help

Customers

Read customer records, search by name, email, or phone, and build a customer's order history from the orders API.

Public API1 min read

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

http
GET /v1/customers

Scope: customers:read.

ParameterDescription
page, limitPagination
searchMatches name, email, or phone
createdAfterISO timestamp, inclusive

Results are ordered newest first. A branch-scoped key sees only customers attached to its branches.

bash
curl -G https://api.tryrestro.com/v1/customers \
  -H "Authorization: Bearer $RESTRO_API_KEY" \
  -d createdAfter=2026-07-01T00:00:00Z

#Fetch one customer

http
GET /v1/customers/{customerId}

Scope: customers:read.

json
{
  "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