Two Minute Reports Logo

API Reference

The Two Minute Reports REST API — authenticate with a bearer token and programmatically manage teams, connections, clients, and run data queries.

The Two Minute Reports API is a REST API that lets you manage your account, teams, connections, and clients, and run data queries programmatically — the same capabilities available in the app, exposed over HTTP with JSON.

The API is currently versioned at v1. All endpoints are prefixed with /v1.

Base URL

https://api.twominutereports.com/v1

All paths in this reference are relative to this base URL. For example, GET /users/me means GET https://api.twominutereports.com/v1/users/me.

Authentication

Every request must include a bearer token in the Authorization header:

curl https://api.twominutereports.com/v1/users/me \
  -H "Authorization: Bearer tmrc_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"

Create and manage keys from your account settings. See Authentication for full details.

Response format

Every response uses a consistent envelope so you can branch on a single success flag.

{
  "success": true,
  "data": { }
}

On success, data holds the result — an object or an array depending on the endpoint.

Conventions

  • Content type: Request bodies are JSON (Content-Type: application/json), except file uploads which use multipart/form-data.
  • IDs: Resource IDs such as teamId, userId, and sessionId are UUID v7 strings. Account IDs are provider-defined strings prefixed with the connector ID (e.g. gadw_1234567890).
  • Timestamps: All timestamps are ISO 8601 strings in UTC (e.g. 2026-06-16T09:30:00.000Z).
  • Roles: Team-scoped endpoints require a minimum role — viewer, editor, or owner. Each endpoint notes its requirement.

The user object

Several resources tell you who did something — who created a connection, who last edited it, who enabled an account, who sent an invite. Wherever that appears it is the same object rather than a bare ID, so you can render a name and an avatar without a second lookup.

{
  "id": "0190f8b7-3c4d-7e5f-9a0b-1c2d3e4f5a6b",
  "name": "Priya Raman",
  "avatarUrl": "https://assets.gox.ai/tmr/avatars/priya.png",
  "email": "[email protected]"
}
id
string · uuid v7
The user's unique identifier.
name
string | null
Display name, or null if the user has not set one.
avatarUrl
string | null
Avatar image URL, or null if the user has no avatar.
email
string
Email address. Present on team-scoped endpoints only — the public roadmap and changelog omit this field entirely, since those are readable outside the team that owns the content.

The object itself may be null. A record created before we started tracking who acted on it has nobody to name, and that is reported as null rather than as a placeholder user — so always check the object before reading its fields.

updatedBy always names a person. Background work — cache refreshes, vote and view counters, scheduled recomputes — updates records without touching it, so it never reports a machine as the editor and never blanks whoever edited last.

Breaking change — August 2026.createdBy used to be a bare UUID string on connections, clients and the team dashboards list. It is now the object above. If you were reading createdBy as an ID, read createdBy.id instead.

Reference

ResourceDescription
AuthenticationBearer tokens and API keys
Rate limitsRequest quotas and the 429 response
ErrorsError envelope and status codes
UsersProfile and preferences
TeamsTeams, members, roles, and invites
ConnectionsOAuth/data connections for a team
ConnectorsConnectors, accounts, and fields
ClientsClients and their linked accounts
DataRun data queries
PlatformPlans, connectors, roadmap, and changelog
Copyright © 2026