Eranol LogoEranol
BlogCommunityDocumentationSign In

General

OverviewGet Started

General

DeleteImage StatusStatusTikTok StatusFFmpeg Results

Action

Add IntroAdd OutroBackground AudioCaptions ApiComposeConcatConvert a video file to MP4Convert Audio to Mp3Convert Audio to wavConvert to JPGConvert to WebMConvert to WebPDenoiseExtract audio track from a videoExtract images from a videoGenerate a GIF from a videoHighlightsImageMergeNotifyOverlayProgress BarReframeRemove SilenceThumbnailTikTokTrimVerifyWatermark

Need help?

Contact Support
API Documentation

API Reference

Access powerful APIs through our unified platform. Simple authentication, transparent pricing, and comprehensive documentation.

Important: File Retention Policy

All files hosted on our servers are automatically deleted after 24 hours. Please ensure you download your generated files within this timeframe.

Secure

Enterprise-grade security with API key authentication

Fast

Low-latency proxy with global edge network

Reliable

99.9% uptime SLA with automatic failover

Get Started

Authentication

All API requests require authentication using your API key. Include your key in the request header:

bash
curl https://eranol.com/api/v1/endpoint \
  -H "x-api-key: YOUR_API_KEY"

Verify API Key

You can verify that your API key is valid and check your account details by calling the verify endpoint:

bash
curl https://eranol.com/api/v1/verify \
  -H "x-api-key: YOUR_API_KEY"

Response:

json
{
  "valid": true,
  "account": {
    "id": "your-account-id",
    "name": "Your Account Name",
    "credits": 1500
  }
}

Rate Limits

Rate limits vary by plan. Check your current usage in the dashboard. Rate limit headers are included in all responses:

http
X-RateLimit-Limit: 1000
X-RateLimit-Remaining: 999
X-RateLimit-Reset: 1640995200

Available APIs

Add Intro

POST

Prepend an intro clip to a video. Both clips are re-encoded to matching parameters and concatenated using the FFmpeg concat demuxer. Example: {"url": "https://cdn.example.com/main.mp4", "intro_url": "https://cdn.example.com/intro.mp4"}

Endpoint

Send your requests to the following URL using the specified HTTP method.

POST https://eranol.com/api/v1/ffmpeg/video/add-intro

Headers

Include the following headers with every request. Your API key is required for authentication.

Content-Type:application/json
x-api-key:YOUR_API_KEY

Request Body

Send the following JSON payload in the request body. Adjust the values to match your use case.

json
{
  "url": "https://cdn.example.com/main.mp4",
  "intro_url": "https://cdn.example.com/intro.mp4"
}

Parameters

All available options for this endpoint. Required parameters are marked accordingly.

ParameterTypeDefaultDescription
urlstringrequiredMain video file URL
intro_urlstringrequiredIntro clip URL to prepend

Example Request

Use the following cURL command to make a request to this API endpoint. Replace YOUR_API_KEY with your actual API key from the dashboard.

bash
curl -X POST "https://eranol.com/api/v1/ffmpeg/video/add-intro" \
  -H "x-api-key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"url":"https://cdn.example.com/main.mp4","intro_url":"https://cdn.example.com/intro.mp4"}'

Example Response

Below is an example of a successful JSON response from this endpoint.

json
{
  "job_id": "f595b9ad-1e15-4452-b7c2-8f8ff09c0a34",
  "status": "pending",
  "message": "Job created. Poll status_url for progress.",
  "job_type": "caption",
  "result_url": "https://eranol.com/api/v1/ffmpeg/result/f595b9ad-1e15-4452-b7c2-8f8ff09c0a34",
  "status_url": "https://eranol.com/api/v1/ffmpeg/status/f595b9ad-1e15-4452-b7c2-8f8ff09c0a34"
}

Response Status

A successful request will return one of the following HTTP status codes.

200 OKRequest was successful and data is returned in the response body.
201 CreatedResource was successfully created.
401 UnauthorizedMissing or invalid API key.
429 Too Many RequestsRate limit exceeded. Try again later.

Add Outro

POST

Append an outro clip to a video. Both clips are re-encoded to matching parameters and concatenated using the FFmpeg concat demuxer. Example: {"url": "https://cdn.example.com/main.mp4", "outro_url": "https://cdn.example.com/outro.mp4"}

Endpoint

Send your requests to the following URL using the specified HTTP method.

POST https://eranol.com/api/v1/ffmpeg/video/add-outro

Headers

Include the following headers with every request. Your API key is required for authentication.

Content-Type:application/json
x-api-key:YOUR_API_KEY

Request Body

Send the following JSON payload in the request body. Adjust the values to match your use case.

json
{
  "url": "https://cdn.example.com/main.mp4",
  "outro_url": "https://cdn.example.com/outro.mp4"
}

Parameters

All available options for this endpoint. Required parameters are marked accordingly.

ParameterTypeDefaultDescription
urlstringrequiredMain video file URL
outro_urlstringrequiredOutro clip URL to append

Example Request

Use the following cURL command to make a request to this API endpoint. Replace YOUR_API_KEY with your actual API key from the dashboard.

bash
curl -X POST "https://eranol.com/api/v1/ffmpeg/video/add-outro" \
  -H "x-api-key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"url":"https://cdn.example.com/main.mp4","outro_url":"https://cdn.example.com/outro.mp4"}'

Example Response

Below is an example of a successful JSON response from this endpoint.

json
{
  "job_id": "f595b9ad-1e15-4452-b7c2-8f8ff09c0a34",
  "status": "pending",
  "message": "Job created. Poll status_url for progress.",
  "job_type": "caption",
  "result_url": "https://eranol.com/api/v1/ffmpeg/result/f595b9ad-1e15-4452-b7c2-8f8ff09c0a34",
  "status_url": "https://eranol.com/api/v1/ffmpeg/status/f595b9ad-1e15-4452-b7c2-8f8ff09c0a34"
}

Response Status

A successful request will return one of the following HTTP status codes.

200 OKRequest was successful and data is returned in the response body.
201 CreatedResource was successfully created.
401 UnauthorizedMissing or invalid API key.
429 Too Many RequestsRate limit exceeded. Try again later.

Background Audio

POST

Add Background Audio

Endpoint

Send your requests to the following URL using the specified HTTP method.

POST https://eranol.com/api/v1/ffmpeg/video/add-bg-audio

Request Body

Send the following JSON payload in the request body. Adjust the values to match your use case.

json
{
  "video_url": "https://cdn.example.com/video.mp4",
  "bg_audio_url": "https://cdn.example.com/music.mp3",
  "bg_audio_volume": 0.2
}

Example Request

Use the following cURL command to make a request to this API endpoint. Replace YOUR_API_KEY with your actual API key from the dashboard.

bash
curl -X POST "https://eranol.com/api/v1/ffmpeg/video/add-bg-audio" \
  -H "x-api-key: YOUR_API_KEY" \
  -d '{"video_url":"https://cdn.example.com/video.mp4","bg_audio_url":"https://cdn.example.com/music.mp3","bg_audio_volume":0.2}'

Example Response

Below is an example of a successful JSON response from this endpoint.

json
[
  {
    "job_id": "1406c589-a1f4-45d5-8745-aae07bc4de38",
    "status": "pending",
    "message": "Job created. Poll status_url for progress.",
    "result_url": "https://eranol.com/api/v1/ffmpeg/result/1406c589-a1f4-45d5-8745-aae07bc4de38",
    "status_url": "https://eranol.com/api/v1/ffmpeg/status/1406c589-a1f4-45d5-8745-aae07bc4de38"
  }
]

Response Status

A successful request will return one of the following HTTP status codes.

200 OKRequest was successful and data is returned in the response body.
201 CreatedResource was successfully created.
401 UnauthorizedMissing or invalid API key.
429 Too Many RequestsRate limit exceeded. Try again later.

Captions Api

POST

Generate captions from a video's audio using Vosk speech recognition and burn them onto the video with custom styling. Returns both the captioned video file and an SRT subtitle file. The pipeline: download → extract audio → transcribe → generate subtitles → burn onto video. positions : "bottom", "top", "center"

Endpoint

Send your requests to the following URL using the specified HTTP method.

POST https://eranol.com/api/v1/ffmpeg/video/caption

Headers

Include the following headers with every request. Your API key is required for authentication.

Content-Type:application/json
x-api-key:YOUR_API_KEY

Request Body

Send the following JSON payload in the request body. Adjust the values to match your use case.

json
{
  "url": "https://cdn.example.com/video.mp4",
  "language": "en",
  "position": "bottom",
  "font_size": 24,
  "font_color": "white",
  "padding_top": 30,
  "outline_color": "black",
  "outline_width": 2,
  "padding_bottom": 30,
  "max_words_per_line": 7,
  "max_segment_duration": 3
}

Parameters

All available options for this endpoint. Required parameters are marked accordingly.

