GET
/api/v1/accounts/{accountId}/requests

Returns the API calls attributed to an account per time bucket, successes and failures alike: one per HTTP request plus one per JMAP method call, made with the account's keys or for its mailboxes. Buckets are labelled, sized and aligned exactly as GET /accounts/{accountId}/traffic's for the same range. A sampled estimate; GET /accounts/{accountId}/usage carries the exact daily counts.

Authorization

bearerAuth
headerAuthorizationBearer <token>

Two credential kinds share this scheme; GET /api/v1/auth/whoami answers which one you hold and what it reaches.

oek_… API key (minted by POST /api/v1/api-keys; shown once at mint). role: account reaches the full account surface: the directory (domains, routes, patterns, api-keys, accounts, address lists) plus every mailbox the account owns. role: system additionally reaches the operator surface, which is documented separately.

oemp_… mailbox app password (minted by POST /api/v1/identities/{identityId}/credentials). Reaches ONE mailbox: its messages, labels, threads, search, sync, send, filters and PIM collections. Directory routes refuse it with 403 insufficient_scope.

Refusal vocabulary: a missing, malformed, expired, or revoked credential answers 401 unauthorized with a WWW-Authenticate: Bearer challenge; a VALID credential outside its scope answers 403 (insufficient_scope for an app password on a directory route, system_credentials_required where only the operator may call). The public routes (health, branding, token-in-path capabilities) declare security: [].

Path Parameters

accountId*string

Account ULID identifier

Query Parameters

range?string

Time window ('1h', '6h', '24h', '7d', '30d')

Default"24h"
Value in"1h""6h""24h""7d""30d"

Response Body

The account's API calls per bucket over the window, oldest first, and their total

application/json
  1. response
accountId*string

Account ULID identifier

estimated*boolean

True if metrics are sampled estimates

range*string

Time range queried

retentionDays*integer

Analytics retention window in days

series*array<>

One point per bucket that holds a call, oldest first. A bucket with no call is absent

total*integer

Calls across the window: the series summed

Formatint64
Example Request
curl -X GET 'https://api.open.email/api/v1/accounts/string/requests'
Example Response
{
  "accountId": "string",
  "estimated": true,
  "range": "string",
  "retentionDays": 0,
  "series": [
    {
      "bucket": "string",
      "calls": 0
    }
  ],
  "total": 0
}