Dashly Docs

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 Zapier or Data 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

On this page