← Home

TubeForge API

v1

Programmatic access to your TubeForge projects. Build integrations, automate workflows, and manage content at scale.

API access is available on the Studio plan. Generate and manage API keys in Settings.
On this page
AuthenticationBase URLRate LimitsEndpointsTry ItError CodesWebhooksSDKs & Libraries

Authentication

All API requests must include a Bearer token in the Authorization header.

Authorization: Bearer tf_your_api_key_here

Generate API keys in your account Settings page. Keys start with tf_ and are shown only once after generation. You can create up to 5 keys per account and revoke them at any time.

Base URL

https://tubeforge.co/api/v1

All endpoints are relative to this base URL. Always use HTTPS in production.

Rate Limits

Rate limits protect the API from abuse and ensure fair usage. Limits are applied per API key.

Endpoint
Limit
Window
GET /api/v1/projects
60
1 min
POST /api/v1/projects
60
1 min
API key mutations (tRPC)
10
1 min
Webhook mutations (tRPC)
10
1 min

Response Headers

X-RateLimit-Limit: 60
X-RateLimit-Remaining: 59
X-RateLimit-Reset: 1711234567

When the limit is exceeded, the API returns 429 with a Retry-After header indicating how many seconds to wait before retrying.

Endpoints

GET/api/v1/projects60/min

List your projects with pagination. Returns most recently updated first.

Query Parameters
pagenumberPage number (default: 1)
limitnumberItems per page (default: 20, max: 50)
statusstringFilter by status: DRAFT, RENDERING, READY, PUBLISHED
Code Examples
curl -X GET "https://tubeforge.co/api/v1/projects?page=1&limit=10" \
  -H "Authorization: Bearer tf_your_api_key"
Response 200
{
  "data": [
    {
      "id": "clx1234abc",
      "title": "My Project",
      "description": "A great video project",
      "status": "DRAFT",
      "tags": ["tutorial", "ai"],
      "thumbnailUrl": null,
      "sceneCount": 5,
      "createdAt": "2026-03-20T10:00:00.000Z",
      "updatedAt": "2026-03-20T12:30:00.000Z"
    }
  ],
  "pagination": {
    "page": 1,
    "limit": 10,
    "total": 42,
    "pages": 5
  }
}
POST/api/v1/projects60/min

Create a new project. Subject to your plan's project limit.

Request Body (JSON)
titlestringProject title (max 100 chars, default: 'Untitled')
descriptionstringProject description (max 5000 chars)
tagsstring[]Tags array (max 30 items, each max 100 chars)
Code Examples
curl -X POST "https://tubeforge.co/api/v1/projects" \
  -H "Authorization: Bearer tf_your_api_key" \
  -H "Content-Type: application/json" \
  -d '{"title": "My New Project", "tags": ["tutorial"]}'
Response 201 Created
{
  "data": {
    "id": "clx5678def",
    "title": "My New Project",
    "description": "Created via API",
    "status": "DRAFT",
    "tags": ["tutorial"],
    "createdAt": "2026-03-20T14:00:00.000Z",
    "updatedAt": "2026-03-20T14:00:00.000Z"
  }
}

Try It

Test API endpoints directly from your browser using your API key. Requests are sent from your browser to https://tubeforge.co -- your key never leaves your machine.

Try itTest endpoints directly from your browser
Generate a key in Settings. Your key is never stored or sent to third parties.

Error Codes

All errors return a JSON body with an error field describing the issue.

400Bad Request -- Invalid JSON body or parameters
401Unauthorized -- Missing or invalid API key
403Forbidden -- Plan limit reached or insufficient permissions
404Not Found -- Resource does not exist
429Too Many Requests -- Rate limit exceeded
500Internal Server Error -- Something went wrong on our end
Error Response Format
{
  "error": "Unauthorized. Provide a valid Bearer token in the Authorization header."
}

Webhooks

Receive real-time HTTP notifications when events occur in your account. Configure webhooks in Settings or via the tRPC API. Only https:// URLs are accepted. Maximum 10 webhooks per account.

Setup
1.Register a webhook URL with the events you want to listen to.
2.Store the whsec_ secret returned at registration (shown only once).
3.Verify signatures on incoming webhooks using HMAC-SHA256 before processing.
Available Events
project.createdA new project has been created
video.completedA video has finished rendering and is ready for download
Delivery Headers
Content-Type: application/json
X-Webhook-Signature: <HMAC-SHA256 hex digest>
X-Webhook-Event: project.created
X-Webhook-Id: <unique delivery id>
Signature Verification

Each webhook delivery includes an HMAC-SHA256 signature in the X-Webhook-Signature header. Always verify the signature before processing the payload to ensure it came from TubeForge.

# Compute expected signature and compare:
echo -n '{"event":"project.created",...}' | \
  openssl dgst -sha256 -hmac "whsec_your_webhook_secret"
Payload: project.created
{
  "event": "project.created",
  "timestamp": "2026-03-20T14:00:00.000Z",
  "data": {
    "id": "clx5678def",
    "title": "My New Project",
    "description": null,
    "status": "DRAFT",
    "tags": ["tutorial"],
    "createdAt": "2026-03-20T14:00:00.000Z"
  }
}
Payload: video.completed
{
  "event": "video.completed",
  "timestamp": "2026-03-20T15:30:00.000Z",
  "data": {
    "projectId": "clx5678def",
    "videoId": "vid_abc123",
    "title": "My New Project",
    "duration": 127,
    "resolution": "1080p",
    "fileSize": 52428800,
    "downloadUrl": "https://tubeforge.co/api/v1/videos/vid_abc123/download",
    "expiresAt": "2026-03-27T15:30:00.000Z"
  }
}

SDKs & Libraries

Official SDKs
Coming soon

We are building official client libraries to make integration even easier. Planned languages:

Node.js / TypeScriptnpm install @tubeforge/sdk
Pythonpip install tubeforge
Gogo get tubeforge.co/sdk

Want early access to SDKs? Contact support@tubeforge.co to join the beta program. In the meantime, the REST API works great with any HTTP client.

Need Help?

If you have questions about the API, contact us at support@tubeforge.co. More endpoints (scenes, assets, thumbnails, video rendering) are on the roadmap.