KeystoneIQ
ProductHow it worksIntegrationsPricingDocs
Sign inGet my first brief
Get my first brief

REST API reference

KeystoneIQ exposes a versioned REST API (/api/v1/*) for automation: Zapier, Make, custom scripts, and internal tools. Use it to read briefs, enqueue deal brief jobs, and add intelligence to your workspace.

Who can use it

RequirementDetails
PlanGrowth or Pro (paid) — API keys and /api/v1/* are not available on the Free plan.
KeysCreate and revoke keys in the app: Developer in the left sidebar (workspace owners only).
ScopeEvery request is scoped to the workspace tied to the API key. There is no cross-workspace access.

If the workspace is on Free, protected routes return 402 with upgrade_required: true.

Base URL

Use your production app host (replace with your deployment):

https://YOUR_APP_DOMAIN

Example full paths:

GET  https://YOUR_APP_DOMAIN/api/v1/briefs
POST https://YOUR_APP_DOMAIN/api/v1/intelligence

Production API base: https://keystoneiq.ai. For local development, use your local origin (e.g. http://localhost:3000).

Authentication

Send the API key on every request:

Authorization: Bearer sk_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

Best practices

  • Treat keys like passwords: store in a secret manager, never commit to git, never embed in client-side browser code.
  • Rotate if a key is exposed: revoke in Developer, create a new key, update Zapier/Make or your integration.
  • Only owners can create or revoke keys; team members use the product via normal login, not this Bearer API.

Capabilities overview

CapabilityMethod & pathPurpose
List briefsGET /api/v1/briefsPaginated list of brief metadata (id, type, timestamps). Optional filters.
Get briefGET /api/v1/briefs/{id}Full brief including content and content_json.
Trigger deal briefPOST /api/v1/jobs/trigger-deal-briefQueue a deal brief job for a synced deal (by deal_id or HubSpot id).
Add intelligencePOST /api/v1/intelligenceAppend structured intel (notes, recaps, evidence) linked to deals/competitors/products.

Session-only features (browser cookie auth), such as some brief feedback endpoints, are not part of this Bearer API — they are for the web app. See internal architecture docs if you need feedback/ROI APIs.


GET /api/v1/briefs

List briefs for the workspace, newest first.

Query parameters

ParameterDescription
limitOptional. Default 10, maximum 50.
typeOptional. One of: weekly, deep_research, deal_brief.
product_idOptional. UUID — limit to a single product line.

Example response

{
  "briefs": [
    {
      "id": "uuid",
      "created_at": "2025-03-10T12:00:00.000Z",
      "updated_at": "2025-03-10T12:00:00.000Z",
      "type": "weekly"
    }
  ]
}

Rate limit: 60 requests per workspace per hour (v1_briefs_list).


GET /api/v1/briefs/{id}

Fetch one brief by UUID. Returns 404 if the brief does not exist or belongs to another workspace.

Response fields include: id, created_at, updated_at, type, content, content_json.

Rate limit: 100 requests per workspace per hour (v1_briefs_get).


POST /api/v1/jobs/trigger-deal-brief

Queues a deal brief generation job for an existing deal.

Body (JSON) — provide one of:

FieldDescription
deal_idKeystoneIQ deal UUID (from CRM sync or manual deals).
hubspot_deal_idHubSpot deal ID string — the deal must already be synced into KeystoneIQ.

Example

{ "deal_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" }
{ "hubspot_deal_id": "123456789" }

Success response

{ "ok": true, "deal_id": "uuid" }

If a pending deal-brief job already exists for that deal, the API may return 200 with skipped: true and reason: "pending_deal_brief_exists" to avoid duplicate work.

Rate limit: 5 deal-brief triggers per workspace per hour (rolling window). On limit, response is 429 with Retry-After (e.g. 720 seconds).


POST /api/v1/intelligence

Adds an intelligence item (e.g. call notes, win/loss notes, competitor evidence) to the workspace.

Body (JSON)

FieldRequiredDescription
contentYesText body (trimmed; large content is capped server-side).
item_typeNodeal_note, win_note, loss_note, competitor_evidence, call_recap, or general (default).
deal_idNoUUID — must be a deal in this workspace.
competitor_idNoUUID — must be a competitor in this workspace.
product_idNoUUID — must be a product in this workspace.

Example

{
  "content": "Discovery call: prospect evaluating us vs Acme on enterprise SSO.",
  "item_type": "deal_note",
  "deal_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
}

Success response

{
  "item": {
    "id": "uuid",
    "item_type": "deal_note",
    "created_at": "2025-03-10T12:00:00.000Z"
  }
}

Rate limit: 30 requests per workspace per hour (intelligence).


Errors and HTTP status codes

StatusMeaning
200Success.
400Bad request — invalid JSON, missing required fields, invalid UUIDs.
401Missing/invalid API key or wrong Authorization format.
402API access requires Growth or Pro plan — upgrade from Settings > Billing.
404Resource not found (e.g. brief, deal, competitor not in workspace).
429Rate limit exceeded — back off and honor Retry-After when present.
500Server error — retry with backoff; contact support if persistent.

Error bodies are JSON with an error string; rate limits may include retry_after (seconds).


Automation (Zapier & Make)

For step-by-step setup (triggers, actions, troubleshooting), see Zapier & Make setup. The same API key and endpoints power those integrations.

Audit

API usage is logged for security and compliance (successful and failed calls where applicable). Revoking a key immediately stops new requests using that key.

KeystoneIQ

The core connector for your GTM stack—briefs, CRM, and competitive intel in one flow.

Product

ProductHow it worksPricingDocsSupport

Legal

PrivacyTermsCookies

© 2026 Intellibricks Inc.