ParameterTypeDefaultDescription
urlstringrequiredVideo file URL
languagestringnullBCP-47 language code (e.g. en, es, zh). Omit to auto-detect
font_colorstringwhiteSubtitle color — name (white, yellow, red, etc.) or hex (#FFFF00)
font_sizeint24Font size in pixels (8–500)
outline_colorstringblackText outline color for readability
outline_widthint2Outline thickness in pixels (0–10, 0 disables)
positionstringbottomSubtitle position: bottom, top, or center
padding_bottomint30Pixel offset from bottom edge
padding_topint30Pixel offset from top edge
max_words_per_lineint7Max words per subtitle segment (1–20)
max_segment_durationfloat3.0Max seconds per subtitle segment (0.5–10.0)

Supported Languages

Pass any code below as the language parameter. Omit it entirely to let the API auto-detect the language.

CodeLanguage
enEnglish
zhChinese
esSpanish
hiHindi
arArabic
frFrench
ptPortuguese
ruRussian
deGerman
jaJapanese
koKorean
itItalian
trTurkish
plPolish
nlDutch
viVietnamese
idIndonesian
thThai
msMalay
ukUkrainian

Showing 20 most spoken — use filters or search to see all 99

Example Request— English captions (default)

Use the following cURL command to make a request to this API endpoint. Replace YOUR_API_KEY with your actual API key from the dashboard.

bash
curl -X POST "https://eranol.com/api/v1/ffmpeg/video/caption" \
  -H "x-api-key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"url":"https://cdn.example.com/video.mp4","language":"en","position":"bottom","font_size":24,"font_color":"white","padding_top":30,"outline_color":"black","outline_width":2,"padding_bottom":30,"max_words_per_line":7,"max_segment_duration":3}'

Example Response

Below is an example of a successful JSON response from this endpoint.

json
{
  "job_id": "f595b9ad-1e15-4452-b7c2-8f8ff09c0a34",
  "status": "pending",
  "message": "Job created. Poll status_url for progress.",
  "job_type": "caption",
  "result_url": "https://eranol.com/api/v1/ffmpeg/result/f595b9ad-1e15-4452-b7c2-8f8ff09c0a34",
  "status_url": "https://eranol.com/api/v1/ffmpeg/status/f595b9ad-1e15-4452-b7c2-8f8ff09c0a34"
}

Response Status

A successful request will return one of the following HTTP status codes.

200 OKRequest was successful and data is returned in the response body.
201 CreatedResource was successfully created.
401 UnauthorizedMissing or invalid API key.
429 Too Many RequestsRate limit exceeded. Try again later.

Compose

POST

Compose Videos in order with this api Video format we support : mp4,webm,avi,mkv,mov,flv,wmv,ts,mts,m4v,3gp,ogv

Endpoint

Send your requests to the following URL using the specified HTTP method.

POST https://eranol.com/api/v1/ffmpeg/video/compose

Request Body

Send the following JSON payload in the request body. Adjust the values to match your use case.

json
{
  "overlays": [
    {
      "url": "https://drive.google.com/file/d/1m7tEpD6j6H0xc5sfdmP1_eYaSJ7f-KEn/view?usp=sharing",
      "type": "video",
      "end_time": 5,
      "start_time": 2
    },
    {
      "url": "https://drive.google.com/file/d/1KOiZk-hIufPfaPAA6EGsUjatX1gngHEL/view?usp=sharing",
      "type": "image",
      "end_time": 9,
      "start_time": 7
    },
    {
      "url": "https://drive.google.com/file/d/1qG-MU1puA97lbAGpxe73ujWHKOFBy6PC/view?usp=sharing",
      "type": "image",
      "end_time": 13,
      "start_time": 10
    },
    {
      "url": "https://drive.google.com/file/d/192Q3crtd78UCQBky19dlniUpcx6aMQyD/view?usp=sharing",
      "type": "video",
      "end_time": 17,
      "start_time": 15
    },
    {
      "url": "https://drive.google.com/file/d/1qmSrNHWtD_Xw5eLbqKy1X9SxIG6Df3sz/view?usp=sharing",
      "type": "image",
      "end_time": 20,
      "start_time": 19
    },
    {
      "url": "https://drive.google.com/file/d/1jARcma7U_ruvqsCpCGn2gdcHzgUIS4dE/view?usp=sharing",
      "type": "image",
      "end_time": 22,
      "start_time": 21
    },
    {
      "url": "https://drive.google.com/file/d/1u0CBgVwk2oEV5g-g6qt8CWgUogTbfBqM/view?usp=sharing",
      "type": "video",
      "end_time": 26,
      "start_time": 23
    },
    {
      "url": "https://drive.google.com/file/d/1GkxhO7z8-VDY-f9RCIOYaQmRBVDWAW7N/view?usp=sharing",
      "type": "image",
      "end_time": 29,
      "start_time": 27
    }
  ],
  "main_video_url": "https://drive.google.com/file/d/1luBj--jqBTlCCMRcsYQYY1A3cPxkdprx/view?usp=drive_link"
}

Example Request

Use the following cURL command to make a request to this API endpoint. Replace YOUR_API_KEY with your actual API key from the dashboard.

bash
curl -X POST "https://eranol.com/api/v1/ffmpeg/video/compose" \
  -H "x-api-key: YOUR_API_KEY" \
  -d '{"overlays":[{"url":"https://drive.google.com/file/d/1m7tEpD6j6H0xc5sfdmP1_eYaSJ7f-KEn/view?usp=sharing","type":"video","end_time":5,"start_time":2},{"url":"https://drive.google.com/file/d/1KOiZk-hIufPfaPAA6EGsUjatX1gngHEL/view?usp=sharing","type":"image","end_time":9,"start_time":7},{"url":"https://drive.google.com/file/d/1qG-MU1puA97lbAGpxe73ujWHKOFBy6PC/view?usp=sharing","type":"image","end_time":13,"start_time":10},{"url":"https://drive.google.com/file/d/192Q3crtd78UCQBky19dlniUpcx6aMQyD/view?usp=sharing","type":"video","end_time":17,"start_time":15},{"url":"https://drive.google.com/file/d/1qmSrNHWtD_Xw5eLbqKy1X9SxIG6Df3sz/view?usp=sharing","type":"image","end_time":20,"start_time":19},{"url":"https://drive.google.com/file/d/1jARcma7U_ruvqsCpCGn2gdcHzgUIS4dE/view?usp=sharing","type":"image","end_time":22,"start_time":21},{"url":"https://drive.google.com/file/d/1u0CBgVwk2oEV5g-g6qt8CWgUogTbfBqM/view?usp=sharing","type":"video","end_time":26,"start_time":23},{"url":"https://drive.google.com/file/d/1GkxhO7z8-VDY-f9RCIOYaQmRBVDWAW7N/view?usp=sharing","type":"image","end_time":29,"start_time":27}],"main_video_url":"https://drive.google.com/file/d/1luBj--jqBTlCCMRcsYQYY1A3cPxkdprx/view?usp=drive_link"}'

Example Response

Below is an example of a successful JSON response from this endpoint.

json
[
  {
    "job_id": "1406c589-a1f4-45d5-8745-aae07bc4de38",
    "status": "pending",
    "message": "Job created. Poll status_url for progress.",
    "result_url": "https://eranol.com/api/v1/ffmpeg/result/1406c589-a1f4-45d5-8745-aae07bc4de38",
    "status_url": "https://eranol.com/api/v1/ffmpeg/status/1406c589-a1f4-45d5-8745-aae07bc4de38"
  }
]

Response Status

A successful request will return one of the following HTTP status codes.

200 OKRequest was successful and data is returned in the response body.
201 CreatedResource was successfully created.
401 UnauthorizedMissing or invalid API key.
429 Too Many RequestsRate limit exceeded. Try again later.

Concat

POST

Merge Videos in order with this api Video format we support : mp4,webm,avi,mkv,mov,flv,wmv,ts,mts,m4v,3gp,ogv

Endpoint

Send your requests to the following URL using the specified HTTP method.

POST https://eranol.com/api/v1/ffmpeg/video/concat

Request Body

Send the following JSON payload in the request body. Adjust the values to match your use case.

json
{
  "clips": [
    {
      "url": "https://cdn.eranol.com/videos/intro.mp4",
      "order": 1
    },
    {
      "url": "https://cdn.eranol.com/videos/main-segment.mov",
      "order": 2
    },
    {
      "url": "https://cdn.eranol.com/videos/outro.webm",
      "order": 3
    }
  ]
}

Example Request— Default

Use the following cURL command to make a request to this API endpoint. Replace YOUR_API_KEY with your actual API key from the dashboard.

bash
curl -X POST "https://eranol.com/api/v1/ffmpeg/video/concat" \
  -H "x-api-key: YOUR_API_KEY" \
  -d '{"clips":[{"url":"https://cdn.eranol.com/videos/intro.mp4","order":1},{"url":"https://cdn.eranol.com/videos/main-segment.mov","order":2},{"url":"https://cdn.eranol.com/videos/outro.webm","order":3}]}'

Example Response

Below is an example of a successful JSON response from this endpoint.

json
[
  {
    "job_id": "1406c589-a1f4-45d5-8745-aae07bc4de38",
    "status": "pending",
    "message": "Job created. Poll status_url for progress.",
    "result_url": "https://eranol.com/api/v1/ffmpeg/result/1406c589-a1f4-45d5-8745-aae07bc4de38",
    "status_url": "https://eranol.com/api/v1/ffmpeg/status/1406c589-a1f4-45d5-8745-aae07bc4de38"
  }
]

Response Status

A successful request will return one of the following HTTP status codes.

200 OKRequest was successful and data is returned in the response body.
201 CreatedResource was successfully created.
401 UnauthorizedMissing or invalid API key.
429 Too Many RequestsRate limit exceeded. Try again later.

Convert a video file to MP4

POST

Convert a video file to MP4 format. Example: {"url": "https://cdn.example.com/audio.mpeg"}

Endpoint

Send your requests to the following URL using the specified HTTP method.

POST https://eranol.com/api/v1/ffmpeg/convert/video/to/mp4

Headers

Include the following headers with every request. Your API key is required for authentication.

Content-Type:application/json
x-api-key:YOUR_API_KEY

Request Body

Send the following JSON payload in the request body. Adjust the values to match your use case.

json
{
  "url": "https://www.soundhelix.com/examples/mp3/SoundHelix-Song-1.webm"
}

Example Request

Use the following cURL command to make a request to this API endpoint. Replace YOUR_API_KEY with your actual API key from the dashboard.

bash
curl -X POST "https://eranol.com/api/v1/ffmpeg/convert/video/to/mp4" \
  -H "x-api-key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"url":"https://www.soundhelix.com/examples/mp3/SoundHelix-Song-1.webm"}'

Example Response

Below is an example of a successful JSON response from this endpoint.

json
[
  {
    "job_id": "1406c589-a1f4-45d5-8745-aae07bc4de38",
    "status": "pending",
    "message": "Job created. Poll status_url for progress.",
    "result_url": "https://eranol.com/api/v1/ffmpeg/result/1406c589-a1f4-45d5-8745-aae07bc4de38",
    "status_url": "https://eranol.com/api/v1/ffmpeg/status/1406c589-a1f4-45d5-8745-aae07bc4de38"
  }
]

Response Status

A successful request will return one of the following HTTP status codes.

200 OKRequest was successful and data is returned in the response body.
201 CreatedResource was successfully created.
401 UnauthorizedMissing or invalid API key.
429 Too Many RequestsRate limit exceeded. Try again later.

Convert Audio to Mp3

POST

Convert an audio file to MP3 format. Example: {"url": "https://cdn.example.com/audio.wav"}

Endpoint

Send your requests to the following URL using the specified HTTP method.

POST https://eranol.com/api/v1/ffmpeg/convert/audio/to/mp3

Headers

Include the following headers with every request. Your API key is required for authentication.

Content-Type:application/json
x-api-key:YOUR_API_KEY

Request Body

Send the following JSON payload in the request body. Adjust the values to match your use case.

json
{
  "url": "https://dl.espressif.com/dl/audio/ff-16b-2c-44100hz.wav"
}

Example Request

Use the following cURL command to make a request to this API endpoint. Replace YOUR_API_KEY with your actual API key from the dashboard.

bash
curl -X POST "https://eranol.com/api/v1/ffmpeg/convert/audio/to/mp3" \
  -H "x-api-key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"url":"https://dl.espressif.com/dl/audio/ff-16b-2c-44100hz.wav"}'

Example Response

Below is an example of a successful JSON response from this endpoint.

json
[
  {
    "job_id": "1406c589-a1f4-45d5-8745-aae07bc4de38",
    "status": "pending",
    "message": "Job created. Poll status_url for progress.",
    "result_url": "https://eranol.com/api/v1/ffmpeg/result/1406c589-a1f4-45d5-8745-aae07bc4de38",
    "status_url": "https://eranol.com/api/v1/ffmpeg/status/1406c589-a1f4-45d5-8745-aae07bc4de38"
  }
]

Response Status

A successful request will return one of the following HTTP status codes.

200 OKRequest was successful and data is returned in the response body.
201 CreatedResource was successfully created.
401 UnauthorizedMissing or invalid API key.
429 Too Many RequestsRate limit exceeded. Try again later.

Convert Audio to wav

POST

Convert an audio file to wav format. Example: {"url": "https://cdn.example.com/audio.mp3"}

Endpoint

Send your requests to the following URL using the specified HTTP method.

POST https://eranol.com/api/v1/ffmpeg/convert/audio/to/wav

Headers

Include the following headers with every request. Your API key is required for authentication.

Content-Type:application/json
x-api-key:YOUR_API_KEY

Request Body

Send the following JSON payload in the request body. Adjust the values to match your use case.

json
{
  "url": "https://www.soundhelix.com/examples/mp3/SoundHelix-Song-1.mp3"
}

Example Request

Use the following cURL command to make a request to this API endpoint. Replace YOUR_API_KEY with your actual API key from the dashboard.

bash
curl -X POST "https://eranol.com/api/v1/ffmpeg/convert/audio/to/wav" \
  -H "x-api-key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"url":"https://www.soundhelix.com/examples/mp3/SoundHelix-Song-1.mp3"}'

Example Response

Below is an example of a successful JSON response from this endpoint.

json
[
  {
    "job_id": "1406c589-a1f4-45d5-8745-aae07bc4de38",
    "status": "pending",
    "message": "Job created. Poll status_url for progress.",
    "result_url": "https://eranol.com/api/v1/ffmpeg/result/1406c589-a1f4-45d5-8745-aae07bc4de38",
    "status_url": "https://eranol.com/api/v1/ffmpeg/status/1406c589-a1f4-45d5-8745-aae07bc4de38"
  }
]

Response Status

A successful request will return one of the following HTTP status codes.

200 OKRequest was successful and data is returned in the response body.
201 CreatedResource was successfully created.
401 UnauthorizedMissing or invalid API key.
429 Too Many RequestsRate limit exceeded. Try again later.

Convert to JPG

POST

Convert an image file to JPG format. Example: {"url": "https://cdn.example.com/photo.png"}

Endpoint

Send your requests to the following URL using the specified HTTP method.

POST https://eranol.com/api/v1/ffmpeg/convert/image/to/jpg

Headers

Include the following headers with every request. Your API key is required for authentication.

Content-Type:application/json
x-api-key:YOUR_API_KEY

Request Body

Send the following JSON payload in the request body. Adjust the values to match your use case.

json
{
  "url": "https://www.soundhelix.com/examples/mp3/SoundHelix-Song-1.png"
}

Example Request

Use the following cURL command to make a request to this API endpoint. Replace YOUR_API_KEY with your actual API key from the dashboard.

bash
curl -X POST "https://eranol.com/api/v1/ffmpeg/convert/image/to/jpg" \
  -H "x-api-key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"url":"https://www.soundhelix.com/examples/mp3/SoundHelix-Song-1.png"}'

Example Response

Below is an example of a successful JSON response from this endpoint.

json
[
  {
    "job_id": "1406c589-a1f4-45d5-8745-aae07bc4de38",
    "status": "pending",
    "message": "Job created. Poll status_url for progress.",
    "result_url": "https://eranol.com/api/v1/ffmpeg/result/1406c589-a1f4-45d5-8745-aae07bc4de38",
    "status_url": "https://eranol.com/api/v1/ffmpeg/status/1406c589-a1f4-45d5-8745-aae07bc4de38"
  }
]

Response Status

A successful request will return one of the following HTTP status codes.

200 OKRequest was successful and data is returned in the response body.
201 CreatedResource was successfully created.
401 UnauthorizedMissing or invalid API key.
429 Too Many RequestsRate limit exceeded. Try again later.

Convert to WebM

POST

Convert a video file to WebM format (VP9 + Opus). Example: {"url": "https://cdn.example.com/video.mp4"}

Endpoint

Send your requests to the following URL using the specified HTTP method.

POST https://eranol.com/api/v1/ffmpeg/convert/video/to/webm

Headers

Include the following headers with every request. Your API key is required for authentication.

Content-Type:application/json
x-api-key:YOUR_API_KEY

Request Body

Send the following JSON payload in the request body. Adjust the values to match your use case.

json
{
  "url": "https://www.soundhelix.com/examples/mp3/SoundHelix-Song-1.mp4"
}

Example Request

Use the following cURL command to make a request to this API endpoint. Replace YOUR_API_KEY with your actual API key from the dashboard.

bash
curl -X POST "https://eranol.com/api/v1/ffmpeg/convert/video/to/webm" \
  -H "x-api-key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"url":"https://www.soundhelix.com/examples/mp3/SoundHelix-Song-1.mp4"}'

Example Response

Below is an example of a successful JSON response from this endpoint.

json
[
  {
    "job_id": "1406c589-a1f4-45d5-8745-aae07bc4de38",
    "status": "pending",
    "message": "Job created. Poll status_url for progress.",
    "result_url": "https://eranol.com/api/v1/ffmpeg/result/1406c589-a1f4-45d5-8745-aae07bc4de38",
    "status_url": "https://eranol.com/api/v1/ffmpeg/status/1406c589-a1f4-45d5-8745-aae07bc4de38"
  }
]

Response Status

A successful request will return one of the following HTTP status codes.

200 OKRequest was successful and data is returned in the response body.
201 CreatedResource was successfully created.
401 UnauthorizedMissing or invalid API key.
429 Too Many RequestsRate limit exceeded. Try again later.

Convert to WebP

POST

Convert an image file to WebP format. Example: {"url": "https://cdn.example.com/photo.png"}

Endpoint

Send your requests to the following URL using the specified HTTP method.

POST https://eranol.com/api/v1/ffmpeg/convert/image/to/webp

Headers

Include the following headers with every request. Your API key is required for authentication.

Content-Type:application/json
x-api-key:YOUR_API_KEY

Request Body

Send the following JSON payload in the request body. Adjust the values to match your use case.

json
{
  "url": "https://www.soundhelix.com/examples/mp3/SoundHelix-Song-1.png"
}

Example Request

Use the following cURL command to make a request to this API endpoint. Replace YOUR_API_KEY with your actual API key from the dashboard.

bash
curl -X POST "https://eranol.com/api/v1/ffmpeg/convert/image/to/webp" \
  -H "x-api-key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"url":"https://www.soundhelix.com/examples/mp3/SoundHelix-Song-1.png"}'

Example Response

Below is an example of a successful JSON response from this endpoint.

json
[
  {
    "job_id": "1406c589-a1f4-45d5-8745-aae07bc4de38",
    "status": "pending",
    "message": "Job created. Poll status_url for progress.",
    "result_url": "https://eranol.com/api/v1/ffmpeg/result/1406c589-a1f4-45d5-8745-aae07bc4de38",
    "status_url": "https://eranol.com/api/v1/ffmpeg/status/1406c589-a1f4-45d5-8745-aae07bc4de38"
  }
]

Response Status

A successful request will return one of the following HTTP status codes.

200 OKRequest was successful and data is returned in the response body.
201 CreatedResource was successfully created.
401 UnauthorizedMissing or invalid API key.
429 Too Many RequestsRate limit exceeded. Try again later.

Delete

DELETE

Delete a job and its associated output file (if any).

Endpoint

Send your requests to the following URL using the specified HTTP method.

DELETE https://eranol.com/api/v1/ffmpeg/jobs/{job_id}

Headers

Include the following headers with every request. Your API key is required for authentication.

Content-Type:application/json
x-api-key:YOUR_API_KEY

Example Request

Use the following cURL command to make a request to this API endpoint. Replace YOUR_API_KEY with your actual API key from the dashboard.

bash
curl -X DELETE "https://eranol.com/api/v1/ffmpeg/jobs/{job_id}" \
  -H "x-api-key: YOUR_API_KEY" \
  -H "Content-Type: application/json"

Example Response

Below is an example of a successful JSON response from this endpoint.

json
{
  "success": true,
  "data": {
    "message": "Request processed successfully"
  }
}

Response Status

A successful request will return one of the following HTTP status codes.

200 OKRequest was successful and data is returned in the response body.
401 UnauthorizedMissing or invalid API key.
429 Too Many RequestsRate limit exceeded. Try again later.

Denoise

POST

Clean audio by removing background noise. Supports two methods: 'afftdn': FFT-based denoising with adjustable noise reduction (dB) 'arnndn': RNN-based denoising (requires model file in container) Example: {"url": "https://cdn.example.com/noisy-audio.mp4", "method": "afftdn", "noise_reduction": 15}

Endpoint

Send your requests to the following URL using the specified HTTP method.

POST https://eranol.com/api/v1/ffmpeg/audio/denoise

Headers

Include the following headers with every request. Your API key is required for authentication.

Content-Type:application/json
x-api-key:YOUR_API_KEY

Request Body

Send the following JSON payload in the request body. Adjust the values to match your use case.

json
{
  "url": "https://cdn.example.com/noisy-audio.mp4",
  "method": "afftdn",
  "noise_reduction": 15
}

Parameters

All available options for this endpoint. Required parameters are marked accordingly.

ParameterTypeDefaultDescription
urlstringrequiredAudio or video file URL
methodstringfftDenoise method: fft (afftdn) or rnn (arnndn)
noise_reductionfloat12Noise reduction amount in dB (fft method only)

Example Request

Use the following cURL command to make a request to this API endpoint. Replace YOUR_API_KEY with your actual API key from the dashboard.

bash
curl -X POST "https://eranol.com/api/v1/ffmpeg/audio/denoise" \
  -H "x-api-key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"url":"https://cdn.example.com/noisy-audio.mp4","method":"afftdn","noise_reduction":15}'

Example Response

Below is an example of a successful JSON response from this endpoint.

json
{
  "job_id": "f595b9ad-1e15-4452-b7c2-8f8ff09c0a34",
  "status": "pending",
  "message": "Job created. Poll status_url for progress.",
  "job_type": "caption",
  "result_url": "https://eranol.com/api/v1/ffmpeg/result/f595b9ad-1e15-4452-b7c2-8f8ff09c0a34",
  "status_url": "https://eranol.com/api/v1/ffmpeg/status/f595b9ad-1e15-4452-b7c2-8f8ff09c0a34"
}

Response Status

A successful request will return one of the following HTTP status codes.

200 OKRequest was successful and data is returned in the response body.
201 CreatedResource was successfully created.
401 UnauthorizedMissing or invalid API key.
429 Too Many RequestsRate limit exceeded. Try again later.

Extract audio track from a video

POST

Extract audio track from a video file as WAV. Default: mono (1 channel). Set "mono": false to keep all channels. Example: {"url": "https://cdn.example.com/video.mp4", "mono": true}

Endpoint

Send your requests to the following URL using the specified HTTP method.

POST https://eranol.com/api/v1/ffmpeg/video/extract/audio

Headers

Include the following headers with every request. Your API key is required for authentication.

Content-Type:application/json
x-api-key:YOUR_API_KEY

Request Body

Send the following JSON payload in the request body. Adjust the values to match your use case.

json
{
  "url": "https://www.soundhelix.com/examples/mp3/SoundHelix-Song.mp4",
  "mono": true
}

Example Request

Use the following cURL command to make a request to this API endpoint. Replace YOUR_API_KEY with your actual API key from the dashboard.

bash
curl -X POST "https://eranol.com/api/v1/ffmpeg/video/extract/audio" \
  -H "x-api-key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"url":"https://www.soundhelix.com/examples/mp3/SoundHelix-Song.mp4","mono":true}'

Example Response

Below is an example of a successful JSON response from this endpoint.

json
[
  {
    "job_id": "1406c589-a1f4-45d5-8745-aae07bc4de38",
    "status": "pending",
    "message": "Job created. Poll status_url for progress.",
    "result_url": "https://eranol.com/api/v1/ffmpeg/result/1406c589-a1f4-45d5-8745-aae07bc4de38",
    "status_url": "https://eranol.com/api/v1/ffmpeg/status/1406c589-a1f4-45d5-8745-aae07bc4de38"
  }
]

Response Status

A successful request will return one of the following HTTP status codes.

200 OKRequest was successful and data is returned in the response body.
201 CreatedResource was successfully created.
401 UnauthorizedMissing or invalid API key.
429 Too Many RequestsRate limit exceeded. Try again later.

Extract images from a video

POST

Extract frames from a video as PNG images. Requires start_sec and end_sec to specify the time range. Default FPS is 1 (one frame per second). Returns JSON with download links. Example: {"url": "https://cdn.example.com/video.mp4", "start_sec": 10, "end_sec": 30, "fps": 2}

Endpoint

Send your requests to the following URL using the specified HTTP method.

POST https://eranol.com/api/v1/ffmpeg/video/extract/images

Headers

Include the following headers with every request. Your API key is required for authentication.

Content-Type:application/json
x-api-key:YOUR_API_KEY

Request Body

Send the following JSON payload in the request body. Adjust the values to match your use case.

json
{
  "fps": 1,
  "url": "https://www.soundhelix.com/examples/mp3/SoundHelix-Song.mp4",
  "end_sec": 0,
  "start_sec": 0
}

Example Request

Use the following cURL command to make a request to this API endpoint. Replace YOUR_API_KEY with your actual API key from the dashboard.

bash
curl -X POST "https://eranol.com/api/v1/ffmpeg/video/extract/images" \
  -H "x-api-key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"fps":1,"url":"https://www.soundhelix.com/examples/mp3/SoundHelix-Song.mp4","end_sec":0,"start_sec":0}'

Example Response

Below is an example of a successful JSON response from this endpoint.

json
[
  {
    "job_id": "1406c589-a1f4-45d5-8745-aae07bc4de38",
    "status": "pending",
    "message": "Job created. Poll status_url for progress.",
    "result_url": "https://eranol.com/api/v1/ffmpeg/result/1406c589-a1f4-45d5-8745-aae07bc4de38",
    "status_url": "https://eranol.com/api/v1/ffmpeg/status/1406c589-a1f4-45d5-8745-aae07bc4de38"
  }
]

Response Status

A successful request will return one of the following HTTP status codes.

200 OKRequest was successful and data is returned in the response body.
201 CreatedResource was successfully created.
401 UnauthorizedMissing or invalid API key.
429 Too Many RequestsRate limit exceeded. Try again later.

Generate a GIF from a video

POST

Generate a GIF from a video segment. Requires start_sec and end_sec (max 60s duration). Uses a two-pass palette method for high-quality output. Example: {"url": "https://cdn.example.com/video.mp4", "start_sec": 5, "end_sec": 15, "fps": 10, "width": 480}

Endpoint

Send your requests to the following URL using the specified HTTP method.

POST https://eranol.com/api/v1/ffmpeg/video/extract/gif

Headers

Include the following headers with every request. Your API key is required for authentication.

Content-Type:application/json
x-api-key:YOUR_API_KEY

Request Body

Send the following JSON payload in the request body. Adjust the values to match your use case.

json
{
  "fps": 10,
  "url": "https://www.soundhelix.com/examples/mp3/SoundHelix-Song.mp4",
  "width": 480,
  "end_sec": 0,
  "start_sec": 0
}

Example Request

Use the following cURL command to make a request to this API endpoint. Replace YOUR_API_KEY with your actual API key from the dashboard.

bash
curl -X POST "https://eranol.com/api/v1/ffmpeg/video/extract/gif" \
  -H "x-api-key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"fps":10,"url":"https://www.soundhelix.com/examples/mp3/SoundHelix-Song.mp4","width":480,"end_sec":0,"start_sec":0}'

Example Response

Below is an example of a successful JSON response from this endpoint.

json
{
  "job_id": "1406c589-a1f4-45d5-8745-aae07bc4de38",
  "status": "pending",
  "message": "Job created. Poll status_url for progress.",
  "result_url": "https://eranol.com/api/v1/ffmpeg/result/1406c589-a1f4-45d5-8745-aae07bc4de38",
  "status_url": "https://eranol.com/api/v1/ffmpeg/status/1406c589-a1f4-45d5-8745-aae07bc4de38"
}

Response Status

A successful request will return one of the following HTTP status codes.

200 OKRequest was successful and data is returned in the response body.
201 CreatedResource was successfully created.
401 UnauthorizedMissing or invalid API key.
429 Too Many RequestsRate limit exceeded. Try again later.

Highlights

POST

Extract highlight segments from audio or video based on energy peaks. Analyses audio RMS energy to find the loudest moments and extracts them as a concatenated highlight reel. Example: {"url": "https://cdn.example.com/podcast.mp4", "top_n": 5, "segment_duration": 5}

Endpoint

Send your requests to the following URL using the specified HTTP method.

POST https://eranol.com/api/v1/ffmpeg/audio/highlights

Headers

Include the following headers with every request. Your API key is required for authentication.

Content-Type:application/json
x-api-key:YOUR_API_KEY

Request Body

Send the following JSON payload in the request body. Adjust the values to match your use case.

json
{
  "url": "https://cdn.example.com/podcast.mp4",
  "top_n": 5,
  "segment_duration": 5
}

Parameters

All available options for this endpoint. Required parameters are marked accordingly.

ParameterTypeDefaultDescription
urlstringrequiredAudio or video file URL
top_nint5Number of loudest moments to extract
clip_durationfloat5.0Duration of each highlight clip in seconds

Example Request

Use the following cURL command to make a request to this API endpoint. Replace YOUR_API_KEY with your actual API key from the dashboard.

bash
curl -X POST "https://eranol.com/api/v1/ffmpeg/audio/highlights" \
  -H "x-api-key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"url":"https://cdn.example.com/podcast.mp4","top_n":5,"segment_duration":5}'

Example Response

Below is an example of a successful JSON response from this endpoint.

json
{
  "job_id": "f595b9ad-1e15-4452-b7c2-8f8ff09c0a34",
  "status": "pending",
  "message": "Job created. Poll status_url for progress.",
  "job_type": "caption",
  "result_url": "https://eranol.com/api/v1/ffmpeg/result/f595b9ad-1e15-4452-b7c2-8f8ff09c0a34",
  "status_url": "https://eranol.com/api/v1/ffmpeg/status/f595b9ad-1e15-4452-b7c2-8f8ff09c0a34"
}

Response Status

A successful request will return one of the following HTTP status codes.

200 OKRequest was successful and data is returned in the response body.
201 CreatedResource was successfully created.
401 UnauthorizedMissing or invalid API key.
429 Too Many RequestsRate limit exceeded. Try again later.

Image

POST

Generate Image With AI

Endpoint

Send your requests to the following URL using the specified HTTP method.

POST https://eranol.com/api/v1/image

Headers

Include the following headers with every request. Your API key is required for authentication.

Content-Type:application/json
x-api-key:YOUR_API_KEY

Request Body

Send the following JSON payload in the request body. Adjust the values to match your use case.

json
{
  "seed": 42,
  "width": 512,
  "height": 768,
  "prompt": "a red apple on a white table, photorealistic, 4k",
  "negative_prompt": "blurry, low quality, distorted"
}

Example Request

Use the following cURL command to make a request to this API endpoint. Replace YOUR_API_KEY with your actual API key from the dashboard.

bash
curl -X POST "https://eranol.com/api/v1/image" \
  -H "x-api-key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"seed":42,"width":512,"height":768,"prompt":"a red apple on a white table, photorealistic, 4k","negative_prompt":"blurry, low quality, distorted"}'

Example Response

Below is an example of a successful JSON response from this endpoint.

json
{
  "job_id": "6b1d93ee-7988-49ed-8794-6e72a7b24123-e2",
  "status": "processing"
}

Response Status

A successful request will return one of the following HTTP status codes.

200 OKRequest was successful and data is returned in the response body.
201 CreatedResource was successfully created.
401 UnauthorizedMissing or invalid API key.
429 Too Many RequestsRate limit exceeded. Try again later.

Image Status

GET

Get the Status of the generated image and final response

Endpoint

Send your requests to the following URL using the specified HTTP method.

GET https://eranol.com/api/v1/image/status/{job_id}

Headers

Include the following headers with every request. Your API key is required for authentication.

Content-Type:application/json
x-api-key:YOUR_API_KEY

Request Body

Send the following JSON payload in the request body. Adjust the values to match your use case.

json
{}

Example Request

Use the following cURL command to make a request to this API endpoint. Replace YOUR_API_KEY with your actual API key from the dashboard.

bash
curl -X GET "https://eranol.com/api/v1/image/status/{job_id}" \
  -H "x-api-key: YOUR_API_KEY" \
  -H "Content-Type: application/json"

Example Response

Below is an example of a successful JSON response from this endpoint.

json
{
  "job_id": "68d8df-a174-45ca-93ea-3738c1d",
  "status": "completed",
  "result_url": "https://eranol.com/api/image/file/6cc8d8df-a174-45ca-93ea-23424.png"
}

Response Status

A successful request will return one of the following HTTP status codes.

200 OKRequest was successful and data is returned in the response body.
401 UnauthorizedMissing or invalid API key.
429 Too Many RequestsRate limit exceeded. Try again later.

Merge

POST

Video merging api with images

Endpoint

Send your requests to the following URL using the specified HTTP method.

POST https://eranol.com/api/v1/ffmpeg/merge

Request Body

Send the following JSON payload in the request body. Adjust the values to match your use case.

json
{
  "width": 1280,
  "height": 720,
  "images": [
    {
      "url": "https://picsum.photos/1920/1080.jpg?random=1",
      "duration": 3
    },
    {
      "url": "https://picsum.photos/1920/1080.jpg?random=2",
      "duration": 3
    },
    {
      "url": "https://picsum.photos/1920/1080.jpg?random=1",
      "duration": 3
    },
    {
      "url": "https://picsum.photos/1920/1080.jpg?random=2",
      "duration": 3
    },
    {
      "url": "https://picsum.photos/1920/1080.jpg?random=1",
      "duration": 3
    },
    {
      "url": "https://picsum.photos/1920/1080.jpg?random=2",
      "duration": 3
    }
  ],
  "audio_url": "https://example.com/xY9BCIBv5iBWPFJb9e-ai_tmpsvdc8waw.wav",
  "audio_mode": "video_length",
  "transition": "fade",
  "bg_audio_url": "https://www.soundhelix.com/examples/mp3/SoundHelix-Song-1.mp3",
  "bg_audio_volume": 0.2
}

Parameters

All available options for this endpoint. Required parameters are marked accordingly.

ParameterTypeDefaultDescription
imagesarrayrequiredList of image slides
images[].urlstringrequiredImage URL (jpg, png, webp, gif)
images[].durationfloatrequiredDisplay duration in seconds
audio_urlstringrequiredMain audio file URL (mp3, wav, ogg, flac, aac) — plays at 100% volume
bg_audio_urlstringnullOptional background music URL — mixed under the main audio
bg_audio_volumefloat0.2Background music volume (0.0–1.0). Default 0.2 = 20%
widthint1280Output width (16-7680)
heightint720Output height (16-4320)
fpsint24Frames per second (1-120)
fitstringcontaincontain (letterbox) or cover (crop to fill)
transitionstringnonenone (hard cut) or fade (dissolve)
fade_secsfloat0.5Fade duration (only when transition=fade)
video_codecstringlibx264Video encoder
audio_codecstringaacAudio encoder
formatstringmp4Output container format
audio_modestringshortestshortest or video_length

Example Request

Use the following cURL command to make a request to this API endpoint. Replace YOUR_API_KEY with your actual API key from the dashboard.

bash
curl -X POST "https://eranol.com/api/v1/ffmpeg/merge" \
  -H "x-api-key: YOUR_API_KEY" \
  -d '{"width":1280,"height":720,"images":[{"url":"https://picsum.photos/1920/1080.jpg?random=1","duration":3},{"url":"https://picsum.photos/1920/1080.jpg?random=2","duration":3},{"url":"https://picsum.photos/1920/1080.jpg?random=1","duration":3},{"url":"https://picsum.photos/1920/1080.jpg?random=2","duration":3},{"url":"https://picsum.photos/1920/1080.jpg?random=1","duration":3},{"url":"https://picsum.photos/1920/1080.jpg?random=2","duration":3}],"audio_url":"https://example.com/xY9BCIBv5iBWPFJb9e-ai_tmpsvdc8waw.wav","audio_mode":"video_length","transition":"fade","bg_audio_url":"https://www.soundhelix.com/examples/mp3/SoundHelix-Song-1.mp3","bg_audio_volume":0.2}'

Example Response

Below is an example of a successful JSON response from this endpoint.

json
[
  {
    "job_id": "1406c589-a1f4-45d5-8745-aae07bc4de38",
    "status": "pending",
    "message": "Job created. Poll status_url for progress.",
    "result_url": "https://eranol.com/api/v1/ffmpeg/result/1406c589-a1f4-45d5-8745-aae07bc4de38",
    "status_url": "https://eranol.com/api/v1/ffmpeg/status/1406c589-a1f4-45d5-8745-aae07bc4de38"
  }
]

Response Status

A successful request will return one of the following HTTP status codes.

200 OKRequest was successful and data is returned in the response body.
201 CreatedResource was successfully created.
401 UnauthorizedMissing or invalid API key.
429 Too Many RequestsRate limit exceeded. Try again later.

Notify

POST

email notification api endpoint 400 — Missing fields: { "error": "Missing required fields: to, subject, message" } 500 — Send failure: { "error": "Failed to send email" }

Endpoint

Send your requests to the following URL using the specified HTTP method.

POST https://eranol.com/api/v1/notifications/email

Headers

Include the following headers with every request. Your API key is required for authentication.

Content-Type:application/json
x-api-key:YOUR_API_KEY

Request Body

Send the following JSON payload in the request body. Adjust the values to match your use case.

json
{
  "to": "user@example.com",
  "message": "<p>Your HTML email body</p>",
  "subject": "Your email subject"
}

Example Request

Use the following cURL command to make a request to this API endpoint. Replace YOUR_API_KEY with your actual API key from the dashboard.

bash
curl -X POST "https://eranol.com/api/v1/notifications/email" \
  -H "x-api-key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"to":"user@example.com","message":"<p>Your HTML email body</p>","subject":"Your email subject"}'

Example Response

Below is an example of a successful JSON response from this endpoint.

json
{
  "job_id": "a1b2c3d4-...",
  "message_id": "SES-message-id"
}

Response Status

A successful request will return one of the following HTTP status codes.

200 OKRequest was successful and data is returned in the response body.
201 CreatedResource was successfully created.
401 UnauthorizedMissing or invalid API key.
429 Too Many RequestsRate limit exceeded. Try again later.

Overlay

POST

Overlay text or an image on a video with per-frame rendering. Supports: Text overlay using drawtext (with font, colour, position control) Image overlay using the overlay filter (PNG recommended) Time-range control (start_sec / end_sec) Opacity control Example (text): {"url": "https://cdn.example.com/video.mp4", "text": "LIVE", "position": "top_right", "font_color": "red"} Example (image): {"url": "https://cdn.example.com/video.mp4", "overlay_url": "https://cdn.example.com/badge.png", "position": "bottom_left"}

Endpoint

Send your requests to the following URL using the specified HTTP method.

POST https://eranol.com/api/v1/ffmpeg/video/overlay

Headers

Include the following headers with every request. Your API key is required for authentication.

Content-Type:application/json
x-api-key:YOUR_API_KEY

Request Body

Send the following JSON payload in the request body. Adjust the values to match your use case.

json
{
  "url": "https://cdn.example.com/video.mp4",
  "type": "text",
  "margin": 15,
  "content": "LIVE",
  "end_sec": 10,
  "position": "top_right",
  "font_size": 32,
  "start_sec": 0,
  "font_color": "#ff0000"
}

Parameters

All available options for this endpoint. Required parameters are marked accordingly.

ParameterTypeDefaultDescription
urlstringrequiredVideo file URL
overlaysarrayrequiredArray of overlay objects to apply
overlays[].typestringrequiredOverlay type: text or image
overlays[].contentstringrequiredText string or image URL
overlays[].xint0X position in pixels from left
overlays[].yint0Y position in pixels from top
overlays[].start_secfloat0Start time in seconds
overlays[].end_secfloatnullEnd time in seconds (null = until end)
overlays[].font_sizeint24Font size (text overlays only)
overlays[].font_colorstringwhiteFont color (text overlays only)
overlays[].scalefloat0.2Scale relative to video width (image overlays only)
overlays[].opacityfloat1.0Overlay opacity (0.0–1.0)

Example Request— Live badge text (top-right, timed)

Use the following cURL command to make a request to this API endpoint. Replace YOUR_API_KEY with your actual API key from the dashboard.

bash
curl -X POST "https://eranol.com/api/v1/ffmpeg/video/overlay" \
  -H "x-api-key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"url":"https://cdn.example.com/video.mp4","type":"text","margin":15,"content":"LIVE","end_sec":10,"position":"top_right","font_size":32,"start_sec":0,"font_color":"#ff0000"}'

Example Response

Below is an example of a successful JSON response from this endpoint.

json
{
  "job_id": "f595b9ad-1e15-4452-b7c2-8f8ff09c0a34",
  "status": "pending",
  "message": "Job created. Poll status_url for progress.",
  "job_type": "caption",
  "result_url": "https://eranol.com/api/v1/ffmpeg/result/f595b9ad-1e15-4452-b7c2-8f8ff09c0a34",
  "status_url": "https://eranol.com/api/v1/ffmpeg/status/f595b9ad-1e15-4452-b7c2-8f8ff09c0a34"
}

Response Status

A successful request will return one of the following HTTP status codes.

200 OKRequest was successful and data is returned in the response body.
201 CreatedResource was successfully created.
401 UnauthorizedMissing or invalid API key.
429 Too Many RequestsRate limit exceeded. Try again later.

Progress Bar

POST

Add an animated progress bar to a video. Supports two styles: 'grow': bar fills left-to-right over the video duration 'shrink': bar starts full and shrinks (countdown, like social media stories) Example: {"url": "https://cdn.example.com/video.mp4", "style": "shrink", "color": "00ff00", "position": "top"}

Endpoint

Send your requests to the following URL using the specified HTTP method.

POST https://eranol.com/api/v1/ffmpeg/video/progress-bar

Headers

Include the following headers with every request. Your API key is required for authentication.

Content-Type:application/json
x-api-key:YOUR_API_KEY

Request Body

Send the following JSON payload in the request body. Adjust the values to match your use case.

json
{
  "url": "https://cdn.example.com/video.mp4"
}

Parameters

All available options for this endpoint. Required parameters are marked accordingly.

ParameterTypeDefaultDescription
urlstringrequiredVideo file URL
stylestringgrowBar style: grow (left→right) or shrink (countdown like stories)
colorstringwhiteBar color — name or hex
heightint4Bar height in pixels
positionstringbottomBar position: top or bottom
opacityfloat0.8Bar opacity (0.0–1.0)

Example Request— Bar fills left to right

Use the following cURL command to make a request to this API endpoint. Replace YOUR_API_KEY with your actual API key from the dashboard.

bash
curl -X POST "https://eranol.com/api/v1/ffmpeg/video/progress-bar" \
  -H "x-api-key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"url":"https://cdn.example.com/video.mp4"}'

Example Response

Below is an example of a successful JSON response from this endpoint.

json
{
  "job_id": "f595b9ad-1e15-4452-b7c2-8f8ff09c0a34",
  "status": "pending",
  "message": "Job created. Poll status_url for progress.",
  "job_type": "caption",
  "result_url": "https://eranol.com/api/v1/ffmpeg/result/f595b9ad-1e15-4452-b7c2-8f8ff09c0a34",
  "status_url": "https://eranol.com/api/v1/ffmpeg/status/f595b9ad-1e15-4452-b7c2-8f8ff09c0a34"
}

Response Status

A successful request will return one of the following HTTP status codes.

200 OKRequest was successful and data is returned in the response body.
201 CreatedResource was successfully created.
401 UnauthorizedMissing or invalid API key.
429 Too Many RequestsRate limit exceeded. Try again later.

Reframe

POST

Change video aspect ratio / resolution with coloured padding. Takes a video and reframes it to the target width x height. The original video is scaled to fit inside the new dimensions (maintaining aspect ratio) and the remaining space is filled with the chosen background colour. Example — landscape 1280x720 → portrait 1080x1920 with white bars: {"url": "https://cdn.example.com/video.mp4", "width": 1080, "height": 1920, "bg_color": "#ffffff"}

Endpoint

Send your requests to the following URL using the specified HTTP method.

POST https://eranol.com/api/v1/ffmpeg/video/reframe

Headers

Include the following headers with every request. Your API key is required for authentication.

Content-Type:application/json
x-api-key:YOUR_API_KEY

Request Body

Send the following JSON payload in the request body. Adjust the values to match your use case.

json
{
  "url": "https://example.com/",
  "width": 0,
  "height": 0,
  "bg_color": "#000000"
}

Example Request

Use the following cURL command to make a request to this API endpoint. Replace YOUR_API_KEY with your actual API key from the dashboard.

bash
curl -X POST "https://eranol.com/api/v1/ffmpeg/video/reframe" \
  -H "x-api-key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"url":"https://example.com/","width":0,"height":0,"bg_color":"#000000"}'

Example Response

Below is an example of a successful JSON response from this endpoint.

json
{
  "job_id": "f595b9ad-1e15-4452-b7c2-8f8ff09c0a34",
  "status": "pending",
  "message": "Job created. Poll status_url for progress.",
  "job_type": "caption",
  "result_url": "https://eranol.com/api/v1/ffmpeg/result/f595b9ad-1e15-4452-b7c2-8f8ff09c0a34",
  "status_url": "https://eranol.com/api/v1/ffmpeg/status/f595b9ad-1e15-4452-b7c2-8f8ff09c0a34"
}

Response Status

A successful request will return one of the following HTTP status codes.

200 OKRequest was successful and data is returned in the response body.
201 CreatedResource was successfully created.
401 UnauthorizedMissing or invalid API key.
429 Too Many RequestsRate limit exceeded. Try again later.

Remove Silence

POST

Remove silent gaps from audio or video. Uses FFmpeg silencedetect to find quiet intervals, then trims and concatenates the non-silent segments together. Example: {"url": "https://cdn.example.com/podcast.mp4", "silence_thresh_db": -30, "min_silence_duration": 0.5}

Endpoint

Send your requests to the following URL using the specified HTTP method.

POST https://eranol.com/api/v1/ffmpeg/audio/remove-silence

Headers

Include the following headers with every request. Your API key is required for authentication.

Content-Type:application/json
x-api-key:YOUR_API_KEY

Request Body

Send the following JSON payload in the request body. Adjust the values to match your use case.

json
{
  "url": "https://cdn.example.com/podcast.mp4",
  "padding": 0.1,
  "silence_thresh_db": -30,
  "min_silence_duration": 0.5
}

Parameters

All available options for this endpoint. Required parameters are marked accordingly.

ParameterTypeDefaultDescription
urlstringrequiredAudio or video file URL
silence_threshfloat-30Silence threshold in dB (e.g. -30)
min_silence_durfloat0.5Minimum silence duration in seconds to detect

Example Request

Use the following cURL command to make a request to this API endpoint. Replace YOUR_API_KEY with your actual API key from the dashboard.

bash
curl -X POST "https://eranol.com/api/v1/ffmpeg/audio/remove-silence" \
  -H "x-api-key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"url":"https://cdn.example.com/podcast.mp4","padding":0.1,"silence_thresh_db":-30,"min_silence_duration":0.5}'

Example Response

Below is an example of a successful JSON response from this endpoint.

json
{
  "job_id": "f595b9ad-1e15-4452-b7c2-8f8ff09c0a34",
  "status": "pending",
  "message": "Job created. Poll status_url for progress.",
  "job_type": "caption",
  "result_url": "https://eranol.com/api/v1/ffmpeg/result/f595b9ad-1e15-4452-b7c2-8f8ff09c0a34",
  "status_url": "https://eranol.com/api/v1/ffmpeg/status/f595b9ad-1e15-4452-b7c2-8f8ff09c0a34"
}

Response Status

A successful request will return one of the following HTTP status codes.

200 OKRequest was successful and data is returned in the response body.
201 CreatedResource was successfully created.
401 UnauthorizedMissing or invalid API key.
429 Too Many RequestsRate limit exceeded. Try again later.

Status

GET

Get the current status of a job. Returns job status, progress, timestamps, and result data if completed. Works for all job types (merge, convert, extract, etc.).

Endpoint

Send your requests to the following URL using the specified HTTP method.

GET https://eranol.com/api/v1/ffmpeg/status/{job_id}

Example Request

Use the following cURL command to make a request to this API endpoint. Replace YOUR_API_KEY with your actual API key from the dashboard.

bash
curl -X GET "https://eranol.com/api/v1/ffmpeg/status/{job_id}" \
  -H "x-api-key: YOUR_API_KEY"

Example Response

Below is an example of a successful JSON response from this endpoint.

json
[
  {
    "job_id": "37a8d929-1bb1-40b8-bd81-1a4a633b834b",
    "status": "completed",
    "duration": 58.875,
    "progress": null,
    "created_at": 1770492104.6935267,
    "resolution": "1280x720",
    "result_url": "https://eranol.com/api/v1/ffmpeg/file/af390718-7794-4b36-b9c3-2693e922cf18.mp4",
    "started_at": 1770492104.6968493,
    "completed_at": 1770492127.4626331
  }
]

Response Status

A successful request will return one of the following HTTP status codes.

200 OKRequest was successful and data is returned in the response body.
401 UnauthorizedMissing or invalid API key.
429 Too Many RequestsRate limit exceeded. Try again later.

Thumbnail

POST

Generate a thumbnail from a video frame with text overlay. Extracts the frame at the given timestamp and uses drawtext to render text with a background box. Example: {"url": "https://cdn.example.com/video.mp4", "text": "Episode 1", "timestamp": 5.0, "position": "center"}

Endpoint

Send your requests to the following URL using the specified HTTP method.

POST https://eranol.com/api/v1/ffmpeg/video/thumbnail

Headers

Include the following headers with every request. Your API key is required for authentication.

Content-Type:application/json
x-api-key:YOUR_API_KEY

Request Body

Send the following JSON payload in the request body. Adjust the values to match your use case.

json
{
  "url": "https://cdn.example.com/video.mp4",
  "text": "Episode 1",
  "bg_color": "black@0.5",
  "position": "center",
  "font_size": 48,
  "timestamp": 5,
  "font_color": "white"
}

Parameters

All available options for this endpoint. Required parameters are marked accordingly.

ParameterTypeDefaultDescription
urlstringrequiredVideo file URL
time_secfloat0Time in seconds to capture the frame
widthint1280Thumbnail width in pixels
heightint720Thumbnail height in pixels
textstringnullOptional text to overlay on the thumbnail
font_sizeint48Font size for overlay text
font_colorstringwhiteFont color for overlay text

Example Request

Use the following cURL command to make a request to this API endpoint. Replace YOUR_API_KEY with your actual API key from the dashboard.

bash
curl -X POST "https://eranol.com/api/v1/ffmpeg/video/thumbnail" \
  -H "x-api-key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"url":"https://cdn.example.com/video.mp4","text":"Episode 1","bg_color":"black@0.5","position":"center","font_size":48,"timestamp":5,"font_color":"white"}'

Example Response

Below is an example of a successful JSON response from this endpoint.

json
{
  "job_id": "f595b9ad-1e15-4452-b7c2-8f8ff09c0a34",
  "status": "pending",
  "message": "Job created. Poll status_url for progress.",
  "job_type": "caption",
  "result_url": "https://eranol.com/api/v1/ffmpeg/result/f595b9ad-1e15-4452-b7c2-8f8ff09c0a34",
  "status_url": "https://eranol.com/api/v1/ffmpeg/status/f595b9ad-1e15-4452-b7c2-8f8ff09c0a34"
}

Response Status

A successful request will return one of the following HTTP status codes.

200 OKRequest was successful and data is returned in the response body.
201 CreatedResource was successfully created.
401 UnauthorizedMissing or invalid API key.
429 Too Many RequestsRate limit exceeded. Try again later.

TikTok

POST

TikTok Content Posting API Privacy levels: SELF_ONLY | FOLLOWER_OF_CREATOR | MUTUAL_FOLLOW_FRIENDS | PUBLIC_TO_EVERYONE

Endpoint

Send your requests to the following URL using the specified HTTP method.

POST https://eranol.com/api/v1/social/tiktok/publish

Headers

Include the following headers with every request. Your API key is required for authentication.

Content-Type:application/json
x-api-key:YOUR_API_KEY

Request Body

Send the following JSON payload in the request body. Adjust the values to match your use case.

json
{
  "title": "Check this out! #fyp",
  "video_url": "https://your-r2-or-cdn-url/video.mp4",
  "disable_duet": false,
  "privacy_level": "PUBLIC_TO_EVERYONE",
  "disable_stitch": false,
  "disable_comment": false,
  "scheduled_publish_time": null
}

Example Request

Use the following cURL command to make a request to this API endpoint. Replace YOUR_API_KEY with your actual API key from the dashboard.

bash
curl -X POST "https://eranol.com/api/v1/social/tiktok/publish" \
  -H "x-api-key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"title":"Check this out! #fyp","video_url":"https://your-r2-or-cdn-url/video.mp4","disable_duet":false,"privacy_level":"PUBLIC_TO_EVERYONE","disable_stitch":false,"disable_comment":false,"scheduled_publish_time":null}'

Example Response

Below is an example of a successful JSON response from this endpoint.

json
{
  "publish_id": "sdfger345-34-dfhgrt-3453sdgfg-34234"
}

Response Status

A successful request will return one of the following HTTP status codes.

200 OKRequest was successful and data is returned in the response body.
201 CreatedResource was successfully created.
401 UnauthorizedMissing or invalid API key.
429 Too Many RequestsRate limit exceeded. Try again later.

TikTok Status

GET

TikTok pulls the video from the URL asynchronously and delivers it to the user's TikTok inbox as a draft (TikTok's sandbox/unverified app behaviour) or publishes it directly. Poll this endpoint until status is SEND_TO_USER_INBOX, PUBLISH_COMPLETE, or FAILED. Query param: ?publish_id=xxx

