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 current API guide, see the developer documentation.

Base URLs

EnvironmentURL
Productionhttps://api.ilovevideoeditor.com

Postman, Bruno, Insomnia & friends

Run in Postman

The API ships as machine-readable artifacts you can import into any HTTP client:

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 developer documentation for webhook events, payload shape, and retry behavior.

Released under the MIT License.