Quick start
Create a key in My account → Developer API. The full key is displayed only once.
Server-side only: never place the API key in browser JavaScript, HTML, a mobile app bundle, or a public repository.
curl -X POST https://avola.uk/api/v1 \ -d "key=avola_live_YOUR_KEY" \ -d "action=services"
Requests may use application/x-www-form-urlencoded or JSON. You may also send the key as Authorization: Bearer ....
Official Agent CLI & MCP v1.0.1
For AI agents and server automation, use the zero-dependency Avola Agent CLI or local stdio MCP server. Both read the key from AVOLA_API_KEY. MCP order creation is dry-run by default and requires JSON boolean confirm: true to execute.
curl -fsSL https://avola.uk/agent/avola-agent.mjs -o avola-agent.mjs export AVOLA_API_KEY="avola_live_YOUR_KEY" node avola-agent.mjs doctor # MCP: node /absolute/path/avola-mcp.mjs
Service list
| Parameter | Value |
|---|---|
| key | Your API key |
| action | services |
[
{
"service": 12345678,
"name": "X Post Views — 1,000 views",
"type": "Package",
"category": "X / Twitter",
"rate": "0.19",
"min": "1",
"max": "1",
"currency": "USD"
}
]Service IDs and prices come from Avola's current public catalog. Refresh the list before choosing a package; IDs may change when package options change. Each listed service is one fixed package: min and max are both 1, and rate is the total package price in USD, not a per-1,000 quote.
Add order
| Parameter | Description |
|---|---|
| key | Your API key |
| action | add |
| service | Service ID returned by services |
| link | Public target URL |
| request_id | Optional unique idempotency key from your system |
| notes | Optional public task instructions |
curl -X POST https://avola.uk/api/v1 \ -d "key=avola_live_YOUR_KEY" \ -d "action=add" \ -d "service=12345678" \ -d "link=https://x.com/example/status/123" \ -d "request_id=store-order-1001"
{"order":"AVO20260714ABCD","charge":"0.19","status":"In progress","currency":"USD"}The Avola account linked to the key is charged when the order is accepted. Failed managed-delivery submission is automatically refunded to Avola balance.
Order status
| action | status |
| order | One Avola order ID |
| orders | Optional comma-separated list of up to 100 order IDs |
curl -X POST https://avola.uk/api/v1 \ -d "key=avola_live_YOUR_KEY" \ -d "action=status" \ -d "order=AVO20260714ABCD"
{"charge":"0.19","start_count":"0","status":"In progress","remains":"1000","currency":"USD"}A published campaign task remains In progress until its order status becomes Completed. The current API returns start_count as 0 and remains as the stored fulfillment quantity, or 0 for a completed order. These fields do not measure live participant progress; review campaign completion against its evidence requirements.
Balance
| action | balance |
{"balance":"43.57","currency":"USD"}Security and errors
Invalid requests return a JSON object such as {"error":"Invalid API key"}. Requests are rate-limited. Revoke a leaked key immediately from My account. A key can access only its linked account balance and orders.
Avola API responses contain public Avola service fields and data for your linked account. Keep your API key private.
Create an API key