Endpoint

Send your requests to the following URL using the specified HTTP method.

GET https://eranol.com/api/v1/social/tiktok/status

Headers

Include the following headers with every request. Your API key is required for authentication.

Content-Type:application/json
x-api-key:YOUR_API_KEY

Request Body

Send the following JSON payload in the request body. Adjust the values to match your use case.

json
{}

Parameters

All available options for this endpoint. Required parameters are marked accordingly.

ParameterTypeDefaultDescription
publish_idThe publish_id returned from the TikTok publish endpoint

Example Request

Use the following cURL command to make a request to this API endpoint. Replace YOUR_API_KEY with your actual API key from the dashboard.

bash
curl -X GET "https://eranol.com/api/v1/social/tiktok/status" \
  -H "x-api-key: YOUR_API_KEY" \
  -H "Content-Type: application/json"

Example Response

Below is an example of a successful JSON response from this endpoint.

json
{
  "status": "SEND_TO_USER_INBOX, PUBLISH_COMPLETE, or FAILED",
  "fail_reason": ""
}

Response Status

A successful request will return one of the following HTTP status codes.

200 OKRequest was successful and data is returned in the response body.
401 UnauthorizedMissing or invalid API key.
429 Too Many RequestsRate limit exceeded. Try again later.

Trim

