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/meNeeds no scope; any valid key may ask what it is. There's nothing to pass beyond the bearer token.
curl https://postme.live/api/v1/me \
-H "Authorization: Bearer pml_live_AbCdEf123456_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"Response: 200 OK
{
"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
| Field | Type | Notes |
|---|---|---|
key.id | uuid | The API key's id (never the secret). |
key.name | string | The human-readable name you gave the key at creation. |
key.prefix / key.last4 | string | Display 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.scopes | string[] | The scopes this key was granted. Branch on this before calling a scoped endpoint. See Authentication → Scopes. |
workspace | object | The single workspace this key is scoped to (id, name, plan). See Workspaces. |
brand | object | null | The workspace's brand (id, name). One brand per workspace today; null only if none has been created yet. |
plan.name | string | The plan tier (free or community). |
plan.api_rpm | number | Your per-key request budget per minute. See Rate limits. |
plan.posts_per_day | number | Daily cap on posts that publish (scheduled or immediate). Drafts are free. |
plan.scheduled_posts_max | number | Maximum number of scheduled posts pending in the queue at once. |
plan.channels_max | number | Maximum connected channels in the workspace. |
plan.upload_bytes_per_file_max | number | Per-file upload cap, in bytes. |
plan.storage_bytes_total / plan.storage_bytes_used | number | Total 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.