All docs

Stage Checklist Pipelines

REST reference for graph8 Stage Checklist v2 pipelines — multi-stage workflows with evidence requirements and channel scripts

A Stage Checklist pipeline is a multi-stage workflow with per-stage evidence requirements (e.g. “budget confirmed”, “decision-maker identified”) and channel scripts (call, email, LinkedIn) tied to each stage. Distinct from deal pipelines, which are the simple stage-list deals progress through.

30-second start

List your Stage Checklist pipelines:

cURL

curl 'https://be.graph8.com/api/v1/pipelines' \
  -H "Authorization: Bearer $G8_API_KEY"

TypeScript

import { g8 } from '@graph8/sdk';
g8.init({ apiKey: process.env.G8_API_KEY! });

const { data } = await g8.pipelines.list();
console.log(data); // → StagePipeline[] with stages + evidence + channel scripts

CLI

g8 list-stage-pipelines

MCP

Ask your agent: “List my stage-checklist pipelines” → tool: g8_list_pipelines.

Quick reference

EndpointMethodPurpose
/pipelinesGETList pipelines
/pipelinesPOSTCreate
/pipelines/{id}GETGet a pipeline with all stages
/pipelines/{id}PUTUpdate metadata (name, target)
/pipelines/{id}DELETEDelete (no deals must reference)
/pipelines/evidence-libraryGETCanonical 8-key evidence library
/pipelines/{id}/stagesPOSTAdd a stage
/pipelines/{id}/stages/{stage_id}PUTUpdate a stage
/pipelines/{id}/stages/{stage_id}DELETEDelete a stage
/pipelines/{id}/stages/reorderPUTReorder stages
/pipelines/suggestPOSTAI-suggested pipeline from org context
/pipelines/from-suggestionPOSTPromote a suggestion into a real pipeline

Pipeline shape

{
  id: "pip_xyz",
  name: "Enterprise Outbound",
  target: "Land 5 new logos in Q3",
  is_default: false,
  stages: [
    {
      id: "stg_discovery",
      name: "Discovery",
      position: 0,
      required_elements: ["budget_confirmed", "timeline_known"],
      recommended_elements: ["competitor_landscape"],
      channel_scripts: {
        email: "Hi {{first_name}}...",
        call: "Hello, calling about..."
      },
      color: "#00CAEB",
      stage_type: "qualification"
    },
    { id: "stg_demo", name: "Demo", position: 1, ... }
  ]
}

Evidence library

The canonical 8 evidence keys (returned by GET /pipelines/evidence-library) cover the typical qualification criteria:

KeyLabel
budget_confirmedBudget confirmed
timeline_knownDecision timeline known
decision_maker_identifiedDecision maker identified
pain_point_validatedPain point validated
competitor_landscapeCompetitor landscape understood
success_criteria_agreedSuccess criteria agreed
legal_review_startedLegal review started
commercial_terms_alignedCommercial terms aligned

Use these in required_elements / recommended_elements on each stage.

Create

# Default templated stages
POST /api/v1/pipelines
{ "name": "Enterprise Outbound", "target": "Land 5 new logos in Q3" }

# Or blank
POST /api/v1/pipelines
{ "name": "Custom flow", "blank": true }

Update

PUT /api/v1/pipelines/{pipeline_id}
{ "name": "Renamed", "target": "Updated target" }

Stages

POST /api/v1/pipelines/{pipeline_id}/stages
{
  "name": "Discovery",
  "position": 0,
  "required_elements": ["budget_confirmed"],
  "channel_scripts": { "email": "Hi {{first_name}}..." }
}

PUT /api/v1/pipelines/{pipeline_id}/stages/{stage_id}
{ "color": "#00CAEB", "recommended_elements": ["competitor_landscape"] }

DELETE /api/v1/pipelines/{pipeline_id}/stages/{stage_id}

PUT /api/v1/pipelines/{pipeline_id}/stages/reorder
{ "stage_ids": ["stg_qual", "stg_demo", "stg_negotiation", "stg_close"] }

AI suggestion

POST /api/v1/pipelines/suggest
# Returns: { data: { suggestion_id, name, target, stages: [...], rationale } }

POST /api/v1/pipelines/from-suggestion
{ "suggestion_id": "sug_abc123", "name": "PLG Path" }

The suggestion engine reads the org’s Studio context (brand brief, ICPs, personas, messaging house — see Studio Context) and proposes a pipeline tailored to the org’s GTM motion. Apply via from-suggestion, optionally overriding the name / target.

Credit costs

All endpoints are free. AI suggestion runs an LLM internally — that consumes credits implicitly (~50-100 per suggestion, depending on context size).

Errors

StatusCauseFix
401Missing or invalid Authorization: Bearer headerGet a key
402Out of credits (waterfall enrichment, AI generation, voice minutes)Top up in Settings → Billing, or switch to Platform
404Resource ID doesn’t existList first to verify the ID
422Validation error in request bodyInspect error.message + error.field in the response
429Rate limit (50 rps per org)Backoff per Retry-After header. See Rate Limits
5xxgraph8 errorRetry with exponential backoff (5s → 30s → 120s)

The full error envelope shape: { "error": { "code": "...", "message": "...", "field": "...", "request_id": "..." } }. Include the request_id in any support ticket. See Errors for the canonical reference.

See also

Build with graph8