POST

Trim a video by start and end time. Cuts the video between start_sec and end_sec using stream copy (no re-encoding) for fast, lossless trimming. Example: {"url": "https://cdn.example.com/video.mp4", "start_sec": 10, "end_sec": 30}

Endpoint

Send your requests to the following URL using the specified HTTP method.

POST https://eranol.com/api/v1/ffmpeg/video/trim

Headers

Include the following headers with every request. Your API key is required for authentication.

Content-Type:application/json
x-api-key:YOUR_API_KEY

Request Body

Send the following JSON payload in the request body. Adjust the values to match your use case.

json
{
  "url": "https://example.com/",
  "end_sec": 0,
  "start_sec": 0
}

Parameters

All available options for this endpoint. Required parameters are marked accordingly.

ParameterTypeDefaultDescription
urlstringrequiredVideo file URL
start_secfloatrequiredStart time in seconds
end_secfloatrequiredEnd time in seconds (must be greater than start_sec)

Example Request

Use the following cURL command to make a request to this API endpoint. Replace YOUR_API_KEY with your actual API key from the dashboard.

bash
curl -X POST "https://eranol.com/api/v1/ffmpeg/video/trim" \
  -H "x-api-key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"url":"https://example.com/","end_sec":0,"start_sec":0}'

Example Response

