How do I use one API key to run any image or video model?
One Wireflow API key runs every image and video model your plan includes: add the model to a workflow, call /run, and pay from one credit balance.
To run any image or video model with one API key, add the model as a node in a Wireflow workflow and call POST /api/v1/workflows/{id}/run with your sk- key. That one key and one credit balance cover every model your plan includes, so you never sign up with each model's maker or manage a key for each one.
The models include Kling, Veo, Seedance, Wan, Flux, Nano Banana, Seedream and ElevenLabs. All Nodes lists every one, with its inputs, settings and credit cost.
Do I need a separate API key for each model provider?
No. Your Wireflow API key is the only key you need, and every model node in a run is paid from the credits of the account that owns the key. Create the key in Settings > API Keys and give it the workflows:execute and executions:read scopes, or Full access. Keys start with sk- and are shown only once, so keep yours in an environment variable such as WIREFLOW_API_KEY.
AI agents don't need a key at all. The MCP connector signs in with your Wireflow account, and that one login covers ElevenLabs, Seedance, Veo and the rest.
How do I call Kling, Veo and Sora through one endpoint?
Put each model in a workflow and call that workflow's /run URL on the same API with the same key. Kling and Veo run this way, but Sora 2 no longer runs at all: the Sora 2 node page says OpenAI retired it on 24 Sep 2026 and points to Veo 3.1 instead.
A simple setup is one workflow per model, each with a Text Input wired into the model's Prompt:
| Model | Node type | Node page |
|---|---|---|
| Kling Video | video:kling_video_2_5_i2v |
Kling Video |
| Veo 3.1 | video:veo3_1 |
Veo 3.1 |
| Flux 2 | generate:flux_2 |
Flux 2 |
The same key then starts all three:
for WF in KLING_WORKFLOW_ID VEO_WORKFLOW_ID FLUX_WORKFLOW_ID; do
curl -s -X POST "https://www.wireflow.ai/api/v1/workflows/$WF/run" \
-H "Authorization: Bearer $WIREFLOW_API_KEY" \
-H "Content-Type: application/json" \
-d '{"inputs": {"node-prompt": "a ceramic mug on a wooden table, steam rising, morning light"}}'
echo
done
const API = 'https://www.wireflow.ai/api/v1';
const headers = {
Authorization: `Bearer ${process.env.WIREFLOW_API_KEY}`,
'Content-Type': 'application/json',
};
const workflows = ['KLING_WORKFLOW_ID', 'VEO_WORKFLOW_ID', 'FLUX_WORKFLOW_ID'];
const prompt = 'a ceramic mug on a wooden table, steam rising, morning light';
const runs = await Promise.all(
workflows.map(async (id) => {
const res = await fetch(`${API}/workflows/${id}/run`, {
method: 'POST',
headers,
body: JSON.stringify({ inputs: { 'node-prompt': prompt } }),
});
if (!res.ok) throw new Error(`${id}: ${res.status} ${await res.text()}`);
return (await res.json()).data;
}),
);
console.log(runs.map((run) => run.executionId));
import os
import requests
API = "https://www.wireflow.ai/api/v1"
HEADERS = {"Authorization": f"Bearer {os.environ['WIREFLOW_API_KEY']}"}
PROMPT = "a ceramic mug on a wooden table, steam rising, morning light"
for workflow_id in ["KLING_WORKFLOW_ID", "VEO_WORKFLOW_ID", "FLUX_WORKFLOW_ID"]:
res = requests.post(
f"{API}/workflows/{workflow_id}/run",
headers=HEADERS,
json={"inputs": {"node-prompt": PROMPT}},
)
res.raise_for_status()
print(workflow_id, res.json()["data"]["executionId"])
Each call returns its own executionId. Poll each one as shown in How do I know when a run is finished. Use the input node ids that GET /api/v1/workflows/{id}/run returns for each workflow.
To compare models on one prompt in a single call, wire one Text Input into the Prompt of each video node in the same workflow. One /run call then makes a clip with each model.
Each of these models also has its own page on the site: the Veo API, Kling 2.5 API, Flux 2 API and Seedance API pages.
Is there a tool that lets me switch between AI models using one API endpoint?
Yes. Keep calling the same workflow's /run URL and swap the model node on the canvas: /run loads the saved workflow on every call, so the next run uses the new model with the same inputs, and your code does not change.
- Wire the new node the same way, with the Text Input into Prompt and any image into its image input, then save.
- Check the new node's settings, because they differ by model. Wan 2.5 takes durations of 5 or 10 seconds, while Veo 3.1 takes
4s,6sor8s. - A published app behaves the same way. It runs the saved workflow at call time, so callers get the new model on their next run.
Which models can my API key run?
Your key runs the models your account's plan includes, because API runs use the same credits and model access as your account.
| Plan | Image and audio models | Full video model access |
|---|---|---|
| Starter | All models | Included |
| Professional | All models | Included |
| Team | All models | Included |
This is the access a new account gets on each paid plan. The pricing page shows what the Free plan includes and lists each plan's price and credits each month.
How are credits charged across models with one key?
Each model node that runs is charged at its own price, and all of it comes out of the key owner's one balance. Prices at default settings, from the pricing page:
| Model | Maker | Unit | Credits |
|---|---|---|---|
| Kling Video | Kling | per run | 135 |
| Seedance 2.5 | ByteDance | per run | 135 |
| Seedance 2.0 | ByteDance | per run | 90 |
| Wan 2.5 | Alibaba | per run | 80 |
Veo 3.1 is not in the pricing page's short list. Its node page gives about 64 credits per second, at the rate for a 5-second clip. Resolution, length and quality change every price.
If the balance cannot cover a run, the API refuses it with 402 and shows what each node needs:
{
"error": "Insufficient credits. Required: 10, Available: 3",
"insufficientCredits": true,
"requiredCredits": 10,
"availableCredits": 3,
"breakdown": [
{ "nodeId": "node-1", "nodeLabel": "Text to Image", "credits": 10 }
]
}
To read the balance from code, GET /api/v1/me returns the plan and credits of the account your key acts as.
How do I find every model I can call, and its price, from code?
GET /api/v1/nodes lists every node you can put in a workflow, with its nodeType, its ports and its estimated credits, and it needs no API key. Add ?category=video to list only video nodes.
curl "https://www.wireflow.ai/api/v1/nodes?category=video"
const res = await fetch('https://www.wireflow.ai/api/v1/nodes?category=video');
const { nodes } = await res.json();
for (const n of nodes) console.log(n.nodeType, n.label, n.pricingModel, n.estimatedCredits);
import requests
catalog = requests.get("https://www.wireflow.ai/api/v1/nodes", params={"category": "video"}).json()
for node in catalog["nodes"]:
print(node["nodeType"], node["label"], node["pricingModel"], node["estimatedCredits"])
| Field | What it tells you |
|---|---|
nodeType |
The id you build with, such as video:veo3_1 |
label |
The name shown in the editor |
pricingModel |
How the node bills: free, flat-usd, per-second, video-tokens, per-image or unknown |
estimatedCredits |
Credits for one run at default settings. null means the node is paid but cannot be estimated ahead of time |
- Hidden variants are left out unless you add
?includeHidden=1. Build with the main node, never with a hidden variant. GET /api/v1/modelslists every model with its credit cost, also without a key.- Agents connected over MCP use the
list_modelstool, which lists the models with real prices.
Next steps
- Quickstart
The Wireflow REST API runs your AI workflows from code: authenticate with an sk- key, start a run, then poll or get a webhook with the result.
- Run a workflow from your app
To run an AI workflow from your app, send its inputs to POST /api/v1/workflows/{id}/run with your API key, poll the run, then download each output file.
- Catalog
Reference for every node type available in Wireflow: ports, sidebar config, outputs, and pricing.
Related
- Run endpoint
Run any workflow you own as an API: send only its input values to POST /api/v1/workflows/{id}/run, then poll or get a webhook with the result.
- Using AI models
Wireflow runs 100+ image, video, audio and text models as nodes: find a model, check its credit cost, and chain models together in one workflow.