Build on Tresse
The Tresse REST API gives you programmatic access to appointments, clients, services, staff, and availability. Authenticate with an API key, send JSON, get JSON back.
Get started
The Tresse API has two tiers, each requiring its own key. There is no anonymous access.
Public API
Search businesses, view services and staff, and check availability. Requires a developer key (dk_live_), sent as an X-API-Key header.
Business API
Manage appointments, clients, services, staff, bookings, and webhooks. Requires a business API key (sk_live_), sent as an Authorization: Bearer header.
Authentication
Public endpoints require a developer key passed in the X-API-Key header:
curl https://api.tresse.io/v1/businesses/search?q=downtown \
-H "X-API-Key: dk_live_abc123..."Business endpoints require a business API key in the Authorization header:
curl https://api.tresse.io/v1/appointments \
-H "Authorization: Bearer sk_live_abc123..."Test keys use the prefixes dk_test_ and sk_test_ and operate against a sandbox environment. Live keys use dk_live_ and sk_live_.
Base URL
All endpoints are relative to:
https://api.tresse.io/v1Public endpoints
Authenticated with a developer key (dk_live_).
Search
Availability
Business endpoints
Authenticated with a business API key (sk_live_). Keys are scoped to a single business and can be created from your dashboard under Settings.
Appointments
Clients
Services
Staff
Bookings
Webhooks
Example: Create an appointment
Book an appointment by specifying the client, service, staff member, and time slot. All times are in ISO 8601 format with timezone.
Request
POST /v1/appointments
Content-Type: application/json
Authorization: Bearer sk_live_abc123...
{
"client_id": "cli_8x7kq2m",
"service_id": "svc_hair_color",
"staff_id": "stf_maria",
"starts_at": "2026-04-22T14:00:00-04:00",
"notes": "Prefers ammonia-free color"
}Response
{
"id": "apt_q9w3r1z",
"status": "confirmed",
"client_id": "cli_8x7kq2m",
"service_id": "svc_hair_color",
"staff_id": "stf_maria",
"starts_at": "2026-04-22T14:00:00-04:00",
"ends_at": "2026-04-22T15:30:00-04:00",
"duration_minutes": 90,
"price_cents": 18500,
"notes": "Prefers ammonia-free color",
"created_at": "2026-04-19T10:32:00Z"
}Example: Check availability
Query available time slots for a given service and date range. Optionally filter by staff member.
Request
GET /v1/availability?service_id=svc_hair_color&staff_id=stf_maria&date=2026-04-22
X-API-Key: dk_live_abc123...Response
{
"date": "2026-04-22",
"service_id": "svc_hair_color",
"staff_id": "stf_maria",
"duration_minutes": 90,
"slots": [
{ "starts_at": "2026-04-22T09:00:00-04:00" },
{ "starts_at": "2026-04-22T10:30:00-04:00" },
{ "starts_at": "2026-04-22T14:00:00-04:00" },
{ "starts_at": "2026-04-22T15:30:00-04:00" }
]
}Pagination
List endpoints return paginated results. Use the cursor parameter to fetch the next page. Each response includes a has_more field and a next_cursor when more results are available.
GET /v1/clients?limit=25&cursor=cur_abc123
Authorization: Bearer sk_live_abc123...
{
"data": [ ... ],
"has_more": true,
"next_cursor": "cur_def456"
}Integrations
Pre-built integrations so you can skip the API and get started faster.
ChatGPT assistant
Use our pre-built ChatGPT assistant instead of building your own.
MCP Server
Connect any AI agent with one npx command.
Rate limits
Rate limits vary by key type. Every response includes rate limit headers:
X-RateLimit-Limit: 60
X-RateLimit-Remaining: 47
X-RateLimit-Reset: 1745064120If you exceed the limit, requests return 429 Too Many Requests with a Retry-After header in seconds.
Errors
The API uses standard HTTP status codes. Error responses include a JSON body with a code and human-readable message.
{
"error": {
"code": "invalid_time_slot",
"message": "The requested time slot is no longer available.",
"status": 409
}
}Webhooks
Register webhook endpoints to receive real-time notifications when events occur in your business. Tresse signs every webhook payload with a shared secret so you can verify authenticity.
Available event types:
Get started with the Tresse API
Create a free account and generate your API keys from the dashboard.
Get your developer key →