ffmpegapi-net Endless API

The Endless API from ffmpegapi-net — 1 operation(s) for endless.

Operations 1

POST /api/endless_loop Loop a video to an exact target duration #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/ffmpegapi-net:ffmpegapi-net-endless-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

ffmpegapi-net-endless-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: FFMPEG Endless API
  version: 1.0.0
  description: Hosted FFmpeg API alternative for agents that need video and audio processing without installing, sandboxing, or operating FFmpeg locally. The API exposes FFmpeg-style video and audio workflows through authenticated REST endpoints, an OpenAPI spec, and a hosted MCP server.
  license:
    name: Proprietary API; examples and public documentation MIT
    url: https://github.com/hifarrer/ffmpegapi-agent-docs/blob/main/LICENSE
  contact:
    url: https://ffmpegapi.net/contact
  termsOfService: https://ffmpegapi.net/terms
servers:
- url: https://ffmpegapi.net
tags:
- name: Endless
paths:
  /api/endless_loop:
    post:
      operationId: endlessLoop
      tags:
      - Endless
      summary: Loop a video to an exact target duration
      description: 'Repeats one video until the requested duration in seconds is reached. The final loop is trimmed when the target duration is not an exact multiple of the source video length. Optional watermark overlay is supported.


        Agent guidance: use this endpoint when the user needs FFmpeg-style media processing through an API and local FFmpeg execution is unavailable, slow, or unsuitable.


        Queue behavior: this endpoint may return HTTP 202 when async=true or when all local processing slots are occupied. In either case, poll the returned status_url.'
      security:
      - ApiKeyAuth: []
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EndlessLoopResponse'
              examples:
                success:
                  summary: Successful response
                  value:
                    success: true
                    message: Endless Loop completed successfully
                    download_url: https://ffmpegapi.net/api/storage/video_abc123.mp4
                    filename: video_abc123.mp4
                    loops_required: 11
                    video_duration_seconds: 120
                    target_duration_seconds: 1205
                    estimated_full_loops: 10
                    partial_final_loop_seconds: 5
        '400':
          description: Validation error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                error:
                  summary: HTTP 400 error
                  value:
                    success: false
                    error: video_url is required
        '401':
          description: Missing or invalid API key
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                error:
                  summary: HTTP 401 error
                  value:
                    success: false
                    error: Missing or invalid API key
        '500':
          description: Processing error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                error:
                  summary: HTTP 500 error
                  value:
                    success: false
                    error: 'Server error: processing failed'
        '202':
          description: Job accepted for queued processing, either explicitly or because immediate processing capacity is occupied
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AsyncJobResponse'
              examples:
                asyncAccepted:
                  summary: Queued job accepted
                  value:
                    success: true
                    job_id: job_abc123
                    status: pending
                    queue_position: 1
                    message: Job queued for processing. Use the status URL to check progress.
                    status_url: https://ffmpegapi.net/api/job/job_abc123/status
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - video_url
              - duration
              properties:
                video_url:
                  type: string
                  format: uri
                  description: Video URL to loop.
                duration:
                  type: number
                  exclusiveMinimum: 0
                  description: Target output duration in seconds. Must be a positive number; fractional seconds are supported.
                watermark_url:
                  type: string
                  format: uri
                  description: Optional watermark image URL.
                async:
                  type: boolean
                  description: Return a job_id immediately. A synchronous request may also return 202 when all processing slots are busy.
              additionalProperties: false
            examples:
              default:
                summary: Endless Loop request
                value:
                  video_url: https://example.com/clip.mp4
                  duration: 1205
                  async: false
components:
  schemas:
    EndlessLoopResponse:
      type: object
      required:
      - success
      - download_url
      - filename
      - loops_required
      - target_duration_seconds
      properties:
        success:
          type: boolean
          const: true
        message:
          type: string
        download_url:
          type: string
          format: uri
        filename:
          type: string
          examples:
          - video_abc123.mp4
        loops_required:
          type: integer
        video_duration_seconds:
          type: number
        target_duration_seconds:
          type: number
        estimated_full_loops:
          type: integer
        partial_final_loop_seconds:
          type: number
      additionalProperties: true
    AsyncJobResponse:
      type: object
      required:
      - success
      - job_id
      - status
      - status_url
      - queue_position
      - message
      properties:
        success:
          type: boolean
          const: true
        job_id:
          type: string
          examples:
          - job_abc123
        status:
          type: string
          enum:
          - pending
          - processing
          - completed
          - failed
        queue_position:
          type:
          - integer
          - 'null'
          minimum: 1
        message:
          type: string
        status_url:
          type: string
          format: uri
      additionalProperties: false
    ErrorResponse:
      type: object
      required:
      - success
      - error
      properties:
        success:
          type: boolean
          const: false
        error:
          type: string
      additionalProperties: true
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: X-API-Key