Below is an example of a successful JSON response from this endpoint.

json
{
  "job_id": "f595b9ad-1e15-4452-b7c2-8f8ff09c0a34",
  "status": "pending",
  "message": "Job created. Poll status_url for progress.",
  "job_type": "caption",
  "result_url": "https://eranol.com/api/v1/ffmpeg/result/f595b9ad-1e15-4452-b7c2-8f8ff09c0a34",
  "status_url": "https://eranol.com/api/v1/ffmpeg/status/f595b9ad-1e15-4452-b7c2-8f8ff09c0a34"
}

Response Status

A successful request will return one of the following HTTP status codes.

200 OKRequest was successful and data is returned in the response body.
201 CreatedResource was successfully created.
401 UnauthorizedMissing or invalid API key.
429 Too Many RequestsRate limit exceeded. Try again later.

Verify

GET

Verify your api key Case Status Body Valid key 200 { success: true, message: "API key is valid." } Missing key 401 { success: false, message: "API key required..." } Invalid/inactive key 401 { success: false, message: "Invalid or inactive API key" }

Endpoint

Send your requests to the following URL using the specified HTTP method.

GET https://eranol.com/api/v1/verify

Headers

Include the following headers with every request. Your API key is required for authentication.

Content-Type:application/json
x-api-key:YOUR_API_KEY

