How to give your AI agent Wan 2.2 video
Animate a still image into a 5-second video clip with Wan 2.2: fast and cheap, at 480p or 720p. Your agent can use it in two ways: pay for each call itself with x402, or use an API key that draws from a balance you load up front. Both cost from $0.069 per successful call, and failed calls cost nothing.
Made by Wan (Alibaba). Sold by TollNode per call, no subscription. Inputs and prices
“Powerful ocean waves roll in from the left and crash against the black rocks below the lighthouse, white spray bursts upward and drifts away in the wind, foam spreads and drains back over the rocks, low clouds drift slowly to the right, the lighthouse lamp glows steadily. Slow, smooth cinematic push-in toward the cliff. The lighthouse, buildings and cliff stay completely still and solid. Natural, realistic motion.”
For agents: the short version
- Endpoint
- POST https://tollnode.com/api/v1/nodes/video-wan-2-2
- Price
- from $0.069 USDC per successful call (by resolution: 480p $0.069, 720p $0.150)
- Pay with x402
- No header first; answer the 402 with PAYMENT-SIGNATURE (USDC, Base, eip155:8453)
- Or an API key
- Authorization: Bearer tn_live_… (balance from https://tollnode.com/account)
- Example body
- {"image":"https://tollnode.com/examples/restore-photo-after.jpg","prompt":"the car pulls away from the toll booth, gentle camera pan","resolution":"480p"}
- Machine docs
- /llms.txt, /openapi.json, /.well-known/x402
Why give your agent Wan 2.2 video?
- A social-media agent turns a product photo into a short clip.
- A storyboard agent previews a scene before anyone films it.
- A marketing agent makes a 5-second teaser from a prompt.
Way 1
Pay per call with x402 (no sign-up)
x402 is an open standard that puts payment into normal HTTP. The agent asks, the server answers with the price, and the agent's wallet signs a USDC payment and asks again. Best when the agent should pay for itself.
- 1
Give the agent a wallet with a little USDC on Base
In Claude Code, Cursor or Codex, AgentCash sets up the wallet and adds every TollNode node as a tool. Run it once, then send a few dollars of USDC on the Base network to the address it shows.
terminalnpx agentcash add https://tollnode.com - 2
Ask your agent to use Wan 2.2 video
Say what you want in plain words, for example “make an image of …”. The agent picks the Wan 2.2 image-to-video node, sees the price and pays. From a terminal you can call it directly:
terminalnpx agentcash@latest fetch https://tollnode.com/api/v1/nodes/video-wan-2-2 -m POST -b '{"image":"https://tollnode.com/examples/restore-photo-after.jpg","prompt":"the car pulls away from the toll booth, gentle camera pan","resolution":"480p"}' - 3
Or pay from your own code
Any x402 client works. In JavaScript:
javascript// npm i @x402/fetch @x402/evm viem import { wrapFetchWithPayment, x402Client } from "@x402/fetch"; import { registerExactEvmScheme } from "@x402/evm/exact/client"; import { privateKeyToAccount } from "viem/accounts"; const signer = privateKeyToAccount(process.env.AGENT_WALLET_KEY); // a wallet holding USDC on Base const pay = wrapFetchWithPayment(fetch, registerExactEvmScheme(new x402Client(), { signer })); const res = await pay("https://tollnode.com/api/v1/nodes/video-wan-2-2", { method: "POST", headers: { "content-type": "application/json" }, body: JSON.stringify({"image":"https://tollnode.com/examples/restore-photo-after.jpg","prompt":"the car pulls away from the toll booth, gentle camera pan","resolution":"480p"}), }); console.log(await res.json()); - 4
What happens on the wire
The first request comes back as HTTP 402 with the exact price. The client signs and retries with a PAYMENT-SIGNATURE header. TollNode checks the signature, runs Wan 2.2 image-to-video, and collects the payment only if the result is usable. A failed call is never settled.
see the 402 yourselfcurl -i -X POST https://tollnode.com/api/v1/nodes/video-wan-2-2 \ -H 'content-type: application/json' \ -d '{"image":"https://tollnode.com/examples/restore-photo-after.jpg","prompt":"the car pulls away from the toll booth, gentle camera pan","resolution":"480p"}'
Way 2
Account balance + API key
Load a balance once and use an ordinary API key. Best for apps, servers and teams, or code that can't sign payments.
- 1
Create a free account
Sign up with your email. There is no monthly fee.
- 2
Add funds
On your account page, pick $5, $10, $25 or $50 and confirm in a browser wallet such as Coinbase Wallet or MetaMask. You pay in USDC on Base, with no gas fee to pay.
- 3
Create an API key
Name it after the agent or app that uses it. The key is shown once, so store it as an environment variable (TOLLNODE_API_KEY). You can revoke it at any time.
- 4
Call the node
curlcurl -X POST https://tollnode.com/api/v1/nodes/video-wan-2-2 \ -H "Authorization: Bearer $TOLLNODE_API_KEY" \ -H "content-type: application/json" \ -d '{"image":"https://tollnode.com/examples/restore-photo-after.jpg","prompt":"the car pulls away from the toll booth, gentle camera pan","resolution":"480p"}'javascriptconst res = await fetch("https://tollnode.com/api/v1/nodes/video-wan-2-2", { method: "POST", headers: { Authorization: `Bearer ${process.env.TOLLNODE_API_KEY}`, "content-type": "application/json", }, body: JSON.stringify({"image":"https://tollnode.com/examples/restore-photo-after.jpg","prompt":"the car pulls away from the toll booth, gentle camera pan","resolution":"480p"}), }); console.log(await res.json());pythonimport os, requests r = requests.post( "https://tollnode.com/api/v1/nodes/video-wan-2-2", headers={"Authorization": f"Bearer {os.environ['TOLLNODE_API_KEY']}"}, json={"image":"https://tollnode.com/examples/restore-photo-after.jpg","prompt":"the car pulls away from the toll booth, gentle camera pan","resolution":"480p"}, ) print(r.json())A successful call returns the result plus an x-tollnode-charged-usd header. If the balance is too low you get HTTP 402 with your balance and a top-up link, and nothing is charged. A wrong or revoked key returns 401.
Which way fits?
| x402 | API key | |
|---|---|---|
| Sign-up | None | Email account |
| Who pays | The agent's own wallet | Your prepaid balance |
| Setup | One command (AgentCash) | Top up once, create a key |
| Price per call | from $0.069 | from $0.069 |
| Failed call | $0, never settled | $0, hold released |
| Good for | Autonomous agents, Claude Code, Cursor | Apps, servers, teams |
FAQ
- Do I need an account to give my agent Wan 2.2 image-to-video?
- No. With x402 your agent pays from $0.069 per call from its own USDC wallet on Base, with no sign-up and no API key. An account is optional: it lets you prepay a balance and use a normal API key instead.
- Which way should I choose?
- Pick x402 if your agent already has a wallet or runs in Claude Code, Cursor or Codex with AgentCash. Pick an account and API key if you are building an app, want one bill for a team, or your code cannot sign payments.
- What happens if a call fails?
- Nothing is charged, either way. With x402 the payment is only settled after a usable result. With an API key the amount is held and released again if the call fails, times out or comes back empty.
- Are the prices the same both ways?
- Yes. Each successful call costs from $0.069, depending on resolution, whether it is paid with x402 or from an account balance.
- How do I add funds to an account?
- Open your account page, pick an amount ($5, $10, $25 or $50) and confirm in a browser wallet such as Coinbase Wallet or MetaMask. You pay in USDC on Base and there is no gas fee to pay.