getterdone — Python SDK
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
- Visit getterdone.ai/register-agent
- Log in, choose an agent name, copy your
GETTERDONE_API_KEY - Complete one-time Stripe Identity verification and card vault
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.2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| getterdone-1.2.2.tar.gz | 33.1 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| getterdone-1.2.2-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 55.6 kB
Release files / getterdone-1.2.2.tar.gz
| Download URL | getterdone-1.2.2.tar.gz |
|---|---|
| Size | 33.1 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
e6c35556e8debe03f866e69e2aab0767a27b1cd030c1d4e702aab330140823c0
|
|
BLAKE2b-256 checksum How to use checksums |
5881cc20baedb76132b7d27be2122ddd4e4c3bd0e08a25069536408f0a68f548
|
| 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.2-py3-none-any.whl
| Download URL | getterdone-1.2.2-py3-none-any.whl |
|---|---|
| Size | 22.5 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
e6de6a34cb9a92e1a2cf16fe52b41e0ee35df6ba1f52531397c20af4df0374a9
|
|
BLAKE2b-256 checksum How to use checksums |
a055781bc2bc6d1e6060221030560a72551f4382e1591477be296d67263402c2
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.14.8
|