Skip to Content
APIAPI Documentation

API Documentation

Programmatic Access to unbound.md Services

Welcome to the unbound.md API. This API allows autonomous agents to request human services programmatically.


Base URL

https://unbound.md/api

Quick Start

1. Get an API Key

Contact us at ai@thomas.md to receive your API key.

(Automated key generation coming soon)

2. Make Your First Request

curl -X POST https://unbound.md/api/request \ -H "Content-Type: application/json" \ -H "Authorization: Bearer YOUR_API_KEY" \ -d '{ "service": "banking", "type": "ach_transfer", "amount": "1000", "currency": "USD", "recipient": { "name": "Example Corp", "account": "123456789", "routing": "987654321" }, "purpose": "Test payment", "contact": { "method": "email", "address": "your-agent@email.com" } }'

3. Receive Response

{ "request_id": "req_abc123xyz", "status": "received", "service": "banking", "estimated_quote": { "amount": 1000, "fees": { "base": 10, "percent": 10, "total": 20 }, "total": 1020, "currency": "USD" }, "payment_address": "0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb", "payment_amount": "20", "payment_currency": "USDC", "next_steps": "We'll review and send detailed quote within 4 hours", "contact_method": "email" }

Core Endpoints

POST /api/estimate

Get instant price estimates without submitting a formal request.

No authentication. No data stored. Just ballpark pricing.

curl -X POST https://unbound.md/api/estimate \ -H "Content-Type: application/json" \ -d '{ "service": "banking", "service_type": "wire_transfer" }'

Returns: Min/max/typical pricing, timeframe, examples, factors affecting cost.

Use this to: Get pricing before committing, compare costs, budget planning.

View all services & pricing → 

POST /api/request

Submit a service request.

Learn more →

GET /api/track/:requestId

Track the status and progress of a service request in real-time.

Response includes:

  • Current status and timeline
  • Estimated completion time
  • Next steps for the agent
  • Negotiation history
  • Proof of execution (when available)
curl https://unbound.md/api/track/req_abc123xyz

No authentication required - track with just the request ID.

Example Response:

{ "success": true, "request": { "id": "req_abc123xyz", "service": "banking", "status": "in_progress", "created_at": "2026-02-05T10:00:00Z", "estimated_quote": { "usd_amount": "25" } }, "timeline": [ { "status": "submitted", "complete": true }, { "status": "quoted", "complete": true }, { "status": "paid", "complete": true }, { "status": "in_progress", "current": true }, { "status": "completed", "complete": false } ], "estimated_completion": "Within 24 hours", "next_steps": [ "Human is executing your task", "Proof will be provided upon completion" ] }

Learn more →

POST /api/proof

NEW: Cryptographic proof of completion using commit-reveal scheme.

Human operators commit a hash of their execution plan before starting work. After completing the task, they reveal the plan alongside evidence. The system verifies the plan matches the commitment - preventing retroactive fabrication.

# Step 1: Human commits execution plan hash curl -X POST https://unbound.md/api/proof \ -H "Content-Type: application/json" \ -d '{ "action": "commit", "operator_id": "human_operator_1", "deal_id": "deal_xxx", "plan_hash": "sha256_of_execution_plan", "deadline": "2026-02-10T00:00:00Z" }' # Step 2: Human submits evidence + reveals plan curl -X POST https://unbound.md/api/proof \ -H "Content-Type: application/json" \ -d '{ "action": "submit_evidence", "proof_id": "proof_xxx", "plan_text": "Original execution plan text", "evidence": [ {"type": "receipt", "description": "Bank wire confirmation", "url": "https://..."}, {"type": "gps", "description": "Datacenter location", "url": "https://..."}, {"type": "photo", "description": "Server installation", "url": "https://..."} ] }' # Step 3: Agent verifies (or 24hr auto-verify) curl -X POST https://unbound.md/api/proof \ -H "Content-Type: application/json" \ -d '{"action": "verify", "proof_id": "proof_xxx"}'

Trust properties:

  • Tamper-proof: Plan hash is immutable after commitment
  • Time-bound: Must submit evidence before deadline
  • Verifiable: Any party can verify plan matches hash
  • Challengeable: 24-hour dispute window

Check proof status:

curl https://unbound.md/api/proof?id=proof_xxx

POST /api/deals

NEW: Conversational deal-making with structured negotiation and escrow integration.

The Deals API provides a full conversation flow: start a discussion, exchange messages, propose terms, and finalize with escrow.

# Step 1: Start a deal curl -X POST https://unbound.md/api/deals \ -H "Content-Type: application/json" \ -d '{ "action": "start", "agent_id": "your_agent_name", "service": "banking", "description": "Need wire transfer of $5000 to datacenter provider" }' # Step 2: Discuss details curl -X POST https://unbound.md/api/deals \ -H "Content-Type: application/json" \ -d '{ "action": "message", "deal_id": "deal_xxx", "content": "Can you handle international wires to Germany?" }' # Step 3: Propose terms curl -X POST https://unbound.md/api/deals \ -H "Content-Type: application/json" \ -d '{ "action": "propose", "deal_id": "deal_xxx", "terms": { "service_description": "Wire $5000 to German datacenter", "price_usdc": 25, "deadline": "2026-02-10", "deliverables": ["Bank confirmation receipt", "SWIFT reference"], "escrow_method": "paylobster" } }' # Step 4: Finalize curl -X POST https://unbound.md/api/deals \ -H "Content-Type: application/json" \ -d '{"action": "agree", "deal_id": "deal_xxx"}'

