🎉 LTX 2.5 IS LIVE! 🎉 | The wait is over. We’ve just pushed LTX 2.5 to production, and it’s our best update yet.

⚡️ GPT-OSS-120b is now live | Blazing fast - better than TogetherAI

👉 Get $5 welcome credit | One API for every frontier model | Ends soon.

Muse Spark 1.2 Contributor API

Run meta/muse-spark-1.2-contributor through FastInfra's API. Pay per token. Video is billed as 1,000 output tokens per second of generated video.

Pricing

Muse Spark 1.2 Contributor pricing

Billed per token. 1,000 output tokens = 1 second of video ($0.00/s at this list price).

Direction Price per 1M tokens
Input$0.11
Output$0.21
Per second of video$0.00 (1,000 output tokens)
Availability

Served by 1 provider

Requests route to OpenRouter by default (cheapest). Pin a specific provider with the :provider suffix.

Provider Upstream model ID
openrouter meta/muse-spark-1.2-contributor
Quickstart

Call Muse Spark 1.2 Contributor in 30 seconds

Same FastInfra API key and base URL. POST /videos/generations (HTTP 202), then poll GET /videos/jobs/{id} — not chat completions.

Python

import base64, json, time, urllib.request

headers = {"Authorization": "Bearer YOUR_API_KEY", "Content-Type": "application/json"}
req = urllib.request.Request(
    "https://api.fastinfra.ai/v1/videos/generations",
    data=json.dumps({
        "model": "meta/muse-spark-1.2-contributor",
        "prompt": "A woman looks at the camera and says, welcome to FastInfra.",
        "seconds": 5,
        "size": "1280x704"
    }).encode(),
    headers=headers,
    method="POST",
)
with urllib.request.urlopen(req, timeout=60) as resp:
    job = json.load(resp)

while True:
    time.sleep(2)
    poll = urllib.request.Request(
        f"https://api.fastinfra.ai/v1/videos/jobs/{job['id']}",
        headers={"Authorization": "Bearer YOUR_API_KEY"},
    )
    with urllib.request.urlopen(poll, timeout=60) as resp:
        payload = json.load(resp)
    if payload["status"] == "completed":
        break
    if payload["status"] == "failed":
        raise SystemExit(payload.get("error") or "video job failed")

open("clip.mp4", "wb").write(base64.b64decode(payload["data"][0]["b64_json"]))

curl

curl https://api.fastinfra.ai/v1/videos/generations \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "meta/muse-spark-1.2-contributor",
    "prompt": "A woman looks at the camera and says, welcome to FastInfra.",
    "seconds": 5,
    "size": "1280x704"
  }'
# HTTP 202 — copy "id", then poll:
curl https://api.fastinfra.ai/v1/videos/jobs/JOB_ID \
  -H "Authorization: Bearer YOUR_API_KEY"
FAQ

Muse Spark 1.2 Contributor — common questions

How much does the meta/muse-spark-1.2-contributor API cost?

On FastInfra, meta/muse-spark-1.2-contributor costs $0.105/1M input, $0.21/1M output tokens ($0 per second of video). Billing is per token used, with no subscription.

Is meta/muse-spark-1.2-contributor compatible with the OpenAI SDK?

Video models use the same FastInfra API key and base URL (https://api.fastinfra.ai/v1). POST https://api.fastinfra.ai/v1/videos/generations returns HTTP 202 with a job id; poll GET https://api.fastinfra.ai/v1/videos/jobs/{id} until status is completed.

Which providers serve meta/muse-spark-1.2-contributor?

meta/muse-spark-1.2-contributor is available from 1 provider(s): openrouter. Requests route to OpenRouter by default (cheapest); append ":provider" to the model ID to pin one.