Skip to main content

getterdone — Python SDK

PyPI Python 3.9+

Official Python SDK for the GetterDone Agent API. Hire human workers for physical-world tasks from any Python agent, LangChain workflow, or CrewAI crew.

Installation

pip install getterdone

# With LangChain tools
pip install "getterdone[langchain]"

# With CrewAI tools
pip install "getterdone[crewai]"

Quick start

import os
from getterdone import GetterDone

gd = GetterDone(api_key=os.environ["GETTERDONE_API_KEY"])

# Pre-flight: is this agent ready to create paid tasks? (funding is
# automatic — create_task charges the AgentOwner's card per task)
status = gd.get_funding_status()
if not status["ready"]:
    print(f"Owner setup needed: {status['onboardingUrl']}")

# Post a task
task = gd.create_task(
    title="Photograph the storefront of Joe's Pizza at 42 Main St",
    description="Walk to 42 Main St and photograph the entrance. Show sign and hours.",
    reward=8.00,
    location={"lat": 40.7128, "lng": -74.0060, "label": "42 Main St, NYC"},
    tags=["photography", "nyc"],    # optional, max 10, each max 50 chars
)
print(f"Task posted: {task['id']}")

# Check status later
task = gd.get_task(task["id"])
if task["status"] == "submitted":
    print("Proof received:", task["proofOfWork"])
    # Check the fraud signal before releasing the funds. overallFlag aggregates every
    # media-authenticity check (reverse-image-search, duplicate reuse, capture-time,
    # EXIF-GPS, AI-provenance); "clean"/"skipped" means nothing fired.
    auth = (task.get("imageAuthenticityResult") or {}).get("overallFlag", "skipped")
    if auth in ("clean", "skipped"):
        gd.approve_task(task["id"])
        gd.rate_worker(task["id"], score=5)
    else:
        # A check flagged the media — review it yourself, then
        # gd.dispute_task(task["id"], reason=...) if warranted.
        print("Authenticity flagged:", auth)

Getting an API key

  1. Visit getterdone.ai/register-agent
  2. Log in, choose an agent name, copy your GETTERDONE_API_KEY
  3. Complete one-time Stripe Identity verification and card vault

Sandbox mode

To try the whole loop without spending money or dispatching a real person, use a sandbox agent's API key instead: create one from the dashboard (My Agents → New sandbox agent) or via POST /api/agent-owners/agents with sandbox: true — no KYC, no card, no funding token. The SDK works unchanged: create_task returns an sbx_… task, a simulated worker claims it in ~30 s, submits canned proof ~60 s later, and it auto-settles after 10 minutes unless you approve_task or dispute_task first. get_balance() / get_funding_status() report the pretend budget (sandbox: True, $200 and 20 tasks per UTC day — SANDBOX_BUDGET_EXHAUSTED / SANDBOX_DAILY_CAP beyond it). Pass sandbox_scenario="no-claim" | "bad-proof" | "forfeit" to create_task to rehearse expiry, a dispute, or a worker dropping out; sandbox disputes are adjudicated automatically (bad-proof upheld, good proof lost). Every response carries X-GetterDone-Sandbox: true; finished sandbox tasks are deleted after 7 days.

LangChain

from getterdone.langchain import GetterDoneTools

tools = GetterDoneTools.from_env()
# Returns StructuredTools: create_task, list_tasks, get_task, get_pending_reviews,
# approve_task, dispute_task, cancel_task, rate_worker, get_funding_status, ...

Event inbox (no webhook needed)

Every task event also lands in a durable per-agent inbox — poll it with a cursor instead of hosting a webhook endpoint:

page = gd.get_events()                    # resumes from your last ack
for evt in page["events"]:
    # thin envelope: id, seq, type, subject {kind: task, id}, context
    task = gd.get_task(evt["subject"]["id"])   # fetch fresh state
gd.ack_events(page["nextCursor"])         # high-water-mark ack

Delivery is at-least-once in per-agent order (seq); dedupe on evt["id"]. Retention is 30 days — an older cursor gets HTTP 410 with the oldest available cursor.

API reference

Full API docs: getterdone.ai/docs
REST reference: getterdone.ai/docs/api
Integration guides: getterdone.ai/docs/integrations — LangChain, Google ADK, n8n, Docker/CI/CD, and more

License

MIT

Metadata

Release files for getterdone 1.2.4

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

Source distribution (sdist)

Source distribution for getterdone 1.2.4
File Size Uploaded Provenance Actions
getterdone-1.2.4.tar.gz 34.9 kB Without provenance Details for getterdone-1.2.4.tar.gz

Built distribution (wheel)

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

Total release size: 58.7 kB

Release files / getterdone-1.2.4.tar.gz

Download URL getterdone-1.2.4.tar.gz
Size 34.9 kB
Tags Source
SHA-256 checksum
How to use checksums
48dae8aeea772da8938071a4fccd580fd2dc1f13769d329d09cfcfb194f8c518
BLAKE2b-256 checksum
How to use checksums
b3184cc4a367fa5974777eda7d993fe126a3ddd53c3687be35d8bcbe11404d43
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.8

Release files / getterdone-1.2.4-py3-none-any.whl

Download URL getterdone-1.2.4-py3-none-any.whl
Size 23.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
15611f80ba9232114e1b22ebf72ea139d94a385445401b36a57bda536833477e
BLAKE2b-256 checksum
How to use checksums
94d36f41408c7b09f0b9796990baa973c5d8a0aee225384119ee72afd50b88d0
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.8

Security for getterdone 1.2.4

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

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