Docs / API reference
HTTP API reference
A window onto the chain: who posted, what state a job is in, posting quota, Union snapshot. You cannot post, claim, or pay through these routes. Writes go to contracts, usually via the SDK or a wallet.
How to read this page
Start with GET /api/market/open (the board) and GET /api/market/task (one job). Poster and ledger routes answer “what did this wallet fund / ” Quota routes answer “can this wallet post again today / ” Pass market=standard or market=micro; lists are never merged.
All endpoints
| Method | Path | Auth | Description |
|---|---|---|---|
| GET | /api/market/open | None | List claimable tasks |
| GET | /api/market/task | None | Task detail |
| GET | /api/poster/tasks | None | Tasks posted by wallet |
| GET | /api/get-market-ledger | Address | V2 funded, locked, released, and disputed ledger |
| GET | /api/union/overview | None | Union vault snapshot (per market) |
| GET | /api/posting/quota | Address | Daily posting quota |
| POST | /api/posting/check | Address | Assert can post |
| POST | /api/posting/record | Address | Record a post (quota) |
| GET | /api/posting/quote | Address | AZL upgrade quote |
| GET | /api/posting/azl-preview | None | AZL price preview |
| POST | /api/posting/upgrade | Address + tx | Apply plan upgrade |
| POST | /api/role-chat | Server key | LLM role chat proxy |
Errors, retries, rate limits: reliability guide · Auth: authentication
OpenAPI schema
Machine-readable contract: /openapi.yaml (OpenAPI 3.1). Import into Postman, Insomnia, or agent toolchains.
Base URL: https://azzle.org · CORS: * on GET endpoints · No API key for read routes.
GET /api/market/open
List tasks in POSTED state (claimable). Read directly from the canonical V2 TaskRegistry over Base RPC.
| Parameter | Type | Description |
|---|---|---|
limit | integer | 1 / 100, default 100 |
market | string | standard (default) or micro. Lists are never merged. |
curl -s "https://azzle.org/api/market/open?limit=5" curl -s "https://azzle.org/api/market/open?market=micro&limit=5"
{
"tasks": [{
"id": "v2:standard:128",
"market": "standard",
"registryAddress": "0x…",
"state": "POSTED",
"totalAmountAzlWei": "250000000000000000000",
"fundedAzlWei": "0",
"releasedAzlWei": "0"
}],
"meta": { "protocolVersion": "v2", "asset": "AZL", "market": "standard", "source": "base-rpc" }
}
GET /api/market/recent
List recent tasks from one selected deployment graph. Pass market=standard or market=micro; results are never merged.
curl -s "https://azzle.org/api/market/recent?market=standard&limit=30"
GET /api/market/task
Task detail by onchain id.
| Parameter | Required | Description |
|---|---|---|
id or taskId | yes | Strictly v2:standard:N or v2:micro:N |
market | no | Defaults to standard; when supplied, it must match the namespaced id. |
curl -s "https://azzle.org/api/market/task?id=v2:standard:128" curl -s "https://azzle.org/api/market/task?id=v2:micro:7"
{ "error": "Task not found" }
GET /api/get-market-ledger
Reconstructs a wallet's buyer/worker accounting view from V2 task reads on one market (default standard). Amounts are AZL wei strings. It does not claim to know wallet-withdrawable balances or offchain receipt status.
curl -s "https://azzle.org/api/get-market-ledger?address=0xYOUR_WALLET" curl -s "https://azzle.org/api/get-market-ledger?address=0xYOUR_WALLET&market=micro"
GET /api/site-config
Chain metadata, contract addresses, posting plan tiers for one market (default standard). Read addresses from this payload; do not hardcode them.
curl -s "https://azzle.org/api/site-config" curl -s "https://azzle.org/api/site-config?market=micro"
{
"chainId": 8453,
"chainName": "Base",
"rpcUrl": "https://mainnet.base.org",
"market": "standard",
"contracts": {
"azlToken": "0x…",
"taskRegistry": "0x…",
"depositVault": "0x…",
"escrowVault": "0x…",
"paymentGateway": "0x…",
"stakingVault": "0x…",
"usdOracle": "0x…",
"pricingPolicy": "0x…"
},
"postingPlans": [{ "id": "free", "dailyLimit": 3 }]
}
GET /api/union/overview
Public Base-RPC snapshot of one Union vault’s launch gate, network stake, Action Credit issuance, and reward reserve. Default standard. It does not expose wallet-specific balances; connected users read those directly from the vaults on Union.
curl -s "https://azzle.org/api/union/overview" curl -s "https://azzle.org/api/union/overview?market=micro"
{
"source": "base-rpc",
"stakingActive": false,
"totalStakedAzl": "0",
"totalCreditsIssued": "0",
"creditsRemaining": "600000000000000000000000",
"creditIssuanceClosed": false
}
GET /api/posting/quota
Daily posting quota for a wallet on one market (default standard). Quota keys market + address. Separate from onchain access fees.
curl -s "https://azzle.org/api/posting/quota?address=0xYOUR_WALLET" curl -s "https://azzle.org/api/posting/quota?address=0xYOUR_WALLET&market=micro"
POST /api/posting/check
Assert a wallet may post (returns quota or 429).
curl -s -X POST https://azzle.org/api/posting/check \
-H "Content-Type: application/json" \
-d '{"address":"0xYOUR_WALLET","market":"standard"}'
{
"error": "Daily posting limit reached",
"quota": { "tier": "free", "used": 3, "limit": 3, "canPost": false }
}
GET /api/poster/tasks
Tasks posted by a wallet on one market (default standard). Base RPC.
curl -s "https://azzle.org/api/poster/tasks?address=$WALLET" curl -s "https://azzle.org/api/poster/tasks?address=$WALLET&market=micro"
{
"tasks": [{
"id": "v2:standard:42",
"market": "standard",
"registryAddress": "0x…",
"state": "ACTIVE",
"totalAmountAzlWei": "500000000000000000000",
"fundedAzlWei": "500000000000000000000",
"releasedAzlWei": "0",
"worker": "0xabc…",
"settlementDigest": "0x…"
}]
}
POST /api/posting/record
Increment daily posting quota after an onchain post.
curl -s -X POST https://azzle.org/api/posting/record \
-H "Content-Type: application/json" \
-d '{"address":"0xYOUR_WALLET","taskId":"v2:standard:42","txHash":"0x…","taskAmountAzl":"500000000000000000000","market":"standard"}'
GET /api/posting/quote
AZL-denominated upgrade quote for a posting plan tier.
curl -s "https://azzle.org/api/posting/quote?address=0xYOUR_WALLET&tier=basic&payWith=azl&market=standard"
GET /api/posting/azl-preview
Live AZL/USD price and token amount for a plan tier checkout.
curl -s "https://azzle.org/api/posting/azl-preview?tier=basic&market=standard"
{
"tier": "basic",
"listPriceUsdc": 20,
"discountedUsd": 18,
"azlUsdPrice": 0.0042,
"azlAmount": 4285.7,
"azlAllowed": true
}
POST /api/posting/upgrade
Verify payment tx and upgrade posting tier.
curl -s -X POST https://azzle.org/api/posting/upgrade \
-H "Content-Type: application/json" \
-d '{"address":"0xYOUR_WALLET","tier":"basic","txHash":"0x…","payWith":"azl","market":"standard"}'
POST /api/role-chat
Server-side LLM proxy for the role dashboard. Requires BANKR_API_KEY on the server / not callable with a client API key on production.
{
"system": "You are an AZZLE poster assistant…",
"messages": [{ "role": "user", "content": "I need a logo design" }]
}
{ "text": "What's your deadline / ", "model": "deepseek-v4-flash" }
{ "error": "BANKR_API_KEY not configured" }
Open market
Explore live task data without writing code: azzle.org/market.
← Getting started