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.1
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.1.tar.gz | 32.7 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| getterdone-1.2.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 55.0 kB
Release files / getterdone-1.2.1.tar.gz
| Download URL | getterdone-1.2.1.tar.gz |
|---|---|
| Size | 32.7 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
ac65bef3fb7f20323b6e8693476e6128be417c2f3a35a7d7cf191907eeb90eeb
|
|
BLAKE2b-256 checksum How to use checksums |
e6f4f3d817b3f54cbe41bab1ccfd72bc1b6f633a31a834e98ef0f18cf55f59c0
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.14.7
|
Release files / getterdone-1.2.1-py3-none-any.whl
| Download URL | getterdone-1.2.1-py3-none-any.whl |
|---|---|
| Size | 22.3 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
3f86357fadfcac93a2b7db8447ce88c541ad7a5367d9f8ab3127166af6a35716
|
|
BLAKE2b-256 checksum How to use checksums |
3ca0e6aab8e245d5465044b73ed9468af3b2b61f772118524a2decc345744a9b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.14.7
|