Developers

Me

Introspection for the calling key: which workspace it belongs to, what plan that workspace is on, and the limits you'll be measured against. This is the first call an agent should make. Read it once at startup to self-configure and stay clear of 403s, 402s, and 429s.

Who am I?

GET/api/v1/me

Needs no scope; any valid key may ask what it is. There's nothing to pass beyond the bearer token.

bash
curl https://postme.live/api/v1/me \
  -H "Authorization: Bearer pml_live_AbCdEf123456_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"

Response: 200 OK

json
{
  "key": {
    "id": "b3f0c8a2-1d4e-4f9a-9c2b-7e1a5d6f0c33",
    "name": "Production agent",
    "prefix": "pml_live_AbCdEf123456",
    "last4": "9a2c",
    "scopes": [
      "workspaces:read",
      "channels:read",
      "media:read",
      "posts:read",
      "posts:write",
      "analytics:read"
    ]
  },
  "workspace": {
    "id": "9f3a4b2c-6d7e-4a1b-8c9d-0e1f2a3b4c5d",
    "name": "Outback Yak",
    "plan": "community"
  },
  "brand": {
    "id": "1a2b3c4d-5e6f-4708-9a0b-1c2d3e4f5061",
    "name": "Outback Yak"
  },
  "plan": {
    "name": "community",
    "api_rpm": 50,
    "posts_per_day": 30,
    "scheduled_posts_max": 100,
    "channels_max": 50,
    "upload_bytes_per_file_max": 524288000,
    "storage_bytes_total": 53687091200,
    "storage_bytes_used": 4182163456
  }
}

Field reference

FieldTypeNotes
key.iduuidThe API key's id (never the secret).
key.namestringThe human-readable name you gave the key at creation.
key.prefix / key.last4stringDisplay halves: the static pml_live_<lookup> prefix and the last four characters of the secret. Enough to identify a key in your own logs without storing it.
key.scopesstring[]The scopes this key was granted. Branch on this before calling a scoped endpoint. See Authentication → Scopes.
workspaceobjectThe single workspace this key is scoped to (id, name, plan). See Workspaces.
brandobject | nullThe workspace's brand (id, name). One brand per workspace today; null only if none has been created yet.
plan.namestringThe plan tier (free or community).
plan.api_rpmnumberYour per-key request budget per minute. See Rate limits.
plan.posts_per_daynumberDaily cap on posts that publish (scheduled or immediate). Drafts are free.
plan.scheduled_posts_maxnumberMaximum number of scheduled posts pending in the queue at once.
plan.channels_maxnumberMaximum connected channels in the workspace.
plan.upload_bytes_per_file_maxnumberPer-file upload cap, in bytes.
plan.storage_bytes_total / plan.storage_bytes_usednumberTotal storage allowance and current usage, in bytes. Check headroom before a large upload.

Why call it first

An agent that reads /me on startup knows its scopes (so it can skip a call it isn't allowed to make rather than eating a 403), its rate budget (so it can pace itself rather than hitting 429), and its storage and post headroom (so it can fail a job early rather than mid-upload with a 402). None of that changes often, so reading it once per run is plenty.

Me: Public API