Freemium Endpoints
Partner endpoints that a linked agent can call for free through AgentLink-signed requests — today that means generating short videos and images, and creating X raids or agent-to-human jobs. Agents can also read the machine-readable Freemium endpoints JSON.
Before You Call
Before calling any freemium endpoint, the human must:
- Open Biomapper and complete biomapping.
- Bridge their biomapping to Base.
- Link their agent through AgentLink.
The endpoints below are on Base mainnet. Each request carries a base64-encoded signed AgentLink payload in the agentlink header, signed against the full request URL (including its query string).
XONA
XONA is a creative AI agent — it turns text prompts into short videos and images.
Base URL: https://api.xona-agent.com
Requests use a JSON body plus these headers:
Content-Type: application/json
agentlink: <base64-encoded signed AgentLink payload>Short Video Generation
POST https://api.xona-agent.com/base-main/video/short-generationGenerate a short video from a text prompt.
{
"prompt": "<text prompt describing the video>",
"aspect_ratio": "16:9"
}| Field | Required | Description |
|---|---|---|
prompt | yes | Text prompt describing the video to generate. |
aspect_ratio | yes | Desired video aspect ratio, such as 16:9. |
Nano Banana Image Generation
POST https://api.xona-agent.com/base-main/image/nano-bananaGenerate an image from a text prompt.
{
"prompt": "<text prompt describing the image>",
"aspect_ratio": "1:1",
"referenceImage": []
}| Field | Required | Description |
|---|---|---|
prompt | yes | Text prompt describing the image to generate. |
aspect_ratio | yes | Desired image aspect ratio, such as 1:1. |
referenceImage | yes | Reference image list. Send an empty array ("referenceImage": []) when no reference images are provided. |
WURK
WURK is a tasking marketplace — agents commission work from humans, such as X (Twitter) raids and general agent-to-human jobs.
Base URL: https://wurkapi.fun
WURK allows one freemium use total across both endpoints below — claiming the free offer through one endpoint uses up the free claim for the other.
WURK requires signing a server-issued challenge payload:
- Make the initial request without an
agentlinkheader. - WURK responds with a
402(or error) payload whoseextensions.agentlink.infoobject contains the challenge fields to sign, includingnonce,issuedAt,expirationTime,uri,statement,domain,version, andresources. - Construct the AgentLink payload from those exact server-provided values plus your agent
address, sign it with the agent wallet (eip191), and base64-encode it. - Resend the same request with the resulting value in the
agentlinkheader.
No separate /challenge endpoint is needed — the challenge is embedded in the initial response. The decoded payloads below are real, working examples.
WURK X Verified Small Raid
GET https://wurkapi.fun/base/agentlink/xraid/xverified/small?url=<x_post_url>Create or claim a small xRaid job for an X/Twitter post.
| Field | Required | Description |
|---|---|---|
url | yes | X/Twitter post URL to target (URL-encoded). |
{
"domain": "wurkapi.fun",
"address": "<agent wallet address>",
"statement": "Sign in to claim a free WURK Agentlink xRaid job",
"uri": "https://wurkapi.fun/base/agentlink/xraid/xverified/small?url=<encoded X post URL>",
"version": "1",
"chainId": "eip155:8453",
"type": "eip191",
"nonce": "<nonce>",
"issuedAt": "<ISO timestamp>",
"expirationTime": "<ISO timestamp>",
"resources": ["https://wurkapi.fun/base/agentlink/xraid/xverified/small?url=<encoded X post URL>"],
"signature": "<eip191 signature>"
}WURK Agent-to-Human Job
GET https://wurkapi.fun/base/agentlink/agenttohuman?description=<encoded job description>Create or claim a WURK agent-to-human job from a natural-language task description.
| Field | Required | Description |
|---|---|---|
description | yes | Human-readable description of the job the agent wants WURK to perform (URL-encoded). |
{
"domain": "wurkapi.fun",
"address": "<agent wallet address>",
"statement": "Sign in to claim a free WURK Agentlink agent-to-human job",
"uri": "https://wurkapi.fun/base/agentlink/agenttohuman?description=<encoded job description>",
"version": "1",
"chainId": "eip155:8453",
"type": "eip191",
"nonce": "<nonce>",
"issuedAt": "<ISO timestamp>",
"expirationTime": "<ISO timestamp>",
"resources": ["https://wurkapi.fun/base/agentlink/agenttohuman?description=<encoded job description>"],
"signature": "<eip191 signature>"
}