Skip to main content

API Reference

The Ever Works Platform API is a REST API built with NestJS. It provides endpoints for authentication, work management, AI-powered content generation, deployment, and more.

Base URL

http://localhost:3100 # Local development

Interactive Documentation

URLDescription
/api/swaggerSwagger UI — interactive endpoint explorer
/api/docsScalar API Reference — modern API docs UI
/api/openapi.jsonOpenAPI 3.0 JSON specification

Authentication

All API endpoints require JWT Bearer authentication unless explicitly marked as public.

Authorization: Bearer <your-jwt-token>

Obtain a token by calling POST /api/auth/login or POST /api/auth/register. There are no API keys — all access is user-based via JWT tokens.

See Authentication for the full auth flow.

Rate Limiting

The API uses three rate-limiting tiers applied globally via NestJS Throttler:

TierRequestsWindow
Short501 second
Medium30010 seconds
Long1,00060 seconds

All tiers apply simultaneously. If any tier's limit is exceeded, the API returns 429 Too Many Requests.

Endpoint Groups

TagPrefixDescriptionDetails
Health/apiHealth checkGET /api returns API status
Auth/api/authRegistration, login, email verificationAuthentication
OAuth/api/oauthOAuth flows (GitHub, Google), plugin connectionsAuthentication, Other Modules
Works/api/worksWork CRUD, items, categories, generation, importWorks
Deploy/api/deployProvider-agnostic deploymentDeployment
AI Conversation/api/ai-conversationsStreaming AI chatAI Conversation
Git Providers/api/git-providersGit provider connections, repos, orgsOther Modules
Generator Form/api/generator-formDynamic pipeline form schemasOther Modules
Screenshot/api/screenshotScreenshot captureScreenshot Capability
Search/api/searchWeb search via the user's first configured pluginSearch Capability
Plugin Device Auth/api/device-authPer-user device-code OAuth for plugins (CLI tools)Device Auth Capability
Subscriptions/api/subscriptionsPlans, billing, usage trackingOther Modules
Notifications/api/notificationsUser notificationsOther Modules
Members/api/works/:id/membersWork member managementWorks
Comparisons/api/works/:id/comparisonsA vs B comparison page generation and managementWorks
Activity Log/api/activity-logPer-user audit trail, filtering, CSV exportActivity Log
Templates/api/templatesBuilt-in / custom / forked template catalogTemplate Catalog
Account/api/accountExport / import / GitHub-sync account dataAccount Transfer

Request Format

  • Content-Type: application/json
  • Body size limit: 10 MB
  • Input is validated with class-validator. Invalid fields return 400 Bad Request with details.

Error Responses

Errors follow a standard format:

{
"statusCode": 400,
"message": ["field must be a string"],
"error": "Bad Request"
}

Common status codes:

CodeMeaning
200Success
201Created
400Validation error
401Not authenticated
403Forbidden
404Not found
429Rate limit exceeded
500Internal server error