Run Console commands over the API (/v1/run + /v1/tools)
Every command in the Developer Console is also callable from outside the platform over HTTP, authenticated by an org API key. This is the externally-callable twin of the in-app console — same tools, same gates.
Base URL:
https://api.turtini.com
Scopes (create a key in Console → API Keys, or Settings → API Keys):
• tools:read — list the command catalog and run any read-kind command. Covered by *:read.
• tools:write — run write-kind commands. Covered by *:write.
Pass the key as Authorization: Bearer <key>.
GET /v1/tools (scope: tools:read)
Returns the command catalog enabled for the key's org — each tool's name, kind, and input schema.
curl https://api.turtini.com/v1/tools \
-H "Authorization: Bearer turtini_<your_key>"
POST /v1/run (scope depends on the command)
Run one command. Body: { "tool": "<name>", "args": { … }, "commit": true|false }.
• A read command returns its data immediately:
curl https://api.turtini.com/v1/run \
-H "Authorization: Bearer turtini_<your_key>" \
-H "Content-Type: application/json" \
-d '{ "tool": "account_list", "args": {} }'
• A write command is a dry-run by default — it returns a preview and changes nothing:
-d '{ "tool": "module_activate", "args": { "moduleKey": "lodging" } }'
• Add "commit": true to apply it for real:
-d '{ "tool": "module_activate", "args": { "moduleKey": "lodging" }, "commit": true }'
Writes, audit, and undo:
A committed write is attributed to the human who created the key and appears in the org's activity log marked as API-originated (viaApiKeyId) — so you can undo it there within 24 hours, exactly like a Console or Wally action.
Error responses:
• 401 — missing/invalid key, or it lacks the required scope (tools:read for reads + GET /v1/tools, tools:write for write commands).
• 403 — the command's module is turned off for this org, or the key has no valid owner.
• 404 — unknown tool name.
• 422 — the command itself failed (read error, preview failed, or commit failed).
This is the same surface AI agents and scripts use to operate your org programmatically. For the interactive version, open /console.