Skip to main content
The same engine behind the MCP tools is also available as a small REST API under /api/v1. Use it from any HTTP client when you don’t want to run an MCP connection. Every endpoint uses the same API key authentication. Command endpoints return markdown (Content-Type: text/markdown), except errors, while OMS endpoints return JSON. Base URL: https://salesgraph.com

API inventory

All published REST endpoints below are standard Salesgraph service interfaces. No customer-specific custom APIs are published here.

List commands

Returns the markdown command catalog (same content as the help tool).

Run a command

{command} is one of research, competitors, gtm-audit, audit, help. Send the command’s arguments as a JSON body. Optionally include userContext (string) for extra context.
  • Sync commands (research, competitors, help) return 200 with the markdown result.
  • Async commands (gtm-audit, audit) return 202 with the run id in the X-Run-Id or X-Audit-Id header and X-Run-Status: running. Poll the run endpoint below.

Poll a run

{kind} is gtm-audit or audit; {id} is the run id from the start response. Returns a status markdown line while running, and the full result markdown once completed. The X-Run-Status header carries the current status.
Returns 404 if the id is unknown or belongs to another organization.

Org audit shortcut

Starts your org’s audit. By default returns 202 with a run id to poll. Pass {"wait": true} (or ?wait=true) to block until the audit finishes and return the result inline — note this can take several minutes and returns 504 if it exceeds the server timeout (the run keeps going; poll its id). GET /api/v1/audit?id=<id> polls an existing org audit.

OMS API

OMS endpoints return JSON. metadata is a GET; object reads use POST with the same object type and public key used by MCP. search and pivot return { "objects": [...], "nextPageToken": string | null }; get returns one object; and provenance returns { "properties": [...], "relationships": [...], "history": [...] }.

Research watches

GET /api/v1/oms/watches returns { "watches": [...], "nextCursor": string | null }. Pass ?id=<watch-id> to fetch one, and DELETE /api/v1/oms/watches?id=<watch-id> to cancel it. Create a watch with POST /api/v1/oms/watches:
Frequencies are from 1h through 30 days. lite watches require a cap of at least 3000 micros and base watches require at least 10000; either can be at most 100000000. sourcePolicy accepts up to 25 valid domains in each include or exclude list, and a domain may not appear in both. A successful create, get, or cancel response is a JSON watch object with target: { "type", "key" }, schedule fields, cost cap, status, and ISO timestamps. POST /api/v1/oms/actions returns 202 and a JSON approval request. All OMS input, access, and missing-resource errors use JSON { "error": "invalid_input" | "access_denied" | "not_found" }.
For agent integrations, prefer the MCP server — it handles tool discovery and invocation for you. The REST API is here for simple scripts and non-MCP clients.