Request Body

Send the following JSON payload in the request body. Adjust the values to match your use case.

json
{}

Example Request

Use the following cURL command to make a request to this API endpoint. Replace YOUR_API_KEY with your actual API key from the dashboard.

bash
curl -X GET "https://eranol.com/api/v1/verify" \
  -H "x-api-key: YOUR_API_KEY" \
  -H "Content-Type: application/json"

Example Response

Below is an example of a successful JSON response from this endpoint.

json
{
  "message": "API key is valid.",
  "success": "true"
}

Response Status

A successful request will return one of the following HTTP status codes.

200 OKRequest was successful and data is returned in the response body.
401 UnauthorizedMissing or invalid API key.
429 Too Many RequestsRate limit exceeded. Try again later.

Watermark

POST

Overlay a logo/watermark on a video. Scales the watermark image relative to video width and positions it at the chosen corner or center. Supports opacity control. Example: {"url": "https://cdn.example.com/video.mp4", "watermark_url": "https://cdn.example.com/logo.png", "position": "bottom_right"}

Endpoint

Send your requests to the following URL using the specified HTTP method.

POST https://eranol.com/api/v1/ffmpeg/video/watermark

Headers

Include the following headers with every request. Your API key is required for authentication.

Content-Type:application/json
x-api-key:YOUR_API_KEY

