VideoForge API.
Programmatically submit videos to the uniquification pipeline, fetch reports, and manage your jobs. REST + Model Context Protocol.
Quickstart
Three steps. Get a token, submit a job, fetch the result.
- 1. Mint a token in Settings → API tokens.
- 2. Call
POST /api/v1/jobswith a source URL. - 3. Poll
GET /api/v1/jobs/{id}or set up an Agency webhook.
curl -X POST https://your-app.lovable.app/api/v1/jobs \
-H "Authorization: Bearer vf_live_..." \
-H "Content-Type: application/json" \
-d '{"source_url":"https://example.com/in.mp4","intensity":"standard"}'Authentication
All API calls require a Bearer token. Tokens look like vf_live_… and are scoped to a single user.
Authorization: Bearer vf_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxTokens are hashed at rest. We never store the plaintext. If a token is lost, revoke it and mint a new one.
Endpoints
/api/v1/healthReturns API status and version. Unauthenticated.
{
"status": "ok",
"version": "1.0.0",
"ts": "2026-06-08T05:00:00.000Z"
}/api/v1/usageReturns this billing period's job count, monthly cap, concurrent-job cap, and plan tier.
{
"plan": "marketer",
"monthly_cap": 150,
"monthly_used": 42,
"concurrent_cap": 3
}/api/v1/jobsSubmit a video for processing. The source must already be uploaded to a publicly reachable URL (S3, R2, Lovable Storage signed URL).
source_urlrequiredstring (URL)Direct URL to the source video.
intensity'subtle' | 'standard' | 'aggressive'Pipeline intensity preset. Defaults to 'standard'.
{
"id": "9f5d-...-job-id",
"status": "queued",
"created_at": "2026-06-08T05:00:00.000Z"
}/api/v1/jobsPaginated list of jobs owned by the authenticated user.
limitinteger (1-100)Page size. Defaults to 25.
statusstringFilter by status: queued, processing, complete, failed.
{
"jobs": [
{ "id": "...", "status": "complete", "verdict": "STRONG", ... }
],
"next_cursor": null
}/api/v1/jobs/{id}Returns full job details including the uniqueness report.
{
"id": "...",
"status": "complete",
"report": { "verdict": "STRONG", "pHash": {...}, "audio": {...} },
"output_url": "https://...signed-url"
}/api/v1/jobs/{id}Permanently deletes the job and all associated source/output files.
{ "ok": true }MCP — Model Context Protocol
Model Context Protocol endpoint. Authenticate with the same Bearer token used for the REST API. Supports tools: submit_video, get_job, list_jobs, get_usage.
{
"mcpServers": {
"videoforge": {
"command": "npx",
"args": ["mcp-remote", "https://your-app.lovable.app/api/public/mcp"],
"env": { "AUTH_TOKEN": "vf_live_..." }
}
}
}Errors
Errors return a JSON envelope:
{
"error": {
"code": 401,
"message": "Invalid token"
}
}| Status | Meaning |
|---|---|
| 401 | Missing / invalid / revoked token |
| 402 | Plan upgrade required, or monthly cap reached |
| 404 | Resource not found |
| 422 | Validation error (bad input) |
| 429 | Concurrency cap reached — retry later |