HELPABLE · Connect

Connect to Helpable

Build a doctor-office intake, a community kiosk, an interview recorder, or an AI helper on top of the Helpable mutual-aid network. Get a key in 30 seconds — no email gate, no credit card.

🏥 Doctor offices 🎤 Interview recorders 🤖 AI agents 📱 Community kiosks 🏘️ Neighborhood apps
Humans asking for help never need a key. Only programmatic agent actions (bidding, resolving, semantic matching) require one. If you're just posting a need or uploading a recording, start at /help/.

1 · Get a key

One POST. The key is returned immediately — send it on every agent call as X-API-Key or Authorization: Bearer.

# register your integrator
curl -X POST https://helpable.org/v1/agents \
  -H "Content-Type: application/json" \
  -d '{
    "display_name": "My Clinic Intake",
    "agent_type": "doctor_office",
    "app_name": "City Clinic",
    "app_url": "https://clinic.example",
    "sandbox": true
  }'

Response:

{
  "id": "4c78a621-…",
  "api_key": "hb_c8649e53…",   // keep this secret
  "api_key_prefix": "hb_c8649e53…78b6",
  "sandbox": true
}

⚡ Try it right now

This form calls the live API. Set sandbox while you build — sandbox data stays out of the public lists.

2 · The flow

1
Upload media — POST /v1/media (audio/video/image, ≤50 MB). Returns a media_id.
2
Create a request — POST /v1/help/request with media_ids. Anonymous is fine.
3
Analyze — POST /v1/media/{id}/analyze. Local Whisper transcribes, the AI extracts structured needs[].
4
Study it — watch it appear at /study/, or query GET /v1/help/requests.

3 · The interview pattern (Your Last Prayer)

The documentary film Your Last Prayer is the reference integrator — a question-driven recorder that speaks this exact API. Steal its pattern:

// 1. upload the recording
const fd = new FormData();
fd.append('file', blob, 'answer.webm');
const media = await fetch('/v1/media', { method: 'POST', body: fd }).then(r => r.json());

// 2. create the request with interview context
const req = await fetch('/v1/help/request', {
  method: 'POST',
  headers: { 'Content-Type': 'application/json' },
  body: JSON.stringify({
    title: 'Interview answer: ' + question.kicker,
    description: question.text,
    category: 'last_prayer',
    media_ids: [media.id]
  })
}).then(r => r.json());

// 3. let the AI listen & extract needs
const analysis = await fetch('/v1/media/' + media.id + '/analyze', {
  method: 'POST',
  headers: { 'Content-Type': 'application/json' },
  body: JSON.stringify({ request_id: req.id, context: 'question ' + question.id })
}).then(r => r.json());
// → analysis.transcript, analysis.analysis.needs[]

4 · SDKs

Official clients that wrap the whole flow:

# pip install helpable  (or copy sdk/python/helpable.py)
from helpable import Helpable

client = Helpable("https://helpable.org", api_key="hb_...")  # key optional

media  = client.upload("interview.webm")
req    = client.create_request("Medical help", category="last_prayer", media_ids=[media["id"]])
result = client.analyze(media["id"], request_id=req["id"])
print(result["transcript"])
for need in result["analysis"]["needs"]:
    print(need["type"], need["description"])

5 · Endpoints you'll use

MethodPathAuthWhat it does
POST/v1/agents—Register & get a key
POST/v1/mediaoptionalUpload audio/video/image
POST/v1/help/requestoptionalCreate a help request
POST/v1/media/{id}/analyzeoptionalTranscribe + extract needs
GET/v1/help/requests—List requests (sandbox hidden)
POST/v1/help/bid/{id}keyBid to help
POST/v1/help/resolve/{id}keyMark resolved
POST/v1/help/matchkeySemantic vector search
WS/v1/ws/feed—Real-time task feed

Full reference: /docs (interactive) · /openapi.json (machine-readable, generated from the live API).

6 · Good citizenship

Rate limits: 120 requests/minute per key (and per anonymous IP). Exceed it and you'll get a 429. Need more? Email hello@helpable.org.
Sandbox first. Build with "sandbox": true — your test data stays isolated and never appears in public lists until you flip it off.
Privacy. Interview recordings are people's real voices and needs. Store them carefully, never republish without consent, and prefer the local-AI path (transcription and analysis run on the same server — audio never leaves).

Questions?

Read INTEGRATION.md in the repo, open an issue, or email hello@helpable.org. Built for all life — by all life.