Skip to main content
GET
/
v1
/
workflow
/
{workflow_id}
Get Workflow V2
curl --request GET \
  --url https://api.getbluejay.ai/v1/workflow/{workflow_id} \
  --header 'X-API-Key: <x-api-key>'
{
  "id": "<string>",
  "name": "<string>",
  "definition": {},
  "created_at": "2023-11-07T05:31:56Z",
  "organization_id": "<string>",
  "agent_ids": [],
  "description": "<string>",
  "dh_sync_summary": {}
}
Integration Prompt for AI Agents
# Bluejay — Testing & Monitoring Platform for Conversational AI Agents

You are a senior backend engineer integrating the Bluejay API. Think step-by-step: first understand the endpoint, then plan the integration, then implement with minimal changes.

## Get workflow — GET /v1/workflow/{workflow_id}

> **What this endpoint does:** Returns one workflow if it exists and belongs to your organization (otherwise 404). The `definition` field is a React Flow graph with the same typed node and `data` shapes as create/update (see **components** — graph definition, nodes, and branch-option schemas).

**Endpoint:** GET `https://api.getbluejay.ai/v1/workflow/{workflow_id}`
**Auth:** `X-API-Key` header

### Required Parameters
| Name | Type | Description |
|------|------|-------------|
| workflow_id | string (UUID) | Path parameter for the workflow to fetch. |
| X-API-Key | string | API key required to authenticate requests. |

### Example
**Simple GET:**
```python
import requests

def get_workflow(workflow_id: str, api_key: str) -> dict:
    url = f"https://api.getbluejay.ai/v1/workflow/{workflow_id}"
    headers = {"X-API-Key": api_key}
    response = requests.get(url, headers=headers)
    response.raise_for_status()
    return response.json()
```

### Constraints
- Minimal changes — only add/change files needed for this integration.
- Match existing codebase patterns (naming, file structure, error handling).
- Include error handling for 401: Unauthorized; 404: Not found or no access; 500: Server error.

### Integration Checklist
Before writing code, verify:
1. Which module/service owns this API domain in the codebase?
2. What HTTP client and error-handling patterns does the project use?
3. Are there existing types/interfaces to extend?

Then implement the integration, export it, and confirm it compiles/passes lint.
Use this to load the full graph (definition) for editing or execution setup. Interpret nodes/edges using the discriminated OpenAPI types so single vs options vs start and each data variant deserialize correctly.

Headers

X-API-Key
string
required

API key required to authenticate requests.

Path Parameters

workflow_id
string<uuid>
required

Response

Successful Response

Single workflows_v2 row.

id
string
required

Workflow ID

name
string
required

Name of the workflow

definition
Definition · object
required

Stored React Flow graph (start / single / options nodes). Nodes and edges use top-level string id fields; edge id values are unique within the graph.

created_at
string<date-time>
required

Creation timestamp

organization_id
string | null

Owning organization ID (set by middleware on create)

agent_ids
integer[]

Linked agent ids when the workflow is agent-scoped

description
string | null

Description

dh_sync_summary
Dh Sync Summary · object

Present on PUT responses when the definition was updated. Keys: updated, created, marked_stale, skipped, errors.