SpecFlux REST API for creating and managing projects, PRDs, epics, tasks, and acceptance criteria. Use when running /prd, /epic, /task, or /implement commands to create or update entities in SpecFlux via HTTP API. Use when creating PRDs, epics with tasks, adding acceptance criteria, updating task status, or marking criteria as complete.
Resources
1Install
npx skillscat add cliangdev/specflux/specflux-api Install via the SkillsCat registry.
SpecFlux API
Create and manage SpecFlux entities via REST API.
Prerequisites Check (REQUIRED)
Before making any API calls, check that required environment variables are set.
Run this check first:
echo "SPECFLUX_API_URL: ${SPECFLUX_API_URL:-NOT SET}"
echo "SPECFLUX_API_KEY: ${SPECFLUX_API_KEY:+SET (hidden)}"If SPECFLUX_API_URL is NOT SET:
This is auto-injected when running inside SpecFlux app. If missing, either:
- Restart the terminal from SpecFlux, or
- Add to
~/.zshrc:export SPECFLUX_API_URL="http://localhost:8090" # Local development
If SPECFLUX_API_KEY is NOT SET:
This requires manual setup. Add to ~/.zshrc:
export SPECFLUX_API_KEY="sfx_your_api_key_here"Generate an API key from SpecFlux Settings > API Keys, then run source ~/.zshrc.
Do not proceed with API calls until both variables are set.
Making API Calls
Use $SPECFLUX_API_URL in all curl commands:
curl -H "Authorization: Bearer $SPECFLUX_API_KEY" "$SPECFLUX_API_URL/api/projects"Core Workflows
Create PRD with Documents
# 1. Create PRD
POST /api/projects/{projectRef}/prds
{"title": "Authentication System", "description": "User auth with OAuth"}
# Returns: {"id": "prd_xxx", "displayKey": "PROJ-P1", "folderPath": ".specflux/prds/authentication-system", ...}
# 2. Add document to PRD
POST /api/projects/{projectRef}/prds/{prdRef}/documents
{"fileName": "prd.md", "filePath": ".specflux/prds/authentication-system/prd.md", "documentType": "PRD", "isPrimary": true}
# 3. Add supporting documents
POST /api/projects/{projectRef}/prds/{prdRef}/documents
{"fileName": "wireframe.png", "filePath": ".specflux/prds/authentication-system/wireframe.png", "documentType": "WIREFRAME"}
# 4. Update PRD status
PUT /api/projects/{projectRef}/prds/{prdRef}
{"status": "APPROVED"}Create Epic with Tasks
IMPORTANT: When creating epics from a PRD, always include prdRef to link the epic back to its source PRD. This maintains traceability from requirements to implementation.
# 1. Create epic (linked to PRD) - prdRef and acceptanceCriteria are REQUIRED
POST /api/projects/{projectRef}/epics
{
"title": "User Authentication",
"description": "...",
"prdRef": "PROJ-P1", // REQUIRED - links epic to source PRD
"acceptanceCriteria": [ // REQUIRED - array of criteria objects
{"criteria": "Users can sign up with email/password"},
{"criteria": "Users can log in with existing credentials"}
]
}
# Returns: {"id": "epic_xxx", "displayKey": "PROJ-E1", "prdId": "prd_xxx", ...}
# 2. Add more acceptance criteria (optional)
POST /api/projects/{projectRef}/epics/{epicRef}/acceptance-criteria
{"criteria": "Password reset via email works"}
# 3. Create tasks
POST /api/projects/{projectRef}/tasks
{"epicRef": "epic_xxx", "title": "Database schema", "priority": "HIGH"}
# Returns: {"id": "task_xxx", "displayKey": "PROJ-42", ...}
# 4. Add task criteria
POST /api/projects/{projectRef}/tasks/{taskRef}/acceptance-criteria
{"criteria": "User table with id, email, password_hash, created_at"}
# 5. Add dependencies
POST /api/projects/{projectRef}/tasks/{taskRef}/dependencies
{"dependsOnTaskRef": "PROJ-41"}CRITICAL FORMAT REQUIREMENTS:
acceptanceCriteriaMUST be an array of objects:[{"criteria": "..."}, {"criteria": "..."}]- WRONG:
["string1", "string2"]- This will cause a 400 error - CORRECT:
[{"criteria": "string1"}, {"criteria": "string2"}] prdRefis required to link the epic to its source PRD (use display key likePROJ-P1or internal ID)
Update Progress
# Mark criterion complete
PUT /api/projects/{projectRef}/tasks/{taskRef}/acceptance-criteria/{id}
{"isMet": true}
# Update task status
PATCH /api/projects/{projectRef}/tasks/{taskRef}
{"status": "COMPLETED"}
# Update epic status
PUT /api/projects/{projectRef}/epics/{epicRef}
{"status": "IN_PROGRESS"}Read Entities
# Get task with criteria
GET /api/projects/{projectRef}/tasks/{taskRef}
GET /api/projects/{projectRef}/tasks/{taskRef}/acceptance-criteria
# Get epic with tasks
GET /api/projects/{projectRef}/epics/{epicRef}
GET /api/projects/{projectRef}/tasks?epicRef={epicRef}Reference IDs
- projectRef:
proj_xxxor project key likeSPEC - prdRef:
prd_xxxor display key likeSPEC-P1 - epicRef:
epic_xxxor display key likeSPEC-E1 - taskRef:
task_xxxor display key likeSPEC-42
Enums
PrdStatus: DRAFT, IN_REVIEW, APPROVED, ARCHIVED
PrdDocumentType: PRD, WIREFRAME, MOCKUP, DESIGN, OTHER
EpicStatus: PLANNING, IN_PROGRESS, BLOCKED, COMPLETED, CANCELLED
TaskStatus: BACKLOG, READY, IN_PROGRESS, IN_REVIEW, BLOCKED, COMPLETED, CANCELLED
TaskPriority: LOW, MEDIUM, HIGH, CRITICAL
Detailed Reference
See references/api.md for complete endpoint documentation with request/response schemas.