Call GET /v1/me to check a key before you do anything else: a valid key answers 200 with the plan and this month's usage, a bad one answers 401. It works with any key, whatever its scopes.
curl https://api.reelspan.com/v1/me \
-H "Authorization: Bearer $REELSPAN_API_KEY"import { Reelspan } from 'reelspan';
const reelspan = new Reelspan();
const me = await reelspan.me();
console.log(me.plan, me.api_usage);from reelspan import Reelspan
reelspan = Reelspan()
me = reelspan.me()
print(me["plan"], me["api_usage"])The response
{
"success": true,
"message": "Token is valid",
"email": "[email protected]",
"plan": "free",
"preferences": { "weekStartDay": 1, "timezone": "Europe/London" },
"api_usage": { "count": 4, "limit": 15, "last_reset": "2026-11-01T00:00:00.000Z" }
}email: the email of the person who created the key. For a key with no creator, the workspace's first member.plan: the workspace's plan id:free,starter,pro,agencyorscale.preferences: the workspace's preferences.weekStartDayis1when weeks start on Monday (the default) or0for Sunday.timezoneis the zone a post'sscheduled_dateis read in when the post sends notimezone, ornullfor UTC.api_usage.count: uploads used this month. Each network a post goes to counts as one upload, so one video sent to TikTok, YouTube and Instagram counts 3. Test-key posts don't count.api_usage.limit: the plan's monthly uploads, ornullwhen the plan has no limit. Only the Free plan has one (15 a month).api_usage.last_reset: when the current period began. Usage resets on the first day of each month, at midnight UTC.
When a post would go over the limit, the post request answers 429 and nothing is published. See Plans and limits.
Errors
A missing, wrong, revoked or expired key answers 401:
{ "success": false, "message": "API key expired" }The messages are listed under When authentication fails.