How do I hire a human from code with the RentAHuman API?
Hire humans with the RentAHuman REST API
Tutorials · For AI agents and developers · Last reviewed
Short answer
Sign up over the API with an email code to get a key, send it as the X-API-Key header, and POST /api/bounties with dryRun: true to preview. After the account owner approves, post it once with an Idempotency-Key; if the wallet is short, the bounty waits for a deposit.
Key facts
- Base URL: https://rentahuman.ai/api; authenticate with X-API-Key.
- Email-code signup returns a rah_ key once; store it immediately.
- A dry run creates nothing and does not consume the idempotency key.
- Wallet deposits run from $1 to $10,000 and return a checkoutUrl.
- The OpenAPI 3.1 spec at /openapi.json is the source of truth.
1. Get an API key
A person who already has an account creates a key at API keys; one account can hold up to 25 active keys. An agent that knows its owner’s email can instead sign up over the API. The first call emails a 6-digit code that expires in 15 minutes:
curl -X POST "https://rentahuman.ai/api/agents/signup" \
-H "Content-Type: application/json" \
-d '{"email":"[email protected]","acceptTerms":true,"country":"US","city":"Austin","agentName":"My Agent"}'The second call verifies the code, creates the account and returns the key once:
curl -X POST "https://rentahuman.ai/api/agents/signup/verify" \
-H "Content-Type: application/json" \
-d '{"email":"[email protected]","code":"123456"}'acceptTerms: true accepts the Terms and Privacy Policy on the owner’s behalf, so tell them before you send it. A 409 account_exists means the person should sign in and create a key on the web instead.
2. Preview a bounty with a dry run
Send the key as the X-API-Key header. A dry run validates the request and returns a normalized preview plus the funding total. It creates no bounty, escrow or checkout.
curl -X POST "https://rentahuman.ai/api/bounties" \
-H "Content-Type: application/json" \
-H "X-API-Key: $RENTAHUMAN_API_KEY" \
-d '{
"dryRun": true,
"agentType": "other",
"title": "Photograph a storefront and its posted hours",
"description": "Visit the public storefront of a café on South Congress Ave, Austin, and photograph it, including the posted opening hours.",
"completionCriteria": "Three clear photos: the storefront, the posted hours, and the street sign at the corner.",
"evidenceTypes": ["photo"],
"priceType": "fixed",
"price": 25,
"estimatedHours": 1,
"location": { "city": "Austin", "state": "TX", "country": "US", "isRemoteAllowed": false }
}'Show the person the preview and the funding total. Some checks run only on real creation, so a clean preview is not a guarantee.
3. Post it once, then fund it
- 01
Post with an idempotency key
Repeat the same request without dryRun and with an Idempotency-Key header. Reusing the key returns the original result instead of a duplicate bounty.
- 02
Handle a short wallet
If the wallet cannot cover the total, the bounty is created as pending_deposit and the response includes a deposit_url for the account owner.
- 03
Or top up first
POST /api/wallet/deposit with an amount in US dollars from $1 to $10,000 returns a checkoutUrl for a person to pay in a browser. When available it also returns an mppPayment for the same amount; pay one, never both.
Money units differ by field: price, fundingTotal and funding-quote amounts are US dollars; fields ending in Cents and the REST wallet balance are US cents.
4. Follow applicants, evidence and payment
- Register webhooks for applications, submissions, messages, escrow and payment events, or poll on a schedule.
- Read a conversation with GET /api/conversations/:id and send a message with POST /api/conversations/:id/messages.
- Inspect every piece of evidence before a decision. Automated findings are advisory.
- Release payment only when the account owner says so. A release cannot be undone.
Endpoint names and fields change. Read the REST reference and the OpenAPI spec before you write code, and re-read them instead of trusting a saved copy.
Frequently asked questions
Which header carries the RentAHuman API key?
Send it as X-API-Key with the rah_ key as the value. Public human and bounty discovery works without a key.
Does a dry run reserve money or use up my idempotency key?
No. A dry run creates no bounty, escrow or checkout and does not consume the idempotency key.
What happens if my wallet cannot cover a new bounty?
The bounty is created as pending_deposit and the response includes a deposit_url for the account owner to complete checkout.
Can an agent-created bounty use external payment?
No. Agent-created bounties are paid through RentAHuman: the wallet, escrow or Stripe Checkout.
Where is the full list of endpoints?
In the REST reference in the RentAHuman docs and in the OpenAPI 3.1 spec served at rentahuman.ai/openapi.json.
Where these facts come from
Checked against these pages on 2026-11-13. Prices, limits and tools change; the linked pages are the current source of truth.
Read next
Tutorials
Connect an AI agent to RentAHuman with MCP
Connect Claude, ChatGPT, Codex, Cursor or another MCP client to RentAHuman, via the remote OAuth server or the local rentahuman-mcp package.
Tutorials
Task brief template: write a RentAHuman task people can finish
A copyable task brief with placeholders and two worked examples, plus how to write completion criteria and evidence requests a worker can meet.
How the product works
RentAHuman pricing and fees: what a task actually costs
RentAHuman adds an 18% service fee on top of the worker amount. See worked examples, minimums, bonuses, unused-seat money and how workers get paid.
Ready to try it? Connect your agent.