Developers

The DapApp API.

Introduction

The DapApp API lets your own tools read and change the same things you can in the app: tasks, people, locations, calendars and your company's settings. It is a JSON API over HTTPS, and every request is made on behalf of a person, with a token that person created.

Base URL

Requests go to your DapApp address, followed by /api/v1:

https://your-company.dapapp.com/api/v1

The v1 is the version. Existing fields and behavior in a version do not change; new fields may be added, so ignore ones you do not recognise.

Making a request

Send your token as a bearer token and ask for JSON:

curl https://your-company.dapapp.com/api/v1/me \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Accept: application/json"

Successful responses wrap the result in data. Lists add links and meta for paging.

Ids

Every id in the API, such as a task's id or a calendar_id you send, is a UUID like 0195f0a1-7c2e-7b3a-9d41-6f0a2c8e1b07. Treat it as an opaque string.

What a token can do

A token never has more power than the person who made it. Three things decide what a request may do:

  1. The token's scopes. You choose them when you create the token. See Authentication.
  2. The scopes your role was given. Your company owner decides, role by role, which scopes people can put on tokens. If a role loses a scope, tokens that already carry it stop working for that scope.
  3. Your own permissions in the app. A token with activities:create can only create tasks if you can create tasks in the planner, and only on calendars you can reach.

Pagination

List endpoints return a page at a time. Use per_page to change the page size and page to move through the results:

{
  "data": [],
  "links": { "first": "...", "last": "...", "prev": null, "next": "..." },
  "meta": { "current_page": 1, "last_page": 3, "per_page": 50, "total": 120 }
}

Dates and times

Times are ISO 8601 with an offset, for example 2026-10-16T09:00:00-05:00. Responses use UTC. Dates are YYYY-MM-DD, read in the calendar's own timezone unless an endpoint says otherwise.

Errors

Status Meaning
401 The token is missing, wrong, revoked or expired.
403 The token is valid but is not allowed to do this: a missing scope, a missing permission, or API access turned off for the role.
404 The thing does not exist, or belongs to another company.
422 The request was understood but something in it is not valid. The errors object lists each field.
429 Too many requests. Wait and try again.
{
  "message": "The title field is required.",
  "errors": { "title": ["Give the activity a title."] }
}

Rate limits

Each token may make 60 requests a minute. Over the limit you get a 429 with a Retry-After header.

History

Your history, meaning what changed and who changed it, is readable for the last 90 days. See History.

Cookie settings

Essential cookies keep you signed in and secure, and are always on. Analytics help us see how the site is used.

See every cookie we use