Quickstart
Create an API key, make your first call to the Dashly API and write your first record in a few minutes.
The Dashly API gives your code the same access to your agency's data as the dashboard: clients, contacts, deals, projects, tickets, time logs, reports and more. Every request is JSON over HTTPS, authenticated with a Bearer key.
Create an API key
In the Dashly dashboard, open Connectors → API & webhooks and fill in the key form:
- Key name: what the key is for, for example
ZapierorData warehouse sync. - Scope: Read-only (the default) or Full access (read and write on every resource). Pick Full access if you want to follow step 4 below.
- Expiry: 30, 90 or 365 days, or no expiry.
Click Generate a key and copy the key straight away. It starts with ak_ and is shown only once.
Treat the key like a password. Store it in your secret manager or an environment variable, never in front-end code or a public repository.
export DASHLY_API_KEY="ak_…"Check the key with GET /v1/me
/v1/me tells you which agency the key belongs to, what it may do and how much of the monthly allowance is left. It reads no agency data, so it is the right first call for any integration.
curl https://api.usedashly.com/v1/me \
-H "Authorization: Bearer $DASHLY_API_KEY"{
"data": {
"agency": { "name": "Northwind Studio", "slug": "northwind-studio" },
"scopes": ["*"],
"quota": {
"used": 1240,
"limit": 50000,
"remaining": 48760,
"unlimited": false,
"resetsAt": "2026-11-01"
}
}
}A 401 with "code": "unauthorized" means the key is missing, mistyped, revoked or expired. See Authentication.
List your clients
Collections are paginated and come back in a { data, meta } envelope.
curl "https://api.usedashly.com/v1/clients?filter[status]=active&sort=-createdAt&per_page=20" \
-H "Authorization: Bearer $DASHLY_API_KEY"{
"data": [
{
"id": "hsbftmp3f5",
"name": "Boudbois",
"slug": "boudbois",
"sector": "Furniture",
"website": "https://boudbois.fr",
"linkedinUrl": null,
"siren": null,
"status": "active",
"locale": null,
"createdAt": "2026-09-14T08:21:37.000Z",
"customFields": { "segment": "smb" }
}
],
"meta": { "page": 1, "perPage": 20, "total": 1, "totalPages": 1 }
}Every id is a short public id like hsbftmp3f5. Use it everywhere: in paths and in relations such as clientId. Filters, sorting and search are covered in Requests and responses.
Create a record
With a Full access key (or one with the clients:write scope), create a client:
curl -X POST https://api.usedashly.com/v1/clients \
-H "Authorization: Bearer $DASHLY_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: create-client-northwind-0001" \
-d '{
"name": "Lumen Bakery",
"status": "prospect",
"website": "https://lumen-bakery.example"
}'The API answers 201 Created with the new record in data, including its public id. The Idempotency-Key header is optional. It makes the call safe to retry: see Idempotency.
If a value is refused, you get a 422 with "code": "validation_failed" and details on the field at fault. See Errors.
Next steps
Authentication
Keys, scopes, revocation and OAuth connectors.
Requests and responses
Envelopes, pagination, filters, sorting and discovery.
Errors
Error codes and the precise reason behind each refusal.
Rate limits and quota
How fast and how much you can call, and how to back off.
Custom fields
Read and write the fields your agency configured.
Actions
Verbs that do more than edit a field: convert, merge, import.
MCP server
Connect Claude and other AI clients to your agency.
API reference
Every resource, field and operation, generated from the API itself.