apps/mirage/text-overlays

text-overlays

Render up to 4 static text variants onto one video with per-variant font, size and colour — built for testing ad hooks and headlines against the same footage.

run with your agent
# install belt
$curl -fsSL https://cli.inference.sh | sh
# view schema & details
$belt app get mirage/text-overlays
# run
$belt app run mirage/text-overlays

api reference

about

render up to 4 static text variants onto one video with per-variant font, size and colour — built for testing ad hooks and headlines against the same footage.

1. calling the api

install the client

the client provides a convenient way to interact with the api.

bash
1pip install inferencesh

setup your api key

set INFERENCE_API_KEY as an environment variable. get your key from settings → api keys.

bash
1export INFERENCE_API_KEY="inf_your_key"

run and get result

submit a request and wait for the final result. best for batch processing or when you don't need progress updates.

python
1from inferencesh import inference23client = inference()456result = client.run({7        "app": "mirage/text-overlays",8        "input": {}9    })1011print(result["output"])

stream live updates

get real-time progress updates as the task runs. ideal for showing progress bars, partial results, or long-running tasks.

python
1from inferencesh import inference23client = inference()456# stream=True yields updates as they arrive7for update in client.run({8        "app": "mirage/text-overlays",9        "input": {}10    }, stream=True):11    if update.get("progress"):12        print(f"progress: {update['progress']}%")13    if update.get("output"):14        print(f"output: {update['output']}")

2. authentication

the api uses api keys for authentication. see the authentication docs for detailed setup instructions.

3. files

file inputs are automatically handled by the sdk. you can pass local paths, urls, or base64 data.

automatic upload

the python sdk automatically detects local file paths and uploads them. urls are passed through as-is.

python
1# local file paths are automatically uploaded2result = client.run({3    "app": "mirage/text-overlays",4    "input": {5        "image": "/path/to/local/image.png",  # detected & uploaded6        "audio": "https://example.com/audio.mp3",  # url passed through7    }8})

manual upload

you can also upload files manually and use the returned url.

python
1# upload and get a hosted URL2file = client.files.upload("/path/to/file.png")3print(file.uri)  # https://cloud.inference.sh/...

4. webhooks

get notified when a task completes by providing a webhook url. when the task reaches a terminal state (completed, failed, or cancelled), a POST request is sent to your url with the task result.

python
1result = client.run({2    "app": "mirage/text-overlays",3    "input": {},4    "webhook": "https://your-server.com/webhook"5}, wait=False)

webhook payload

your endpoint receives a JSON POST with the task result:

json
1{2  "id": "task_abc123",3  "status": 9,4  "output": { ... },5  "error": "",6  "session_id": null,7  "created_at": "2024-01-15T10:30:00Z",8  "updated_at": "2024-01-15T10:30:05Z"9}
idstringtask id
statusnumberterminal status (9=completed, 10=failed, 11=cancelled)
outputobjecttask output (when completed)
errorstringerror message (when failed)
session_idstringsession id (if using sessions)
created_atstringiso timestamp
updated_atstringiso timestamp

5. schema

input

videostring(file)*

source video to render text onto (mp4 or mov), at most 50 mb.

textsarray*

text variants to render, one output video per entry. up to 4 — the point is testing several hooks against the same footage in one call.

example: ["I tried this for a week","Nobody talks about this","Day 3 changed it"]
fontsarray

font per variant, aligned by position with texts. blank entries let mirage decide. omit entirely to auto-pick every font.

sizesarray

font size in pixels per variant, aligned by position with texts. blank entries auto-decide.

colorsarray

text colour per variant as #rrggbb, aligned by position with texts. blank entries auto-decide.

output

overlay_idstring*

mirage text overlay job id

resultsarray

per-variant outcome, including any that failed on their own

videosarray

rendered videos, in the order of texts

ready to run text-overlays?

we use cookies

we use cookies to ensure you get the best experience on our website. for more information on how we use cookies, please see our cookie policy.

by clicking "accept", you agree to our use of cookies.
learn more.