Request Body

Send the following JSON payload in the request body. Adjust the values to match your use case.

json
{
  "url": "https://cdn.example.com/video.mp4",
  "scale": 0.15,
  "margin": 10,
  "opacity": 0.8,
  "position": "bottom_right",
  "watermark_url": "https://cdn.example.com/logo.png"
}

Parameters

All available options for this endpoint. Required parameters are marked accordingly.

ParameterTypeDefaultDescription
urlstringrequiredVideo file URL
watermark_urlstringrequiredWatermark image URL (png recommended for transparency)
positionstringbottom-rightPosition: top-left, top-right, bottom-left, bottom-right, or center
scalefloat0.15Watermark size relative to video width (0.01–1.0)
opacityfloat0.8Watermark opacity (0.0–1.0)

Example Request

Use the following cURL command to make a request to this API endpoint. Replace YOUR_API_KEY with your actual API key from the dashboard.

bash
curl -X POST "https://eranol.com/api/v1/ffmpeg/video/watermark" \
  -H "x-api-key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"url":"https://cdn.example.com/video.mp4","scale":0.15,"margin":10,"opacity":0.8,"position":"bottom_right","watermark_url":"https://cdn.example.com/logo.png"}'

Example Response

Below is an example of a successful JSON response from this endpoint.

