login
quiescence.eu
Skip to content

SDKs and tools

Small, dependency-free clients for Python and JavaScript, generated from the same OpenAPI document the API publishes, plus a Postman collection. They are deliberately thin: the API is nine endpoints and one envelope, and a client you can read in full is one you can debug.

Generated, not maintained

Both clients are produced from the published OpenAPI document, which is itself generated from the routes and the catalogue. They are small on purpose — the API is nine endpoints and one envelope, and a client you can read in an afternoon is one you can debug at midnight.

DownloadWhat it is
humanops.pyPython 3.9+. Standard library only — no requests, no dependencies.
humanops.jsES module for Node 18+ and modern browsers. Uses the platform fetch.
humanops.postman.jsonPostman / Bruno collection covering every endpoint.
humanops-examples.zipBoth clients, the collection, the quickstart script and one runnable file per agent framework — the contents of the examples repository.
openapi.jsonThe OpenAPI 3.1 document the other four are built from.

Python

from humanops import HumanOps

ho = HumanOps(api_key="ho_test_…")

quote = ho.quote("human.verify", location={"country_iso": "ES", "city_slug": "barcelona"})
print(quote["price_cents"])

task = ho.create_task(
    capability="human.verify",
    spec={"claim": "This address is a working office", "subject": "Acme SL"},
    location={"country_iso": "ES", "city_slug": "barcelona"},
    max_price_cents=20000,
)

# obeys poll_after_s; returns as soon as there is an answer
result = ho.wait_for_result(task["ref"], timeout=300)
print(result["answer"], result["confidence_bps"])

JavaScript

import { HumanOps } from './humanops.js';

const ho = new HumanOps({ apiKey: 'ho_test_…' });

const task = await ho.createTask({
  capability: 'human.verify',
  spec: { claim: 'This address is a working office', subject: 'Acme SL' },
  location: { country_iso: 'ES', city_slug: 'barcelona' },
  max_price_cents: 20000,
});

const result = await ho.waitForResult(task.ref, { timeoutMs: 300000 });
console.log(result.answer, result.confidence_bps);

Frameworks

If you are using an agent framework, reach for the MCP server rather than an HTTP client — LangChain, LlamaIndex, the OpenAI Agents SDK and n8n all speak it, and the install page carries a snippet for each.

MCP install page

The curl cookbook

One call per operation, generated from the same document. Set these two first — a ho_test_ key spends nothing, so start there.

export HO_KEY=ho_test_replace_me
export HO=https://quiescence.eu/humanops/api/v1

listCapabilities

Every capability, with its JSON Schemas, prices and live geographies

curl -s -X GET "$HO/capabilities" | jq .data

getCapability

getCapability

curl -s -X GET "$HO/capabilities/human.verify" | jq .data

getCoverage

getCoverage

curl -s -X GET "$HO/coverage" | jq .data

quoteTask

An exact price, or a refusal with alternatives

curl -s -X POST "$HO/quote" \
  -H 'Content-Type: application/json' \
  -d '{
         "capability": "human.verify",
         "location": {
             "country_iso": "ES",
             "city_slug": "barcelona"
         },
         "sla": "standard"
     }' | jq .data

listTasks

listTasks

curl -s -X GET "$HO/tasks" \
  -H "Authorization: Bearer $HO_KEY" | jq .data

createTask

Order a task

curl -s -X POST "$HO/tasks" \
  -H "Authorization: Bearer $HO_KEY" \
  -H 'Content-Type: application/json' \
  -H "Idempotency-Key: $(uuidgen)" \
  -d '{
         "capability": "human.verify",
         "spec": {
             "claim": "This address is a working office, not a mailbox",
             "subject": "Acme SL, Carrer de Balmes 200"
         },
         "location": {
             "country_iso": "ES",
             "city_slug": "barcelona"
         },
         "max_price_cents": 20000
     }' | jq .data

getTask

getTask

curl -s -X GET "$HO/tasks/$REF" \
  -H "Authorization: Bearer $HO_KEY" | jq .data

getTaskResult

getTaskResult

curl -s -X GET "$HO/tasks/$REF/result" \
  -H "Authorization: Bearer $HO_KEY" | jq .data

listTaskEvidence

listTaskEvidence

curl -s -X GET "$HO/tasks/$REF/evidence" \
  -H "Authorization: Bearer $HO_KEY" | jq .data

cancelTask

cancelTask

curl -s -X POST "$HO/tasks/$REF/cancel" \
  -H "Authorization: Bearer $HO_KEY" | jq .data

disputeTask

Say the delivered answer is wrong

curl -s -X POST "$HO/tasks/$REF/dispute" \
  -H "Authorization: Bearer $HO_KEY" \
  -H 'Content-Type: application/json' \
  -d '{}' | jq .data