Developer docs

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.

POST/api/signup

Create an account and start a session (password: 8+ characters).

Body: { email, name, password }
POST/api/login

Start a session. 10 failed attempts lock that email/IP for 15 minutes.

Body: { email, password }
POST/api/logout

End the current session.

GET/api/me

The signed-in user, including plan, role and onboarding profile.

POST/api/me/password

Change password; other sessions are signed out.

Body: { current, next }

Your data

All of a user’s workspaces and bases are one JSON document.

GET/api/data

Returns { data, updatedAt }. data is null for a brand-new account.

PUT/api/data

Save 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.

GET/api/ai/status

{ enabled, provider, used, limit }

POST/api/ai

Tasks: build_base, revise_plan, omni, field, ask, formula.

Body: { task, input }

Community

Reading is public; posting needs a session.

GET/api/community/threads?category=

Latest topics, optionally filtered by category.

GET/api/community/threads/:id

A topic with its replies.

POST/api/community/threads

Start a topic.

Body: { category, title, body }
POST/api/community/threads/:id/replies

Reply to a topic.

Body: { body }

Contact

Public form endpoint, rate limited per IP.

POST/api/contact

Send a message to the Extables team.

Body: { kind: sales|support|careers, name, email, message, … }