Skip to content

REST API Quick Reference

This page covers the public REST endpoints most developers need to render videos, manage assets, and poll results. For the full machine-readable spec, see the OpenAPI reference.

Base URLs

EnvironmentURL
Productionhttps://api.ilovevideoeditor.com

Authentication

  • API key (x-api-key header) — used by render pipeline endpoints. Get one from Account > API Keys in the dashboard.
  • Bearer token (Authorization: Bearer <jwt>) — used by user-scoped endpoints such as projects, assets, and billing.

See Authentication for details.

Public endpoints cheat sheet

MethodEndpointAuthWhat it does
POST/v1/renderAPI key or BearerQueue a render job
POST/v1/render/costAPI key or BearerEstimate credit cost without queueing
GET/v1/render/{id}API key or BearerGet render status and progress
GET/v1/render/{id}/download-urlAPI key or BearerGet a signed download URL
POST/v1/render/{id}/refresh-urlAPI key or BearerRefresh an expired signed URL
GET/v1/templatesnoneList public templates
GET/v1/templates/{id}noneGet a single template
GET/v1/assetsBearerList workspace assets
POST/v1/assets/upload-urlBearerGet a signed upload URL
GET/healthnoneHealth check

Dashboard-scoped endpoints such as /v1/integrations, /billing/*, /v1/admin/*, and the /v1/tools jobs API are documented in the full OpenAPI reference.

Render a video

bash
curl -X POST https://api.ilovevideoeditor.com/v1/render \
  -H "Content-Type: application/json" \
  -H "x-api-key: YOUR_API_KEY" \
  -d '{
    "videoJSON": {
      "name": "Hello World",
      "layers": [
        {
          "type": "composition",
          "width": 1920,
          "height": 1080,
          "fps": 30,
          "sourceDuration": 5
        },
        {
          "type": "text",
          "text": "Hello, world!",
          "start": 0,
          "duration": 5,
          "style": {
            "fontSize": 8,
            "color": "#ffffff",
            "fontFamily": "Inter"
          }
        }
      ]
    }
  }'

Response:

json
{
  "jobId": "018f...",
  "status": "pending"
}

Poll for status

bash
curl https://api.ilovevideoeditor.com/v1/render/018f... \
  -H "x-api-key: YOUR_API_KEY"

When completed:

json
{
  "id": "018f...",
  "status": "completed",
  "progress": 100,
  "url": "https://cdn.ilovevideoeditor.com/.../render.mp4",
  "error": null,
  "createdAt": "2026-06-26T00:00:00.000Z",
  "completedAt": "2026-06-26T00:01:00.000Z"
}

Download the MP4

bash
curl -L https://api.ilovevideoeditor.com/v1/render/018f.../download \
  -H "x-api-key: YOUR_API_KEY" \
  -o hello-world.mp4

The /download endpoint redirects to a signed URL. If the URL expires, use POST /v1/render/{id}/refresh-url to generate a fresh one.

Estimate cost before rendering

bash
curl -X POST https://api.ilovevideoeditor.com/v1/render/cost \
  -H "Content-Type: application/json" \
  -H "x-api-key: YOUR_API_KEY" \
  -d '{"videoJSON": { ... }}'

Upload and use your own assets

  1. Request a signed upload URL:
bash
curl -X POST https://api.ilovevideoeditor.com/v1/assets/upload-url \
  -H "Authorization: Bearer YOUR_JWT" \
  -H "Content-Type: application/json" \
  -d '{"name": "clip.mp4", "type": "video", "sizeBytes": 1048576}'
  1. PUT the file to the returned uploadUrl.
  2. Register the asset:
bash
curl -X POST https://api.ilovevideoeditor.com/v1/assets \
  -H "Authorization: Bearer YOUR_JWT" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "clip.mp4",
    "type": "video",
    "storageKey": "workspace-id/asset-id/clip.mp4",
    "sizeBytes": 1048576,
    "duration": 10,
    "width": 1920,
    "height": 1080
  }'
  1. Use the returned assetUrl as the src for image/video/audio layers in your VideoJSON.

Webhooks

You can avoid polling by providing webhookUrl when queueing a render:

bash
curl -X POST https://api.ilovevideoeditor.com/v1/render \
  -H "Content-Type: application/json" \
  -H "x-api-key: YOUR_API_KEY" \
  -d '{
    "videoJSON": { ... },
    "webhookUrl": "https://your-app.com/webhooks/ilv"
  }'

See the Full OpenAPI Reference for webhook events, payload shape, and retry behavior.

Released under the MIT License.