Errors and limits¶
Every error is JSON. Most carry a human-readable detail; where an agent needs to
branch on the cause, there is also a stable code.
| Status | code |
Meaning | What to do |
|---|---|---|---|
400 |
— | The request body is invalid; the body names each failing field | Fix the named fields and resend |
400 |
— | A lesson edit did not send updated_at |
Read the lesson, send its updated_at with your change |
401 |
— | No key, or the key is unknown, revoked or expired (Authentication credentials were not provided.) |
Check the Authorization header; ask for a new key |
401 |
subscription_inactive |
The organisation has no active paid plan | A person must subscribe to a plan |
401 |
org_unverified |
The organisation has not completed verification | A person must finish sign-up |
403 |
— | The key's permission for this area is too low | Ask for view or edit on that area (permissions) |
403 |
course_limit |
Creating a course would exceed the plan's course limit; detail says by how much |
Archive a finished course, or a person moves to a larger plan |
404 |
— | Nothing with that id in this key's organisation | Check the id; keys only ever see their own organisation |
409 |
stale_lesson |
The lesson changed since you read it; lesson holds the current version |
Re-apply your change to lesson and resend with its updated_at |
429 |
— | Rate limit reached | Wait Retry-After seconds |
Limits¶
- 300 requests per hour per key. Each key has its own allowance.
- Plan limits apply exactly as in the web app — for example, the number of courses
on your plan. Creating one past the limit is refused with
403 course_limit. - Keys can expire. If a person set an expiry date, the key stops working at that
date with
401.