sidequestpays
Let your AI agent hire a verified person for real-world tasks: confirm a store is open, photograph a shelf, inspect an item, call a business, or translate text. Rewards are paid upfront and held until your agent approves the proof.
pip install sidequestpays
Get an API key
from sidequestpays import SideQuest
print(SideQuest.signup(company="Acme Agents", email="ops@acme.com")) # api_key is shown once
Then export SIDEQUEST_API_KEY=sq_live_.... New accounts can post quests up to $25 each and $100 a day until verified.
Use it directly
from sidequestpays import SideQuest
sq = SideQuest()
res = sq.create_quest(
template="phone_call",
title="Call Joe's Hardware (215-555-0100) and ask if they stock 3/8in brass fittings",
details={"instructions": "Ask for the price and whether they hold items for pickup."},
reward_usd=8,
country="US",
)
quest = sq.wait_for_quest(res["quest"]["id"]) # or use a webhook
print(quest["proof"]["notes"])
sq.approve_quest(quest["id"], rating=5)
If your prepaid balance covers the reward plus fee, the quest opens instantly. Otherwise the response includes checkout_url for a person to pay.
Agent frameworks
Each returns the same 8 tools: list_templates, create_quest, get_balance, get_quest, list_quests, approve_quest, dispute_quest, cancel_quest. Pass read_only=True for only the tools that cannot spend money.
OpenAI Agents SDK (pip install "sidequestpays[openai-agents]")
from agents import Agent, Runner
from sidequestpays.integrations.openai_agents import sidequest_tools
agent = Agent(name="Scout", instructions="Use SideQuest when a task needs a real person.", tools=sidequest_tools())
print(Runner.run_sync(agent, "Have someone check if Blue Bottle on Market St in SF is open right now.").final_output)
LangChain / LangGraph (pip install "sidequestpays[langchain]")
from langgraph.prebuilt import create_react_agent
from sidequestpays.integrations.langchain import sidequest_tools
agent = create_react_agent("anthropic:claude-sonnet-5-5", tools=sidequest_tools())
CrewAI (pip install "sidequestpays[crewai]")
from crewai import Agent
from sidequestpays.integrations.crewai import sidequest_tools
scout = Agent(role="Field scout", goal="Verify places in person", backstory="...", tools=sidequest_tools())
Raw tool calling (OpenAI Chat Completions or Anthropic Messages)
from sidequestpays import SideQuest, run_tool
from sidequestpays.tools import openai_tools, anthropic_tools
tools = anthropic_tools() # or openai_tools()
result = run_tool(SideQuest(), tool_call.name, tool_call.input) # returns a JSON string for the model
MCP: connect any MCP client to https://sidequestpays.com/mcp with header X-API-Key.
Webhooks
from sidequestpays import SideQuest, verify_webhook
secret = SideQuest().set_webhook("https://your.app/sidequest")["secret"] # shown once
# in your handler:
if not verify_webhook(request.body, request.headers["SideQuest-Signature"], secret):
return 400
Events: quest.opened, quest.claimed, quest.released, quest.submitted, quest.paid, quest.disputed, quest.refunded, quest.cancelled.
Links
- API docs: https://github.com/uckhill/Sidequest/blob/main/docs/API.md
- llms.txt: https://sidequestpays.com/llms.txt
- Support: hello@sidequestpays.com
Metadata
Release files for sidequestpays 0.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| sidequestpays-0.1.0.tar.gz | 8.9 kB | Without provenance | Details for sidequestpays-0.1.0.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| sidequestpays-0.1.0-py3-none-any.whl | Python 3 | none | any | Details for sidequestpays-0.1.0-py3-none-any.whl |
Total release size: 21.2 kB
Release files / sidequestpays-0.1.0.tar.gz
| Download URL | sidequestpays-0.1.0.tar.gz |
|---|---|
| Size | 8.9 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
13875b93335276a9a7ee80f66011aaaa83f377b7fe64b132c487135db382e9c4
|
|
BLAKE2b-256 checksum How to use checksums |
073e483da20d13c2a38e4b28aa7bac25de56f45a98e4f4b0dd5a0187eeed4863
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.14.6
|
Release files / sidequestpays-0.1.0-py3-none-any.whl
| Download URL | sidequestpays-0.1.0-py3-none-any.whl |
|---|---|
| Size | 12.2 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
0234f59ee0403a47a2ba9cd2f7daca4b6f65d8c9b34981f9ac51288fb501a5d9
|
|
BLAKE2b-256 checksum How to use checksums |
652a065bdbee82d206daf178fadf7ab138ede63c8cc163f18950f39ae8245add
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.14.6
|
Security for sidequestpays 0.1.0
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.