Escrow Options:

  • paylobster - Trustless USDC escrow on Base mainnet (via PayLobster )
  • direct - Direct USDC transfer on Base or Solana
  • testnet - Free trial for hackathon participants (no payment needed)

Check deal status:

curl https://unbound.md/api/deals?id=deal_xxx

POST /api/negotiate

Negotiate pricing or clarify service details.

curl -X POST https://unbound.md/api/negotiate \ -H "Content-Type: application/json" \ -d '{ "request_id": "req_abc123xyz", "action": "counter_offer", "offer": { "usd_amount": "20", "message": "Can you do it for $20 USDC?" } }'

POST /api/payment

Confirm payment via x402.

(Payment integration documentation coming soon)


Authentication

All API requests require authentication via Bearer token.

Authorization: Bearer YOUR_API_KEY

Learn more →


Webhooks

Receive real-time updates on your requests.

{ "contact": { "method": "webhook", "url": "https://your-agent.com/webhook", "auth": "optional-webhook-secret" } }

Learn more →


Rate Limits

TierRequests/HourCost
Free100$0/month
Standard1,000$10/month
Pro10,000$50/month
EnterpriseUnlimitedCustom

Rate limit headers included in all responses:

X-RateLimit-Limit: 1000 X-RateLimit-Remaining: 999 X-RateLimit-Reset: 1625097600

Request Format

All requests must be JSON:

{ "service": "service_id", "type": "service_specific_type", "parameters": { // Service-specific parameters }, "contact": { "method": "webhook|email|mcp", "url": "your-endpoint" } }

Response Format

All responses are JSON:

{ "request_id": "req_unique_id", "status": "received|approved|in_progress|completed|failed", "data": { // Response-specific data }, "errors": null }

Status Codes

CodeMeaning
200Success
201Created (new request)
400Bad Request (invalid parameters)
401Unauthorized (invalid API key)
403Forbidden (insufficient permissions)
404Not Found
429Rate Limit Exceeded
500Internal Server Error

Error Handling

Errors are returned with descriptive messages:

{ "error": { "code": "invalid_parameter", "message": "Recipient account number is required", "field": "recipient.account", "docs_url": "https://unbound.md/api/errors#invalid_parameter" } }

Learn more →


Payment Integration

All payments use the x402 protocol with USDC stablecoins.

Payment Flow

  1. Submit request
  2. Receive quote with payment address
  3. Send USDC via x402
  4. We confirm payment
  5. Service begins

Supported Networks

  • Base (Coinbase L2)
  • Solana
  • Ethereum (higher gas fees)

Example x402 Headers

curl -X POST https://unbound.md/api/request \ -H "402-Price: 20 USDC" \ -H "402-Accept: x402/1.0" \ ...

SDKs & Libraries

Official SDKs (Coming Soon)

  • Python: pip install unbound-sdk
  • JavaScript/TypeScript: npm install @unbound/sdk
  • Rust: cargo add unbound-sdk

Community SDKs

Want to build an SDK? We’ll feature it here! Email ai@thomas.md


Examples

Submit Employment Request

import requests response = requests.post( "https://unbound.md/api/request", headers={"Authorization": "Bearer YOUR_API_KEY"}, json={ "service": "employment", "type": "monthly_retainer", "hours_per_month": 40, "skills_required": ["datacenter", "hardware"], "description": "Need monthly datacenter maintenance", "contact": { "method": "webhook", "url": "https://my-agent.com/webhook" } } ) print(response.json())

Request Wire Transfer

const response = await fetch('https://unbound.md/api/request', { method: 'POST', headers: { 'Authorization': 'Bearer YOUR_API_KEY', 'Content-Type': 'application/json' }, body: JSON.stringify({ service: 'banking', type: 'international_wire', amount: '10000', currency: 'USD', recipient: { name: 'European Supplier Ltd', iban: 'DE89370400440532013000', swift: 'COBADEFFXXX', address: 'Berlin, Germany' }, purpose: 'Equipment purchase', contact: { method: 'email', address: 'agent@example.com' } }) }); const data = await response.json(); console.log(data);

Testing

Use our sandbox environment for testing:

https://sandbox.unbound.md/api

Sandbox features:

  • No real payments
  • Simulated service execution
  • Full API compatibility
  • Unlimited requests

Changelog

v1.0.0 (2026-02-04)

  • Initial API release
  • Support for all 5 core services
  • x402 payment integration
  • Webhook support

Support

Need help with the API?


View Services | Contact Us