Model API

Score, rank, and draft from one endpoint

Copyable preview examples to list models, run skills, search your knowledge base, and run AI enrichment.

1

auth header set

Bearer + X-Org-Id

6

model capabilities

skills, RAG, enrichment, more

REST

SDK + MCP

the same three patterns

Auth header set

Authorization: Bearer $GRAPH8_API_KEY
X-Org-Id: $GRAPH8_ORG_ID

Every call below carries this set.

01 / Pick a model

List the supported model ids.

Onboarded access

Start here. The catalog endpoint returns every model id you can pass to a skill.

GET /api/v1/skills/models
curl "$GRAPH8_API_BASE/api/v1/skills/models" \  -H "Authorization: Bearer $GRAPH8_API_KEY" \  -H "X-Org-Id: $GRAPH8_ORG_ID"
02 / Skills runtime

Create an LLM skill, then run it.

Onboarded access

A skill wraps a model and a prompt into a reusable, parameterized task. Create once, execute with inputs as many times as you like.

  1. 01 Create the skill
  2. 02 Execute with inputs
POST /api/v1/skills
curl -X POST "$GRAPH8_API_BASE/api/v1/skills" \  -H "Authorization: Bearer $GRAPH8_API_KEY" \  -H "X-Org-Id: $GRAPH8_ORG_ID" \  -H "Content-Type: application/json" \  -d '{    "name": "summarize-account",    "model": "<model-id-from-catalog>",    "prompt": "Summarize {{company}} for an AE in 3 bullets."  }'
POST /api/v1/skills/{id}/execute
curl -X POST "$GRAPH8_API_BASE/api/v1/skills/$SKILL_ID/execute" \  -H "Authorization: Bearer $GRAPH8_API_KEY" \  -H "X-Org-Id: $GRAPH8_ORG_ID" \  -H "Content-Type: application/json" \  -d '{    "inputs": { "company": "Acme Corp" }  }'
SDK JS / TS
const base = `${process.env.GRAPH8_API_BASE}/api/v1`;const headers = {  Authorization: `Bearer ${process.env.GRAPH8_API_KEY}`,  "X-Org-Id": process.env.GRAPH8_ORG_ID,  "Content-Type": "application/json",}; // 1. create an LLM skillconst skill = await fetch(`${base}/skills`, {  method: "POST",  headers,  body: JSON.stringify({    name: "summarize-account",    model: modelId, // from GET /api/v1/skills/models    prompt: "Summarize {{company}} for an AE in 3 bullets.",  }),}).then((r) => r.json()); // 2. execute itconst result = await fetch(`${base}/skills/${skill.id}/execute`, {  method: "POST",  headers,  body: JSON.stringify({ inputs: { company: "Acme Corp" } }),}).then((r) => r.json());
03 / Knowledge base RAG

Ground generation in your own content.

Onboarded access

Semantic search over your knowledge base. Pull the top matches, then feed them into a skill as context for a grounded answer.

POST /api/v1/kb/search
curl -X POST "$GRAPH8_API_BASE/api/v1/kb/search" \  -H "Authorization: Bearer $GRAPH8_API_KEY" \  -H "X-Org-Id: $GRAPH8_ORG_ID" \  -H "Content-Type: application/json" \  -d '{    "query": "what is our position on data residency",    "top_k": 5  }'
04 / AI enrichment

Enrich a column with a model.

Onboarded access

Run model-backed enrichment over your contacts and companies, one column at a time, against your workspace data slice.

POST /api/v1/enrichment/run
curl -X POST "$GRAPH8_API_BASE/api/v1/enrichment/run" \  -H "Authorization: Bearer $GRAPH8_API_KEY" \  -H "X-Org-Id: $GRAPH8_ORG_ID" \  -H "Content-Type: application/json" \  -d '{    "contact_ids": ["ct_123", "ct_456"],    "column": "persona_fit",    "instruction": "Score ICP fit for our mid-market motion."  }'
05 / Runtime models

Reply intent and voice, through the runtime.

These run inside the agent runtime and the dialer rather than a single REST call. Reach them through the MCP surface and the voice agent configuration.

Reply-intent classification

Onboarded access

Inbound replies are classified by intent inside the agent runtime, so your sequences and routing react automatically. Drive it through the MCP tools and the agent runtime, not a standalone endpoint.

Agent runtime + MCP →

Voice agents

Onboarded access

Real-time voice agents wired to the dialer, with transcription and reply handling built in. Configure them through the dialer surface and drive calls programmatically.

Dialer + MCP →
06 / MCP tools

The same capabilities, over MCP.

Onboarded access

Prefer an agent? Every primitive above has an MCP tool, so your own agents can call models, search the KB, and enrich data with no REST plumbing.

g8_skill_create_llm

Create an LLM skill from a prompt and a model id.

g8_skill_execute

Run a skill with inputs and read the result.

g8_search_kb

Semantic search over your knowledge base for RAG.

g8_enrich_contacts

Run per-column AI enrichment over contacts.

07 / Octa hosted inference

Call the Octa family directly.

Preview

graph8-hosted Octa inference is in preview. The REST shape below is illustrative, not a GA contract. The Octa models MCP server is available for preview access.

Preview Illustrative REST
// Preview. Illustrative endpoint shape, not a GA contract.curl -X POST "$GRAPH8_API_BASE/v1/models/octa/completions" \  -H "Authorization: Bearer $GRAPH8_API_KEY" \  -H "X-Org-Id: $GRAPH8_ORG_ID" \  -H "Content-Type: application/json" \  -d '{    "model": "octa",    "head": "copy",    "input": "Draft a first-touch email for a VP of Sales."  }'
Preview Octa models MCP server
// Octa models MCP server (Preview){  "mcpServers": {    "octa": {      "url": "$GRAPH8_MCP_URL"    }  }}

Preview endpoints are not generally available and may change. For workspace-approved work, use the onboarded primitives above and select an Octa head through a skill.

Build with graph8