đ ī¸ SDKs & Integrations
Get from zero to your first task in 3 lines. Pick your platform:
pip install eagent
from eagent import EAgent
client = EAgent(api_key="eak_live_xxx")
task = client.create_task(
type="captcha",
title="Solve CAPTCHA",
description="Solve it at https://example.com",
max_payout=3.00,
)
result = client.wait_for_completion(task.id)
print(result.data)npm install @eagent/sdk
import { EAgent } from '@eagent/sdk';
const client = new EAgent({ apiKey: 'eak_live_xxx' });
const task = await client.createTask({
type: 'captcha',
title: 'Solve CAPTCHA',
description: 'Solve it at https://example.com',
maxPayout: 3.00,
});
const result = await client.waitForCompletion(task.id);
console.log(result.data);// Add to claude_desktop_config.json:
{
"mcpServers": {
"eagent": {
"command": "npx",
"args": ["@eagent/mcp-server"],
"env": {
"EAGENT_API_KEY": "eak_live_xxx"
}
}
}
}
// Then ask Claude: "Use eAgent to solve this CAPTCHA"# Install the skill:
/skill install eagent
/config skills.entries.eagent.apiKey eak_live_xxx
# Then just ask your agent:
"Solve the CAPTCHA at https://example.com"
"Call +1-555-0123 and confirm my appointment"
"Take a photo of the storefront at 123 Main St"LangChain, CrewAI, AutoGPT, or raw API calls â eAgent works with anything that can make HTTP requests. See our GitHub examples for framework-specific integrations.
đ Authentication
All authenticated endpoints require an API key via the X-API-Key header. Generate keys from your Organization Dashboard â API Keys.
Keys are prefixed with eak_live_ for production and eak_test_ for sandbox. Keep them secret â treat them like passwords.
# Include in every authenticated request
curl https://eagent.io/api/v1/tasks \
-H "X-API-Key: eak_live_abc123def456"/api/v1/tasksđ Auth requiredTry it âCreate Task
Create a new task for human workers. The task enters PENDING status and is matched to available workers based on category and location.
Parameters
typestringREQUIREDTask type identifierinstructionstringREQUIREDClear instructions for the worker (3-2000 chars)budgetnumberREQUIREDPayment amount in USDCcategory_idnumberREQUIREDTask category ID (see GET /categories)locationobject{ lat, lng, radius_km } for location-based tasksdeadlinestringISO 8601 deadline (default: 24h from now)metadataobjectArbitrary key-value pairs for your referenceError Codes
curl -X POST https://eagent.io/api/v1/tasks \
-H "X-API-Key: eak_live_abc123" \
-H "Content-Type: application/json" \
-d '{
"type": "photo_verification",
"instruction": "Take a photo of the storefront at 123 Main St",
"budget": 15.00,
"category_id": 1,
"location": {"lat": 40.7128, "lng": -74.0060, "radius_km": 5},
"deadline": "2026-02-23T12:00:00Z",
"metadata": {"order_id": "ord_456"}
}'{
"id": "tsk_8f3a2b1c",
"type": "photo_verification",
"status": "PENDING",
"instruction": "Take a photo of the storefront at 123 Main St",
"budget": 15.00,
"category_id": 1,
"location": {"lat": 40.7128, "lng": -74.0060, "radius_km": 5},
"deadline": "2026-02-23T12:00:00Z",
"metadata": {"order_id": "ord_456"},
"created_at": "2026-02-22T00:00:00Z"
}/api/v1/tasksđ Auth requiredTry it âList Tasks
List all tasks for your organization with optional filters and pagination.
Parameters
statusstringFilter: PENDING, MATCHED, IN_PROGRESS, COMPLETED, CANCELLEDcategory_idnumberFilter by categoryfromstringISO 8601 start datetostringISO 8601 end datepagenumberPage number (default: 1)limitnumberResults per page (max: 100, default: 20)Error Codes
curl "https://eagent.io/api/v1/tasks?status=COMPLETED&page=1&limit=10" \
-H "X-API-Key: eak_live_abc123"{
"tasks": [
{
"id": "tsk_8f3a2b1c",
"type": "photo_verification",
"status": "COMPLETED",
"instruction": "Take a photo of the storefront at 123 Main St",
"budget": 15.00,
"category_id": 1,
"created_at": "2026-02-21T12:00:00Z",
"completed_at": "2026-02-21T14:30:00Z"
}
],
"pagination": { "page": 1, "limit": 10, "total": 42, "pages": 5 }
}/api/v1/tasks/:idđ Auth requiredTry it âGet Task Detail
Retrieve full details of a specific task including submission data and evidence.
Error Codes
curl https://eagent.io/api/v1/tasks/tsk_8f3a2b1c \
-H "X-API-Key: eak_live_abc123"{
"id": "tsk_8f3a2b1c",
"type": "photo_verification",
"status": "COMPLETED",
"instruction": "Take a photo of the storefront at 123 Main St",
"budget": 15.00,
"category": { "id": 1, "name": "Photo Verification", "slug": "photo-verification" },
"location": { "lat": 40.7128, "lng": -74.0060, "radius_km": 5 },
"worker": { "id": "wkr_xyz", "rating": 4.9, "tasks_completed": 312 },
"submission": {
"id": "sub_abc",
"result_data": { "verified": true, "photo_url": "https://cdn.eagent.io/ev/..." },
"notes": "Storefront confirmed, sign matches",
"submitted_at": "2026-02-21T14:30:00Z",
"duration_sec": 1800
},
"evidence": [
{ "id": "ev_1", "type": "PHOTO", "url": "https://cdn.eagent.io/ev/storefront.jpg" }
],
"created_at": "2026-02-21T12:00:00Z",
"completed_at": "2026-02-21T14:30:00Z"
}/api/v1/tasks/:idđ Auth requiredTry it âCancel Task
Cancel a pending task. Only works for tasks with PENDING status. Budget is refunded to your account.
Error Codes
curl -X DELETE https://eagent.io/api/v1/tasks/tsk_8f3a2b1c \
-H "X-API-Key: eak_live_abc123"{
"id": "tsk_8f3a2b1c",
"status": "CANCELLED",
"refunded": true,
"refund_amount": 15.00
}/api/v1/tasks/:id/acceptđ Auth requiredInternalTry it âAccept Task
Worker accepts a matched task. Internal endpoint â used by the eAgent worker app, not by API consumers.
Error Codes
curl -X POST https://eagent.io/api/v1/tasks/tsk_8f3a2b1c/accept \
-H "Authorization: Bearer <worker_token>"{
"id": "tsk_8f3a2b1c",
"status": "IN_PROGRESS",
"accepted_at": "2026-02-21T13:00:00Z",
"sla_deadline": "2026-02-21T15:00:00Z"
}/api/v1/tasks/:id/submitđ Auth requiredInternalTry it âSubmit Evidence
Worker submits task completion evidence. Internal endpoint â used by the eAgent worker app.
Parameters
result_dataobjectREQUIREDStructured result datanotesstringWorker notes about the taskevidencearrayArray of { type, url } evidence itemsError Codes
curl -X POST https://eagent.io/api/v1/tasks/tsk_8f3a2b1c/submit \
-H "Authorization: Bearer <worker_token>" \
-H "Content-Type: application/json" \
-d '{
"result_data": {"verified": true, "photo_url": "https://..."},
"notes": "Confirmed storefront sign",
"evidence": [{"type": "PHOTO", "url": "https://cdn.eagent.io/ev/img.jpg"}]
}'{
"id": "tsk_8f3a2b1c",
"status": "SUBMITTED",
"submission": {
"id": "sub_abc",
"result_data": {"verified": true, "photo_url": "https://..."},
"submitted_at": "2026-02-21T14:30:00Z"
}
}/api/v1/categoriesTry it âList Categories
Get all available task categories. Public endpoint â no authentication required.
curl https://eagent.io/api/v1/categories{
"categories": [
{
"id": 1,
"name": "Photo Verification",
"slug": "photo-verification",
"description": "Verify a location or item via photo evidence",
"group": "VERIFICATION",
"min_price": 5.00,
"max_price": 500.00,
"avg_completion_min": 45,
"workers_available": 1284
},
{
"id": 2,
"name": "CAPTCHA Solving",
"slug": "captcha-solving",
"description": "Solve CAPTCHAs and verification challenges",
"group": "DIGITAL",
"min_price": 0.50,
"max_price": 5.00,
"avg_completion_min": 2,
"workers_available": 8421
}
],
"total": 100
}đ Webhooks
Configure webhook URLs in your dashboard to receive real-time notifications when task status changes. We send POST requests with a JSON body and an X-Webhook-Signature header for verification.
Events
task.matchedA worker has been assigned to your task
task.completedTask completed, evidence available
task.failedTask failed (expired, worker abandoned)
task.disputedTask result disputed, under review
// Webhook payload example (task.completed)
{
"event": "task.completed",
"task_id": "tsk_8f3a2b1c",
"status": "COMPLETED",
"timestamp": "2026-02-21T14:30:00Z",
"data": {
"submission_id": "sub_abc",
"result_data": { "verified": true, "photo_url": "https://..." },
"duration_sec": 1800,
"worker_rating": 4.9
}
}Signature Verification
import hmac, hashlib
def verify_webhook(payload: bytes, signature: str, secret: str) -> bool:
expected = hmac.new(
secret.encode(),
payload,
hashlib.sha256
).hexdigest()
return hmac.compare_digest(f"sha256={expected}", signature)đ° x402 Payments
eAgent supports the x402 protocol by Coinbase for HTTP-native payments. AI agents can pay for tasks directly via HTTP headers â no wallet integration needed.
How It Works
# Step 1: Initial request returns 402
curl -X POST https://eagent.io/api/v1/tasks \
-H "Content-Type: application/json" \
-d '{"type": "captcha", "instruction": "Solve this CAPTCHA", "budget": 0.50, "category_id": 2}'
# Response: 402 Payment Required
# Headers include x402 payment instructions:
# X-Payment-Required: true
# X-Payment-Amount: 500000 (0.50 USDC in 6 decimals)
# X-Payment-Token: 0xaf88d065e77c8cC2239327C5EDb3A432268e5831 (USDC on Arbitrum)
# X-Payment-Receiver: 0x...eagent_escrow_address
# Step 2: Retry with signed payment
curl -X POST https://eagent.io/api/v1/tasks \
-H "Content-Type: application/json" \
-H "X-PAYMENT: <signed_x402_payment_payload>" \
-d '{"type": "captcha", "instruction": "Solve this CAPTCHA", "budget": 0.50, "category_id": 2}'All USDC payments are held in an audited smart contract escrow on Arbitrum. Funds are released to workers upon task completion and verification. Platform fee (15-25%) is deducted automatically. Failed or cancelled tasks are refunded in full.
đ Task Lifecycle
Need help? Reach out at support@eagent.io or join our Discord.