Account API

Settings, onboarding and the activity log. 7 ops: get_organization, update_organization, list_activity, get_onboarding, get_referral_stats, get_profile, update_profile.

Settings, onboarding and the activity log.

Get organization · POST /api/v1/get_organization · scope organization:read or GET …?input=

The organization this credential acts in (a person's own diary is their personal organization): id, slug, name, timezone (the diary day boundary) and language, and the caller's role. Call first to orient yourself; get_account adds the plan and usage.

curl -X POST https://getgutlog.com/api/v1/get_organization \  -H "Authorization: Bearer gutlog_…"

update_organization

writeowner or admin

Update organization · POST /api/v1/update_organization · scope organization:write

Change the organization's name, default timezone (IANA, e.g. Europe/Madrid: where a diary day starts and ends, reminder times) or default language (BCP 47: emails and reports). Owners and admins.

curl -X POST https://getgutlog.com/api/v1/update_organization \  -H "Authorization: Bearer gutlog_…"

List activity · POST /api/v1/list_activity · scope organization:read or GET …?input=

Every change made through the platform, newest first: who (a person, an API key, an AI agent, a worker), from which surface (dashboard, api, mcp, cli, worker, ai) and what. The audit log (list_audit_log) has the sensitive changes with their details.

curl -X POST https://getgutlog.com/api/v1/list_activity \  -H "Authorization: Bearer gutlog_…"

Get onboarding checklist · POST /api/v1/get_onboarding · scope organization:read or GET …?input=

The person's setup checklist, in order: connect their AI assistant (MCP), log a first meal, scan a barcode, log symptoms, start an elimination program. Each step has done, a one-line how-to for an agent (which op or command does it) and the dashboard path. Use it to tell a person what to do next in Gutlog.

curl -X POST https://getgutlog.com/api/v1/get_onboarding \  -H "Authorization: Bearer gutlog_…"

Acquisition by channel (staff) · POST /api/v1/get_referral_stats · scope organization:read or GET …?input=

Gutlog team only. Signups and paying organizations by first-touch acquisition channel, in total and for organizations created within the last `days`. Channels: `ref:<slug>` (a link we published with ?ref=, docs/attribution.md), `utm:<source>/<medium>`, `ai` (ChatGPT, Claude, Gemini, Perplexity, Copilot), `search`, `social`, `referral:<host>`, `direct` (landed with no referrer, ref or utm) and `unknown` (opted out with DNT/GPC, signed up on another device, or before attribution existed). Paying means a live subscription on a paid plan. Also returns `refs` (signups per ?ref= slug) and `sources` (per ref, utm_source and utm_medium). Reads every organization (the only cross-organization read besides the feedback board), returns counts only, never organization names.

curl -X POST https://getgutlog.com/api/v1/get_referral_stats \  -H "Authorization: Bearer gutlog_…"

Get my profile · POST /api/v1/get_profile · scope organization:read or GET …?input=

Your own settings, the same in every organization: `locale`, the language the dashboard and every email to you are written in (one of en), or null when you never chose one (the dashboard then follows the browser, emails are English). With an API key, the key creator's profile.

curl -X POST https://getgutlog.com/api/v1/get_profile \  -H "Authorization: Bearer gutlog_…"

Update my profile · POST /api/v1/update_profile · scope organization:write

Changes your own settings: `locale` (en) is the language of the dashboard and of every email Gutlog sends you; null forgets it. The dashboard's language picker calls this. Returns the profile.

curl -X POST https://getgutlog.com/api/v1/update_profile \  -H "Authorization: Bearer gutlog_…" \  -H "Content-Type: application/json" \  -d '{"locale":"en"}'