REST API reference

The Elnora core REST API — base URL, authentication, conventions, and the full resource catalog.

The Elnora core REST API is the programmatic surface behind the CLI, the MCP server, and the app. Everything you can do in the dashboard, you can do over HTTP.

  • Base URL: https://platform.elnora.ai/api/v1
  • Format: JSON request and response bodies. Resource ids are UUIDs.
  • Auth: an API key in the X-API-Key header (see Authentication).

Every endpoint has a reference page under API → Endpoints with its parameters, request/response, and a copy-paste curl example — generated from the API's OpenAPI specification, so it always matches production.

Authentication

Send your API key on every request:

curl https://platform.elnora.ai/api/v1/tasks \
  -H "X-API-Key: $ELNORA_API_KEY"

You can equivalently send Authorization: Bearer <your-key>. Interactive clients (including the MCP server) may use OAuth 2.1 instead. Requests act on your active organization; some endpoints accept an explicit organization id to target another org you belong to.

Conventions

  • Pagination — list endpoints take page and pageSize (max 100); message history uses cursor pagination (Cursor / Limit).
  • Versioning — the API is versioned in the path (/api/v1).

Errors

Errors use standard HTTP status codes with a consistent JSON body:

{
  "errorCode": "NOT_FOUND",
  "messages": ["Task not found."],
  "correlationId": "b1f2…"
}

errorCode is a stable machine-readable string (e.g. BAD_REQUEST, UNAUTHORIZED, FORBIDDEN, NOT_FOUND, VERSION_CONFLICT, RATE_LIMIT_EXCEEDED); messages is safe to show a user; correlationId identifies the request in our logs — include it when contacting support. Common statuses: 401 unauthenticated, 403 not permitted for your role, 404 not found, 409 a version conflict (re-read and retry), 422 validation error.

Rate limits

The API is rate limited per client. When you exceed a limit you get 429 Too Many Requests with a Retry-After header (seconds to wait) and the error body above with errorCode: "RATE_LIMIT_EXCEEDED". Back off and retry after the indicated delay; for bulk work, prefer batch endpoints and a modest concurrency.

A first request

Check connectivity and build provenance (no auth required):

curl https://platform.elnora.ai/api/v1/version

Create a task and send the agent a message:

# 1. Create a task
curl -X POST https://platform.elnora.ai/api/v1/tasks \
  -H "X-API-Key: $ELNORA_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "title": "Optimize transfection" }'

# 2. Send a message; the agent works on it asynchronously
curl -X POST https://platform.elnora.ai/api/v1/tasks/<task-uuid>/messages \
  -H "X-API-Key: $ELNORA_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "content": "Optimize a HEK293 transfection protocol for higher yield" }'

# 3. Read the reply — poll the task's messages until the agent responds.
#    Cursor pagination: pass ?Cursor=<nextCursor>&Limit=50 to page.
curl https://platform.elnora.ai/api/v1/tasks/<task-uuid>/messages \
  -H "X-API-Key: $ELNORA_API_KEY"

# Any files the agent produced are listed on the task's attachments.
curl https://platform.elnora.ai/api/v1/tasks/<task-uuid>/attachments \
  -H "X-API-Key: $ELNORA_API_KEY"

Resources

ResourceWhat it covers
AccountYour profile, email confirmation, sign-in, and account deletion.
API keysCreate, list, and revoke keys; read and set your org's key policy.
OrganizationsList and switch orgs, members and roles, invitations, exports, billing status.
InvitationsLook up and accept an invitation to join an organization.
FilesUpload, download, share, move, and version files; working copies, fork, promote.
FoldersCreate, rename, move, archive, and share folders.
LibraryYour organization's shared collection of reusable content.
Tasks & messagesDrive the agent — create tasks, send messages, read attachments.
SearchSearch across tasks, files, file content, and your knowledge base.
Audit logRead your organization's audit trail (org admins).
FeedbackSubmit product feedback.
VersionBuild and release provenance.

Per-endpoint pages are listed under API → Endpoints in the sidebar, grouped by resource. They are generated from the OpenAPI spec and regenerated automatically whenever the API changes, so they never drift from production.

On this page