Stakeholder, funding and messaging data for the PLI platform. JSON over HTTPS. Base URL https://localhost:8400/api.
Send Authorization: Bearer <token>. Tokens are created in Settings and carry read or read,write scope. Writes are audited under the token's name.
| Entity | Methods | Writable fields |
|---|---|---|
organisations | GET list · GET by id · POST · PATCH | name, kind, segment_id, tier, stage, prospect_type, website, charity_number, region, scope, income_gbp, reserves_gbp, fy_end, govt_funded_share, reach, core_offer, key_funders, why_relevant, suggested_ask, capacity_to_fund, summary, next_step, next_step_due, owner, source_id, archived |
people | GET list · GET by id · POST · PATCH · DELETE | org_id, name, role, email, phone, linkedin, notes, stage, is_primary, source_id, archived |
asks | GET list · GET by id · POST · PATCH · DELETE | org_id, person_id, kind, title, description, value_gbp, stage, priority, probability, next_step, due, owner, source_id |
interactions | GET list · GET by id · POST · PATCH · DELETE | org_id, person_id, ask_id, kind, occurred_at, subject, summary, body_ref, source_id |
tasks | GET list · GET by id · POST · PATCH · DELETE | title, detail, rationale, org_id, person_id, ask_id, due, status, owner, proposed_by, done_at |
messages | GET list · GET by id · POST · PATCH | kind, segment_id, title, subject, body, status |
drafts | GET list · GET by id · POST · PATCH · DELETE | org_id, person_id, ask_id, message_id, to_name, to_email, subject, body, rationale, status |
plays | GET list · GET by id · POST · PATCH · DELETE | category, title, action, cost, route, status, owner, org_id, notes, sort |
sources | GET list · GET by id · POST · PATCH | kind, title, origin, sender, received_at, status, summary, content_text, content_path, meta, ingested_at |
segments | GET list · GET by id · POST · PATCH | name, description, what_they_need, our_offer, tone, sort |
briefings | GET list · GET by id | read-only |
GET /api/{entity}?…filters list (organisations: q, kind, stage, tier, segment; asks: stage, kind, org_id; tasks: status, org_id; people: q, org_id; interactions: org_id, limit)
GET /api/{entity}/{id} one record (organisations and people return a bundle with related records)
POST /api/{entity} create (JSON body of writable fields)
PATCH /api/{entity}/{id} partial update
DELETE /api/{entity}/{id} delete where allowed
GET /api/search?q= full-text search across everything
GET /api/dashboard counts, pipeline by stage, latest briefing
GET /api/agent/run run status
POST /api/agent/run {focus?} start an agent run
GET /api/health liveness (no auth)
POST /mcp Model Context Protocol endpoint (Streamable HTTP, same bearer token)
organisation.kind charity | funder | government | prison | law_firm | community_group | press | supplier | infrastructure | internal | other organisation.stage identified | researched | planned | contacted | in_conversation | active | dormant | declined organisation.tier 1 (priority) … 4 (low) ask.kind funding | partnership | distribution | referral | endorsement | sponsorship | adoption | content | press | policy | supplier ask.stage idea | planned | approached | in_discussion | agreed | delivered | declined | parked interaction.kind email_in | email_out | draft | call | meeting | note | event | research task.status proposed | open | done | dismissed draft.status proposed | approved | in_outlook | sent | discarded source.kind email | attachment | drop_file | transcript | web | upload | manual
curl -H "Authorization: Bearer cmp_…" "https://localhost:8400/api/organisations?tier=1"
curl -H "Authorization: Bearer cmp_…" -H "content-type: application/json" -X POST https://localhost:8400/api/interactions \
-d '{"org_id":"org_…","kind":"call","subject":"Intro call","summary":"Agreed to send the one-pager."}'
Timestamps are ISO 8601 UTC. Money is integer pounds. Identifiers are opaque strings with a type prefix (org_, per_, ask_…).