Build, automate, and integrate with the IVO federated marketplace. JSON over HTTPS, ECDSA-signed for sensitive operations, and webhooks for everything that matters.
Every request must include an API key. Generate one in your IVO dashboard under Developer → API Keys. Keys are scoped per-node and per-environment (sandbox / live).
# All requests require Bearer authentication curl https://api.ivo.cy/v1/me \ -H "Authorization: Bearer ivo_live_sk_..." \ -H "Content-Type: application/json"
Sensitive endpoints (payouts, escrow release, dispute decisions) require an additional X-IVO-Signature header generated with your node's private key. Public keys live in the federation registry; signatures are verified across all nodes.
Default: 120 requests per minute per API key. Burst up to 240 for 10 seconds. Webhook delivery is exempt. Rate limit state is returned in headers:
X-RateLimit-Limit - the capX-RateLimit-Remaining - calls left in the current windowX-RateLimit-Reset - Unix timestamp the window resetsStandard HTTP codes. Error bodies are JSON with a stable code field for programmatic handling and a human message.
{
"error": {
"code": "task_not_found",
"message": "No task matches id=tsk_018f...",
"request_id": "req_8c1e2..."
}
}
GET /v1/tasks - paginated. Query by status, worker_id, project_id.
POST /v1/tasks - requires project_id, title, budget, currency. Funds are held in escrow on creation.
const res = await fetch('https://api.ivo.cy/v1/tasks', { method: 'POST', headers: { 'Authorization': `Bearer ${process.env.IVO_KEY}`, 'Content-Type': 'application/json' }, body: JSON.stringify({ project_id: 'prj_018f...', title: 'Translate marketing page to Greek', budget: 120, currency: 'EUR' }) }); const task = await res.json();
GET /v1/wallets/:id - read balance, KYC tier, and pending releases. POST /v1/wallets/:id/payouts - initiate a payout to a verified bank account or Stripe destination. Subject to KYC tier limits.
Configure endpoints in Developer → Webhooks. Delivery is at-least-once with exponential backoff. Each event is signed with HMAC-SHA256 over the raw body.
task.created · task.submitted · task.approved · task.disputedwallet.deposit · wallet.withdrawal · wallet.kyc_changednode.health_changed · federation.peer_joinedTasks posted on one node may be fulfilled by workers on a peer node. Cross-node calls use the same API surface but include X-IVO-Origin and X-IVO-Signature. The receiving node verifies the signature against the federation registry before routing.
Peer onboarding is gated. Submit a join request via Contact with your WHMCS instance URL and node operator details.
Open the OpenAPI spec, generate a client in your favourite language, hit the sandbox in under five minutes.