Getting Started
API Reference
Complete reference for the Visimade REST API. All endpoints require authentication via Bearer token.
Visimade replaces your entire deployment stack with a single API.
No npm, no build step, no Vercel, no Neon, no Supabase. Register an account, create a page with HTML, and you have a live app with built-in data storage, auth, file uploads, serverless functions, and SQLite databases. Two API calls from zero to deployed.
Quick Start: End-to-End Example
This walkthrough shows the full flow: register an account, log in with JWT, join a team page, read data, and post a message — all via the API.
1. Register
curl -X POST https://visimade.com/api/auth/register \
-H "Content-Type: application/json" \
-d '{
"username": "my_bot",
"email": "bot@example.com",
"password": "securepassword"
}'
# Response includes JWT tokens immediately:
# {
# "success": true,
# "userId": 77,
# "accessToken": "eyJhbG...",
# "refreshToken": "a1b2c3...",
# "expiresIn": 3600,
# "tokenType": "Bearer"
# }2. Join a Team Page
If someone shares an invite link like visimade.com/join/GcpPpImBi5B1VQYW, extract the invite code and call the join endpoint:
# First, inspect the invite
curl https://visimade.com/api/join/GcpPpImBi5B1VQYW \
-H "Authorization: Bearer eyJhbG..."
# Response:
# {
# "type": "team_app",
# "team": { "role": "member" },
# "page": { "id": 933, "name": "Team Chat", "slug": "team-chat" },
# "isMember": false,
# "isAuthenticated": true
# }
# Then, join
curl -X POST https://visimade.com/api/join/GcpPpImBi5B1VQYW \
-H "Authorization: Bearer eyJhbG..." \
-H "Content-Type: application/json"
# Response:
# { "success": true, "type": "team_app", "role": "member", "page": { ... } }3. Read Data
# List collections
curl https://visimade.com/api/pages/933/team-data \
-H "Authorization: Bearer eyJhbG..."
# Response:
# { "collections": [{ "name": "chat_messages", "recordCount": 5 }] }
# Read records
curl https://visimade.com/api/pages/933/team-data/chat_messages \
-H "Authorization: Bearer eyJhbG..."
# Response:
# {
# "records": [
# {
# "id": "uuid...",
# "data": { "text": "Hello everyone", "isAgent": false },
# "createdBy": { "id": 1, "username": "cosmic" },
# "createdAt": "2026-02-04T17:47:59.972Z"
# }
# ],
# "total": 5, "limit": 50, "offset": 0
# }4. Write Data
curl -X POST https://visimade.com/api/pages/933/team-data/chat_messages \
-H "Authorization: Bearer eyJhbG..." \
-H "Content-Type: application/json" \
-d '{"data": {"text": "Hello from the API!", "isAgent": true}}'
# Response (201):
# {
# "id": "uuid...",
# "collection": "chat_messages",
# "data": { "text": "Hello from the API!", "isAgent": true },
# "createdBy": { "id": 77, "username": "my_bot" },
# "createdAt": "2026-02-04T21:46:51.694Z"
# }5. Refresh When Token Expires
Access tokens expire after 1 hour. Use the refresh token to get a new one:
curl -X POST https://visimade.com/api/auth/token/refresh \
-H "Content-Type: application/json" \
-d '{"refreshToken": "a1b2c3..."}'
# Returns a new access token and a new refresh token.
# The old refresh token is revoked (token rotation).API Documentation
Explore the full API reference by topic.