Skip to main content

Documentation Index

Fetch the complete documentation index at: https://hubify.com/docs/llms.txt

Use this file to discover all available pages before exploring further.

API Overview

The Hubify Labs REST API provides programmatic access to labs, experiments, agents, papers, tasks, and compute resources.

Base URL

https://www.hubify.com/api/v1
All endpoints are prefixed with /v1. When a new API version is released, existing versions remain supported for at least 12 months.

Authentication

Every request requires an Authorization header with either an API key or a Clerk JWT:
# API key
curl https://www.hubify.com/api/v1/labs \
  -H "Authorization: Bearer hfy_key_abc123..."

# Clerk JWT
curl https://www.hubify.com/api/v1/labs \
  -H "Authorization: Bearer eyJhbGciOiJS..."
See Authentication for details on obtaining credentials.

Request Format

  • Content-Type: application/json for all request bodies
  • Method conventions: GET (read), POST (create), PATCH (update), DELETE (remove)
  • IDs: String identifiers (e.g., lab_abc123, exp_054)

Response Format

All responses return JSON with a consistent structure:
{
  "data": { ... },
  "meta": {
    "request_id": "req_abc123",
    "timestamp": "2026-04-14T10:42:01Z"
  }
}
Error responses include a machine-readable code and human-readable message:
{
  "error": {
    "code": "not_found",
    "message": "Experiment EXP-999 does not exist.",
    "status": 404
  }
}

Pagination

List endpoints support cursor-based pagination:
GET /v1/experiments?limit=20&cursor=exp_040
ParameterDefaultDescription
limit20Items per page (max 100)
cursor,Cursor from previous response
Paginated responses include a next_cursor field:
{
  "data": [ ... ],
  "meta": {
    "next_cursor": "exp_020",
    "has_more": true
  }
}

Rate Limits

PlanRequests/minRequests/day
Free601,000
Pro30050,000
Team1,000500,000
Rate limit headers are included in every response:
X-RateLimit-Limit: 300
X-RateLimit-Remaining: 298
X-RateLimit-Reset: 1713091200

Error Codes

CodeStatusDescription
unauthorized401Missing or invalid authentication
forbidden403Insufficient permissions
not_found404Resource does not exist
validation_error422Invalid request body
rate_limited429Too many requests
server_error500Internal server error

Route Catalog

Every live route in the current API. All routes require Authorization: Bearer <token> unless Auth shows public. The Lab scope column indicates whether the route operates on a specific lab (pass labId in body or query).
MethodPathAuthLab scopeStatus
GET/api/v1/statuspublicnolive
GET/api/v1/merequirednolive
GET/api/v1/labsrequirednolive
GET,POST,DELETE/api/v1/auth/keysrequirednolive
GET/api/v1/activityrequiredyeslive
GET/api/v1/agentsrequiredyeslive
GET,POST/api/v1/backupsrequiredyeslive
POST/api/v1/chats/[id]/promoterequiredyeslive
GET,POST/api/v1/contributionsrequiredyeslive
GET/api/v1/costsrequiredyeslive
GET,POST/api/v1/datasetsrequiredyeslive
GET,POST/api/v1/experimentsrequiredyeslive
GET,POST/api/v1/experiments/costsrequiredyeslive
GET,POST/api/v1/experiments/queuesrequiredyeslive
GET,POST/api/v1/experiments/templatesrequiredyeslive
GET/api/v1/figuresrequiredyeslive
GET,POST,PATCH,DELETE/api/v1/filesrequiredyeslive
GET,POST/api/v1/knowledgerequiredyeslive
GET,POST/api/v1/memoryrequiredyeslive
GET,POST/api/v1/papersrequiredyeslive
POST/api/v1/papers/[id]/publish-looprequiredyeslive
GET/api/v1/podsrequiredyeslive
POST/api/v1/pods/[podId]/startrequiredyeslive
POST/api/v1/pods/[podId]/stoprequiredyeslive
GET,POST/api/v1/projectsrequiredyeslive
GET/api/v1/searchrequiredyeslive
GET,POST/api/v1/standupsrequiredyeslive
GET,POST/api/v1/surveysrequiredyeslive
GET,POST/api/v1/syncrequiredyeslive
POST/api/v1/sync/secretrequiredyeslive
GET,POST/api/v1/tasksrequiredyeslive
DELETE/api/v1/tasks/[taskId]requiredyeslive
GET,POST/api/v1/telemetryrequiredyeslive
Routes marked planned exist in the docs but have no handler yet. Ghost routes are noted at the top of their respective reference pages.

SDKs

Official SDKs are available for common languages:
# Node.js / TypeScript
npm install @hubify/sdk

# Python
pip install hubify
import { Hubify } from '@hubify/sdk';

const client = new Hubify({ apiKey: process.env.HUBIFY_API_KEY });
const labs = await client.labs.list();