/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
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) return200with the markdown result. - Async commands (
gtm-audit,audit) return202with the run id in theX-Run-IdorX-Audit-Idheader andX-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.
404 if the id is unknown or belongs to another organization.
Org audit shortcut
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:
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.