Call a saved workflow over HTTP as an endpoint.

Pick a workflow version and a GPU, set min and max workers, and get a URL. At 0 min workers the endpoint sleeps when idle, and the first request after that waits for a cold start.

A request is a POST with the inputs you exposed on the workflow’s form.

request · brand-film · v7
curl https://api.milvey.example/v1/endpoints/brand-film/runs \
  -H "Authorization: Bearer $MILVEY_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "input": {
      "product_image": "https://cdn.example.com/bottle.png",
      "prompt": "Slow orbit, soft rim light",
      "duration": 5
    },
    "webhook_url": "https://example.com/hooks/milvey"
  }'
response, then webhook
# 202 Accepted
{ "id": "req_91af", "status": "queued", "version": "v7" }

# POST https://example.com/hooks/milvey  (1m 29s later)
{
  "type": "run.succeeded",
  "id": "req_91af",
  "output": { "video_url": "https://…/req_91af.mp4" },
  "credits": 12,
  "gpu": "RTX PRO 6000"
}

Example request. Field names come from the workflow’s exposed inputs.

Min workers sets the trade between idle cost and cold starts.

At 0, an idle day costs 0 cr and the first request waits for a worker to load. At 1 or more, requests start at once and each awake worker is metered per second at its GPU’s cr/min rate.

0–3 workers, sleeps after 60 s idle. Idle cost 0 cr. Cold start ≈ 25 s.

Sample: RTX PRO 6000 at 8 cr/min while a worker is awake. Not a quote.

Each deploy phase is logged with its duration.

deploy · brand-film · v7 · RTX PRO 6000sample
00:00Build: environment from the resolved node packs and weights48 s
00:48Push: image to the GPU region21 s
01:09Warm: weights loaded on the first worker35 s
01:44Health check: one test request against the input schema6 s
01:50Live at https://api.milvey.example/v1/endpoints/brand-film

A failed request shows 0 cr in the endpoint’s log.

RequestTimeStatusDurationCredits
req_91af12:41:07200 · delivered1m 29s12 cr
req_91aecold start12:38:55200 · delivered1m 58s12 cr
req_91ad12:30:12422 · invalid input0.2s0 cr
req_91ac12:22:40200 · delivered1m 31s12 cr
req_91ab12:10:03500 · failed44s0 cr

Sample log for the brand-film endpoint.

An endpoint serves its pinned version until you move it.

Publishing a new workflow version leaves live endpoints alone.

brand-film

serving v7sample

Questions about endpoints

What does an idle endpoint cost?
With min workers at 0, nothing. An awake worker is metered per second at its GPU’s cr/min rate until the idle timeout puts it to sleep.
How do I get results for a long video?
The call returns a request id at once. The result is posted to your webhook_url, or you poll the id.
What happens when a request fails?
A failed request shows 0 cr in the log. How credits are reserved and returned is on the pricing page.
How are API keys handled?
A key is shown once when you create it. Each key has a scope, a last-used date and an optional spend cap. The snippets read it from an environment variable.
Can I change the GPU later?
Yes. Changing the GPU or worker counts redeploys the endpoint on the same URL and the same version.

Send me the workflow your app needs to call.

Join the list and reply with the graph. I’ll deploy it as an endpoint and send you the curl command and the credits per request.

Email when signups open · Unsubscribe any time