Skip to main content

humanforai

Python client and command-line tool for Human For AI — a human endpoint for AI agents. Let your agent, pipeline, or script hire a verified human operator for tasks that need physical presence, human perception, or human judgment:

  • Real-world verification — confirm a place, product, price, or claim exists, with photo/text evidence
  • Product or app testing — a real human installs, uses, and reports
  • Human judgment and feedback — tone, clarity, trustworthiness, design quality
  • AI output review — human review before your output reaches production
  • Data collection — gathering or labeling that needs human perception or local access
  • Local physical-world tasks — visit, photograph, check, measure, observe
  • Decision escalation — a human read on a judgment call before you act
  • …and anything else a human can legally and safely do (custom_human_in_the_loop)

No API key. Free during the proof-of-concept pilot. Every task is reviewed by the human before acceptance; illegal, harmful, deceptive, unsafe, or privacy-invasive tasks are rejected. First response within 12 hours, any day of the week — typically much faster.

Zero dependencies (standard library only). Python 3.9+.

Install

pip install humanforai

With offline receipt verification (needs cryptography):

pip install "humanforai[receipt]"

Command line

humanforai services                       # the catalog with task_type identifiers
humanforai submit \
  --type real_world_verification \
  --description "Verify that [business] at [address] is open; photograph the storefront and posted hours." \
  --location "City, address or area" \
  --output-format text_report_with_photos \
  --email you@your-domain.com
humanforai status HFAI-2026-XXXXXXXXXXXXXXXX          # one look
humanforai status HFAI-2026-XXXXXXXXXXXXXXXX --watch  # poll until delivered or rejected
humanforai message --reply-to you@your-domain.com --message "Can you cover [city] next week?"
humanforai thread MSG-ID --token ACCESS_TOKEN
humanforai verify-receipt HFAI-2026-XXXXXXXXXXXXXXXX  # offline check of the signed receipt
humanforai health

Every command accepts --json for raw output. Exit codes: 0 ok, 2 usage, 3 API error, 4 the task was rejected.

No mailbox? Autonomous agents can submit with --status-poll instead of --email: the deliverable arrives as text in operator_notes on the status endpoint (budget: one such task per client per day). Keep the task_id — it is your only key to the result.

Python

from humanforai import Client, HumanForAIError

client = Client(requester="my-agent/1.0")

task = client.submit_task(
    task_type="ai_output_review",
    description="Review these 10 AI-written product descriptions for plausibility and tone; "
                "verdict + one-line reason each: [content or link].",
    output_format="structured_json",
    contact_email="you@your-domain.com",
)
print(task["task_id"], task["status_url"])

# Human review is not instant. Poll every minute or slower.
final = client.wait_for_task(task["task_id"], poll_interval=120)
print(final["status"], final.get("operator_notes"))

Errors are structured:

try:
    client.get_task("HFAI-NOPE")
except HumanForAIError as exc:
    print(exc.status, exc.error, exc.message, exc.details, exc.rate_limit)

Every response carries the standard RateLimit-* headers; the most recent set is on client.last_rate_limit. Retrying a submission with the same idempotency_key replays the original response instead of creating a duplicate.

Status transparency

get_task returns progress, not just the final state: seen_by_operator_at (the moment a human actually saw the task), eta (set on acceptance), and status_history (submitted → accepted → delivered, or rejected).

Signed receipts

Every delivered task carries receipt, a compact JWS (Ed25519) binding the deliverable's SHA-256 to the task's lifecycle timestamps. Verify it offline against the public key at https://humanforai.dev/.well-known/jwks.json:

from humanforai.receipt import verify_receipt

task = client.get_task(task_id)
payload = verify_receipt(task["receipt"], client.jwks(), deliverable_text=task["operator_notes"])

A valid receipt proves the deliverable is byte-identical to what was delivered and that it was issued by humanforai.dev. It does not prove the timestamps were witnessed by anyone else — they are the service's own signed assertion. Details: https://humanforai.dev/trust#receipts.

Other ways in

Trust, in one paragraph

You never pay, never create an account, and are never asked for credentials — a request for payment or credentials is not from this service. You send a task description and an optional contact email; the worst case is a rejected task. Deliverables are one careful human's observation with stated confidence, not guaranteed truth. New here? Send a small, checkable test task first. Full analysis: https://humanforai.dev/trust.

License

MIT

Release files for humanforai 0.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for humanforai 0.1.0
File Size Uploaded
humanforai-0.1.0.tar.gz 19.3 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for humanforai 0.1.0
File Interpreter ABI Platform
humanforai-0.1.0-py3-none-any.whl Python 3 none any Details

Total release size: 35.7 kB

Release files / humanforai-0.1.0.tar.gz

Download URL humanforai-0.1.0.tar.gz
Size 19.3 kB
Tags Source
SHA-256 checksum
How to use checksums
a2bc2449a23e055b55f8176bec94af43b9b4802e3db32a69266738a8f90233ec
BLAKE2b-256 checksum
How to use checksums
66013d6b3d01837e3fa08f50fdc062d8f5a3a28bc29ca2ae36be1d47014bf102
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.2

Release files / humanforai-0.1.0-py3-none-any.whl

Download URL humanforai-0.1.0-py3-none-any.whl
Size 16.5 kB
Tags Python 3
SHA-256 checksum
How to use checksums
3359dbed6f46e201010c7fee059da623cbf868b7f8312f0b65eae64942ae1411
BLAKE2b-256 checksum
How to use checksums
2cd104b5903e3f50eb28290eda4254fa182ff3d8bf2bb62fac05c6abfb208a99
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.2

Release history Release notifications | RSS feed

This release

0.1.0 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page