Dashboard APIAPI Overview

API Overview

Access your Research and Desire data programmatically with the REST API

For a product that connects other users, follow Build an app and the connection examples. The API conventions below also apply to authorized OAuth requests.

The Research and Desire API lets you access your dashboard data from external applications, scripts, and integrations. Every API request respects your account's permissions — you can only access data you're allowed to see.

Creating personal API tokens requires an Ultra subscription. OAuth developer applications have a separate approval process; existing product restrictions still apply. Learn about personal tokens.

Base URL

All API endpoints are available at:

https://dashboard.researchanddesire.com/api/v1

Key Concepts

How It Works

Create an API token

Go to Settings > API Keys in the dashboard and create a new token. Copy it immediately — it's only shown once.

Make requests

Include your token in the Authorization header of every request.

curl -H "Authorization: Bearer YOUR_TOKEN" \
  https://dashboard.researchanddesire.com/api/v1/users

Parse the response

All responses follow a consistent JSON envelope format.

Response Format

Every response uses the same envelope:

Success:

{
  "ok": true,
  "data": { ... }
}

Error:

{
  "ok": false,
  "error": "Human-readable error message"
}

Pagination

List endpoints support pagination via query parameters:

ParameterDefaultMaxDescription
limit50100Number of records to return
offset0-Number of records to skip

Paginated responses wrap the data array with pagination metadata:

{
  "ok": true,
  "data": {
    "data": [ ... ],
    "pagination": {
      "limit": 50,
      "offset": 0
    }
  }
}

Example: fetch the second page of 25 users:

curl -H "Authorization: Bearer YOUR_TOKEN" \
  "https://dashboard.researchanddesire.com/api/v1/users?limit=25&offset=25"

Rate Limiting

Requests are rate limited per API token, at a default of 60 requests per minute. When you exceed the limit, the API responds with 429 and the standard error envelope:

{ "ok": false, "error": "Rate limit exceeded" }

The response includes a Retry-After header giving the number of seconds to wait before retrying.

If you receive a 429, wait for the Retry-After duration before retrying — requests sent before then will keep returning 429 until the window resets.

Permissions and RLS

Your API token inherits the exact same permissions as your dashboard account. This means:

  • You can only see your own devices and devices shared with you via partnerships
  • Lock session actions respect keyholder permissions
  • User queries return only users you have a connection with

Treat your API token like a password. Anyone with your token can access your data. If a token is compromised, revoke it immediately from Settings > API Keys.

On this page