json
{
  "job_id": "f595b9ad-1e15-4452-b7c2-8f8ff09c0a34",
  "status": "pending",
  "message": "Job created. Poll status_url for progress.",
  "job_type": "caption",
  "result_url": "https://eranol.com/api/v1/ffmpeg/result/f595b9ad-1e15-4452-b7c2-8f8ff09c0a34",
  "status_url": "https://eranol.com/api/v1/ffmpeg/status/f595b9ad-1e15-4452-b7c2-8f8ff09c0a34"
}

Response Status

A successful request will return one of the following HTTP status codes.

200 OKRequest was successful and data is returned in the response body.
201 CreatedResource was successfully created.
401 UnauthorizedMissing or invalid API key.
429 Too Many RequestsRate limit exceeded. Try again later.

FFmpeg Results

GET

Get the result of a completed job. Returns 202 if still processing, 200 with result data if completed, or 400 if the job failed. Works for all job types.

Endpoint

Send your requests to the following URL using the specified HTTP method.

GET https://eranol.com/api/v1/ffmpeg/result/{job_id}

Example Request

Use the following cURL command to make a request to this API endpoint. Replace YOUR_API_KEY with your actual API key from the dashboard.

bash
curl -X GET "https://eranol.com/api/v1/ffmpeg/result/{job_id}" \
  -H "x-api-key: YOUR_API_KEY"

Example Response

Below is an example of a successful JSON response from this endpoint.

json
[
  {
    "url": "https://eranol.com/api/v1/ffmpeg/file/af390718-7794-4b36-b9c3-2693e922cf18.mp4",
    "job_id": "37a8d929-1bb1-40b8-bd81-1a4a633b834b",
    "duration": 58.875,
    "filename": "af390718-7794-4b36-b9c3-2693e922cf18.mp4",
    "resolution": "1280x720"
  }
]

Response Status

A successful request will return one of the following HTTP status codes.

200 OKRequest was successful and data is returned in the response body.
401 UnauthorizedMissing or invalid API key.
429 Too Many RequestsRate limit exceeded. Try again later.