Reference

Account API

Updated 1 Oct 2026

On this page

For agents

Load this page when: you need to manage account settings, connected agents, notifications or reports over HTTP

  • Settings and agent routes need a CLI API key. OAuth connector tokens are refused on the agent routes.
  • Change settings with PATCH /user/config. Only planMode and citationBlock exist.
  • Agent changes are idempotent. Repeating one returns changed false.

These endpoints serve the settings the CLI keeps in sync across your machines.

Get your settings

GET https://heytrove.ai/api/v1/user/config

Returns your stored settings and a version number that goes up on every change. A setting you never changed is left out. The CLI fills in defaults.

Request

bash
curl https://heytrove.ai/api/v1/user/config \
  -H "Authorization: Bearer trove_your_key"

Response

json
{
  "config": { "skill": { "planMode": "smart" } },
  "configVersion": 3
}

CLI equivalent: trove config show.

Change your settings

PATCH https://heytrove.ai/api/v1/user/config

Changes settings in the skill group. Send only the keys you want to change. Unknown keys are refused.

Parameters

NameInTypeRequiredConstraintsMeaning
planModebodystringnoalways, smart, ask or offWhen the agent consults your library while it plans.
citationBlockbodystringnoon or offWhether answers carry a citation block.

Request

bash
curl -X PATCH https://heytrove.ai/api/v1/user/config \
  -H "Authorization: Bearer trove_your_key" \
  -H "Content-Type: application/json" \
  -d '{"planMode":"smart"}'

Response

json
{ "configVersion": 4 }

Errors

StatusMessageCodeFix
400Invalid JSON bodynoneSend valid JSON.
400A message that starts with the field name, such as planMode: …noneUse an allowed value.

CLI equivalent: trove config set.

Change which agents are turned off

PATCH https://heytrove.ai/api/v1/user/config/agents

Turns Trove off or on for one coding agent. The change applies to every machine you use. It needs a CLI API key.

Parameters

NameInTypeRequiredConstraintsMeaning
opbodystringyesdisable or enableWhat to do.
agentbodystringyesclaude-code, cursor, github-copilot, gemini-cli, codex or grokAgent to change.

Request

bash
curl -X PATCH https://heytrove.ai/api/v1/user/config/agents \
  -H "Authorization: Bearer trove_your_key" \
  -H "Content-Type: application/json" \
  -d '{"op":"disable","agent":"cursor"}'

Response

json
{ "disabled": ["cursor"], "configVersion": 5, "changed": true }

Repeating the call returns changed: false.

Errors

StatusMessageCodeFix
403This token cannot manage agent installs. Use a CLI API key (trove auth login) — OAuth connector tokens are limited to library and marketplace access.INSUFFICIENT_SCOPEUse an API key.
400agent: unknown agent. Supported agents: …UNKNOWN_AGENTUse a listed agent.
413Request body too largenoneSend a smaller body.
429Too many changes — wait a minute and retry.RATE_LIMITEDWait a minute.

CLI equivalent: trove setup.

Report a machine

PUT https://heytrove.ai/api/v1/user/agents

Reports which agents the CLI found on one machine. The report replaces the earlier rows for that machine. Repeating it is harmless. It needs a CLI API key.

Parameters

NameInTypeRequiredConstraintsMeaning
machineIdbodystringyes8 to 64 charactersA stable id for the machine.
hostnamebodystring or nullnoup to 255 charactersKept only while client telemetry is on.
osbodystring or nullnomacos, linux or windowsKept only while client telemetry is on.
cliVersionbodystring or nullnoup to 40 charactersCLI version.
agentsbodyarrayyesup to 14 entriesOne entry per agent.
agents[].namebodystringyes1 to 40 charactersAgent name. Unknown names are ignored.
agents[].detectedbodybooleanyesnoneThe agent was found.
agents[].installedbodybooleanyesnoneTrove is installed in it.
agents[].installTypebodystring or nullnoskill, plugin+skill or codex bundleHow it is installed.

Trove keeps at most 20 machines per account. The machines seen longest ago are dropped first.

Response

json
{ "ok": true, "machineId": "machine-0001", "agentCount": 2, "ignoredAgents": [] }

Errors

StatusMessageCodeFix
400A message that starts with the field namenoneFix the field.
403The INSUFFICIENT_SCOPE messageINSUFFICIENT_SCOPEUse an API key.
429Too many agent reports — wait a minute and retry.RATE_LIMITEDWait a minute.

List machines

GET https://heytrove.ai/api/v1/user/agents

Lists the retained machines, most recently seen first. It needs a CLI API key.

Response

json
{
  "machines": [
    {
      "machineId": "machine-0001",
      "hostname": null,
      "os": "macos",
      "cliVersion": "1.0.0",
      "lastSeenAt": "2026-10-01T09:00:00.000Z",
      "agents": [{ "name": "claude-code", "detected": true, "installed": true, "installType": "plugin+skill" }]
    }
  ]
}

List notifications

GET https://heytrove.ai/api/v1/user/notifications

Lists up to 50 notifications, newest first. The CLI uses it to tell you when a book you asked for is ready.

Parameters

NameInTypeRequiredConstraintsMeaning
unreadquerybooleannotrueOnly notifications you have not marked read.
typequerystringnoa notification type, such as gap_fulfilledOnly this type.

Request

bash
curl "https://heytrove.ai/api/v1/user/notifications?unread=true&type=gap_fulfilled" \
  -H "Authorization: Bearer trove_your_key"

Response

json
{
  "notifications": [
    { "id": "cmnote1", "type": "gap_fulfilled", "title": "…", "body": "…", "metadata": {}, "createdAt": "2026-10-01T09:00:00.000Z" }
  ]
}

Mark notifications read

POST https://heytrove.ai/api/v1/user/notifications/mark-read

Marks your own notifications as read. Ids that are not yours are ignored.

Parameters

NameInTypeRequiredConstraintsMeaning
idsbodystring arrayyesthe first 200 are usedNotifications to mark.

Request

bash
curl https://heytrove.ai/api/v1/user/notifications/mark-read \
  -H "Authorization: Bearer trove_your_key" \
  -H "Content-Type: application/json" \
  -d '{"ids":["cmnote1"]}'

Response

json
{ "ok": true, "updated": 1 }

Send a report

POST https://heytrove.ai/api/v1/report

Posts a bug report, feature request or idea to your support inbox.

Parameters

NameInTypeRequiredConstraintsMeaning
titlebodystringyes1 to 200 charactersTitle.
bodybodystringyes1 to 100,000 charactersReport text.
typebodystringnobug, feature, idea or otherReport type. Default other.

Request

bash
curl https://heytrove.ai/api/v1/report \
  -H "Authorization: Bearer trove_your_key" \
  -H "Content-Type: application/json" \
  -d '{"title":"toc fails on a large book","type":"bug","body":"Steps and output."}'

Response

json
{ "id": "cmrep123", "url": "https://heytrove.ai/support/cmrep123" }

Errors

StatusMessageCodeFix
400title is requirednoneSend a title.
400body is requirednoneSend a body.
400title exceeds 200 charactersnoneShorten it.
429Too many reports in a short window — wait a minute and retry.RATE_LIMITEDWait a minute.

CLI equivalent: trove report.

    Account API | Trove