Api Endpoint

medien.halowerk.com

Takes a video by URL or inline base64 and reports where the picture changes. FFmpeg measures the difference between consecutive frames; every jump above the threshold starts a new scene, and the answer lists each scene with start, end, duration and the fraction of the running time it covers, plus the raw detection score positions.

Open interactive test console

Offering

Provider
medien.halowerk.com
Method
POST
Offering type
Api Endpoint
Transport type
http
Category
Creative
Delivery
Not provided
Pricing model
Not provided
x402 version
2

Endpoint context

URL
https://medien.halowerk.com/v1/keyframes
MIME type
Not provided
First seen
2026-10-16T01:58:26.121Z
Last seen
Tags
None supplied

Payment pricing

x402 payment terms are the authoritative price for calling this endpoint.

Payment option 1
0.03 USDC
Atomic price: 30000 · Network: eip155:8453 · Asset: USDC · Scheme: exact
Raw x402 terms
[
  {
    "scheme": "exact",
    "network": "eip155:8453",
    "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
    "amount": "30000",
    "payTo": "0x2880EdfFF13100677Bf97A3CBdF3Bc34771C4E5E"
  }
]

Observed health

Status
Healthy
Latest latency
316 ms
Average latency
607 ms
HTTP status
204
Last checked
Reachability
100% over 8 checks

Latency is measured to the first response headers. A reachable result does not verify response accuracy or merchant identity.

Input schema

{
  "body": {
    "duration_minutes": 3,
    "include_thumbnails": true,
    "scene_threshold": 0.35,
    "source": {
      "url": "https://example.com/film.mp4"
    }
  },
  "bodyType": "json",
  "method": "POST",
  "type": "http"
}

Output schema

{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "properties": {
    "input": {
      "additionalProperties": false,
      "properties": {
        "body": {
          "additionalProperties": false,
          "properties": {
            "duration_minutes": {
              "default": 1,
              "description": "Length of the video in started minutes — this is what you are billed for. A longer video is refused with its real duration and nothing is charged; a shorter one simply costs what you declared, and the answer says how much less it would have been.",
              "maximum": 30,
              "minimum": 1,
              "type": "integer"
            },
            "include_thumbnails": {
              "default": false,
              "description": "Render one JPEG per scene and return it base64.",
              "type": "boolean"
            },
            "max_scenes": {
              "default": 100,
              "description": "Ceiling on returned scenes. What is dropped is counted and reported.",
              "maximum": 400,
              "minimum": 1,
              "type": "integer"
            },
            "max_thumbnails": {
              "default": 20,
              "description": "Ceiling on rendered thumbnails, independent of the scene count.",
              "maximum": 60,
              "minimum": 1,
              "type": "integer"
            },
            "min_scene_seconds": {
              "default": 0.4,
              "description": "Merge cuts closer together than this. Guards against flicker being read as a cut.",
              "maximum": 60,
              "minimum": 0,
              "type": "number"
            },
            "scene_threshold": {
              "default": 0.35,
              "description": "Frame-to-frame difference above which a new scene starts. Lower finds more, higher finds fewer.",
              "maximum": 0.95,
              "minimum": 0.05,
              "type": "number"
            },
            "source": {
              "additionalProperties": false,
              "description": "The video. Either url or content_base64.",
              "properties": {
                "content_base64": {
                  "description": "The video inline, base64. Larger files must come by url.",
                  "maxLength": 12000000,
                  "type": "string"
                },
                "filename": {
                  "maxLength": 260,
                  "type": "string"
                },
                "url": {
                  "description": "Public http(s) URL of the video.",
                  "maxLength": 2048,
                  "type": "string"
                }
              },
              "type": "object"
            },
            "thumbnail_width": {
              "default": 160,
              "description": "Width of the thumbnails; height follows the aspect ratio.",
              "maximum": 640,
              "minimum": 32,
              "type": "integer"
            }
          },
          "required": [
            "source"
          ],
          "type": "object"
        },
        "bodyType": {
          "enum": [
            "json",
            "form-data",
            "text"
          ],
          "type": "string"
        },
        "method": {
          "enum": [
            "POST",
            "PUT",
            "PATCH"
          ],
          "type": "string"
        },
        "type": {
          "const": "http",
          "type": "string"
        }
      },
      "required": [
        "type",
        "method",
        "bodyType",
        "body"
      ],
      "type": "object"
    }
  },
  "required": [
    "input"
  ],
  "type": "object"
}