The Extables API.
The same JSON API the Extables app uses. Requests and responses are JSON; errors look like { error: message }.
Authentication
Extables uses a session cookie (httpOnly, SameSite=Lax). Write requests must come from the same origin.
/api/signupCreate an account and start a session (password: 8+ characters).
Body:{ email, name, password }/api/loginStart a session. 10 failed attempts lock that email/IP for 15 minutes.
Body:{ email, password }/api/logoutEnd the current session.
/api/meThe signed-in user, including plan, role and onboarding profile.
/api/me/passwordChange password; other sessions are signed out.
Body:{ current, next }Your data
All of a userβs workspaces and bases are one JSON document.
/api/dataReturns { data, updatedAt }. data is null for a brand-new account.
/api/dataSave the document. If baseVersion is older than the serverβs, you get 409 with the latest { data, updatedAt } to merge.
Body:{ data, baseVersion }AI
Uses the provider your admin configured; counts toward your planβs monthly limit.
/api/ai/status{ enabled, provider, used, limit }
/api/aiTasks: build_base, revise_plan, omni, field, ask, formula.
Body:{ task, input }Community
Reading is public; posting needs a session.
/api/community/threads?category=Latest topics, optionally filtered by category.
/api/community/threads/:idA topic with its replies.
/api/community/threadsStart a topic.
Body:{ category, title, body }/api/community/threads/:id/repliesReply to a topic.
Body:{ body }Contact
Public form endpoint, rate limited per IP.
/api/contactSend a message to the Extables team.
Body:{ kind: sales|support|careers, name, email, message, β¦ }